> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pinkfish.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# infor-syteline

> SyteLine ERP (Mongoose REST APIs)

**Server path:** `/infor-syteline` | **Type:** Application | **PCID required:** Yes

## Tools

| Tool                                                                        | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`infor-syteline_add_item`](#infor-syteline_add_item)                       | Insert one record into an IDO collection (a simpler alternative to the bulk update tool for single-record inserts). Call infor-syteline\_get\_ido\_info(ido) first to learn the exact property names and which are required, then provide the new record's properties as Name/Value pairs using those names VERBATIM — a Property whose Name is not a real property of the IDO fails the whole call. Requires Edit/Insert privileges on the IDO in the target configuration. HTTP status is 200 even for logical failures — check MessageCode/Message.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| [`infor-syteline_delete_item`](#infor-syteline_delete_item)                 | Deletes one record from an IDO collection by its ItemId (returned by infor-syteline\_load\_collection). Requires Delete privileges on the IDO in the target configuration. HTTP status is 200 even for logical failures — check MessageCode/Message.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| [`infor-syteline_get_ido_info`](#infor-syteline_get_ido_info)               | Discover an IDO's schema BEFORE querying or modifying it: returns each property's name, data type, length, required/read-only flags, the IDO's key properties (Keys), and subcollections. ALWAYS call this first for any IDO you have not already inspected, and copy property and key names VERBATIM into load/filter/update calls — those operations fail if you pass a name that is not an exact property of the IDO. Important nuances: (a) Keys are the primary-key structure (best as filter criteria) and are not guaranteed to be fetchable column names; (b) not every listed property is queryable in load\_collection — derived/computed properties (names starting with Der) and some internal fields fail in a properties list, so prefer plain stored fields; (c) property names vary by SyteLine customization, so never assume names — read them here. Read the actual Keys from this response; do not reuse remembered key names (they vary by IDO, tenant, and version). Works without IDO Read data privileges. Note: there is no API to LIST the available IDOs — the IDO name itself must already be known.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| [`infor-syteline_invoke_ido_method`](#infor-syteline_invoke_ido_method)     | Invokes a named method on an IDO (business logic such as posting, validation, or document generation). Use the exact IDO and method names (method names are case-sensitive; call infor-syteline\_get\_ido\_info if unsure of the IDO). The request body is a JSON array of parameter values in positional order (use an empty string for output-only parameters); output parameters come back in the response's Parameters array. Method execution may modify ERP data — treat as a write operation. HTTP status is 200 even for logical failures — always check the Success field.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| [`infor-syteline_list_configurations`](#infor-syteline_list_configurations) | Returns the list of SyteLine configurations (sites/databases) available on the server. This is the only operation that does not require the X-Infor-MongooseConfig header, and it needs no IDO privileges — useful as a connectivity check and to discover valid values for the connection's SyteLine Configuration field.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| [`infor-syteline_load_collection`](#infor-syteline_load_collection)         | Query records from a SyteLine IDO collection (a SQL-backed, table-like view). ALWAYS call infor-syteline\_get\_ido\_info(ido) first to discover exact property names and Keys, then query here. CRITICAL behaviors: (1) SILENT FAILURE on bad property names: if ANY name in properties, filter, or orderBy is not a queryable property of the IDO, the ENTIRE query fails — typically Success=false with Message=null (no indication of WHICH name is wrong), or zero Items; never a partial result. Copy names verbatim from get\_ido\_info, never guess, and if a multi-property query fails, re-test the properties one at a time (a single bad property returns a clear 'Property X not found on \<IDO>' message) to find the culprit. (2) Not every property from get\_ido\_info is queryable here: derived/computed properties (names starting with Der) and some internal fields cannot be requested in the properties list and will fail the query — prefer plain stored fields. (3) Keys vs. fetchable fields: the Keys from get\_ido\_info are the primary-key structure (best used as filter criteria), not a guarantee of a fetchable column; property names also differ from intuition (e.g. CoLine, not CoLineNum). (4) Do NOT use properties='*' on large IDOs — many have hundreds of properties (SLItems \~615, SLCos \~442) and '*' over thousands of rows times out (HTTP 504). Request only the specific properties you need. (5) Always set a small recordCap (e.g. 50-200) when exploring or building a report; the Mongoose default can return very large result sets and time out. (6) Pagination: results come back in the Items array (NOT 'Records'). If MoreRowsExist=true, call again with loadType='NEXT' and bookmark set to the Bookmark from the previous response; repeat until MoreRowsExist=false. (7) HTTP status is 200 even for logical failures — always check Success (a privilege failure names the exact IDO needing a Read grant). There is no API to list IDOs, and IDO/field names vary by SyteLine customization (a site may expose names like STI\_SLCos) — always rely on get\_ido\_info rather than assumed names. Standard IDOs: SLItems (items/products), SLCustomers (customers), SLCos (customer orders), SLCoitems (order lines), SLPos (purchase orders), SLPoitems (PO lines), SLItemlocs/SLItemwhses (inventory), UserNames (users). |
| [`infor-syteline_update_collection`](#infor-syteline_update_collection)     | Insert, update, or delete one or more records in an IDO collection in a single batch. Each change specifies an Action (1=insert, 2=update, 4=delete), the ItemId for update/delete (returned by load\_collection), and the modified Properties. Call infor-syteline\_get\_ido\_info(ido) first for the exact property names and Keys, and use property names VERBATIM — a Property whose Name is not a real property of the IDO fails the whole call. Requires Edit privileges on the IDO in the target configuration. HTTP status is 200 even for logical failures — always check Success.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| [`infor-syteline_update_item`](#infor-syteline_update_item)                 | Update one record in an IDO collection (a simpler alternative to the bulk update tool for single-record edits). Requires the record's ItemId (returned by load\_collection) and the changed properties as Name/Value pairs with Modified set true, using exact property names from infor-syteline\_get\_ido\_info — a Property whose Name is not a real property of the IDO fails the whole call. Requires Edit privileges on the IDO in the target configuration. HTTP status is 200 even for logical failures — check MessageCode/Message.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |

***

## infor-syteline\_add\_item

Insert one record into an IDO collection (a simpler alternative to the bulk update tool for single-record inserts). Call infor-syteline\_get\_ido\_info(ido) first to learn the exact property names and which are required, then provide the new record's properties as Name/Value pairs using those names VERBATIM — a Property whose Name is not a real property of the IDO fails the whole call. Requires Edit/Insert privileges on the IDO in the target configuration. HTTP status is 200 even for logical failures — check MessageCode/Message.

**Parameters:**

| Parameter       | Type      | Required | Default | Description                           |
| --------------- | --------- | -------- | ------- | ------------------------------------- |
| `ido`           | string    | Yes      | —       | IDO name (e.g. SLItems, SLCustomers)  |
| `Action`        | integer   | Yes      | —       | Must be 1 (insert)                    |
| `Properties`    | object\[] | Yes      | —       | New record's property values          |
| `UpdateLocking` | string    | No       | —       | Optimistic-locking mode (default Row) |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "ido": {
        "type": "string",
        "description": "IDO name (e.g. SLItems, SLCustomers)"
      },
      "Action": {
        "type": "integer",
        "description": "Must be 1 (insert)",
        "enum": [
          1
        ]
      },
      "Properties": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "Name": {
              "type": "string",
              "description": "Property (field) name"
            },
            "Value": {
              "type": "string",
              "description": "Property value (string-encoded)"
            },
            "OriginalValue": {
              "type": "string",
              "description": "Prior value, for concurrency checking on updates"
            },
            "IsNull": {
              "type": "boolean",
              "description": "Set true to write NULL"
            },
            "Modified": {
              "type": "boolean",
              "description": "Set true on properties you are changing (updates)"
            }
          },
          "required": [
            "Name"
          ]
        },
        "description": "New record's property values"
      },
      "UpdateLocking": {
        "type": "string",
        "description": "Optimistic-locking mode (default Row)",
        "enum": [
          "Row",
          "Property"
        ]
      }
    },
    "required": [
      "PCID",
      "ido",
      "Action",
      "Properties"
    ]
  }
  ```
</Expandable>

***

## infor-syteline\_delete\_item

Deletes one record from an IDO collection by its ItemId (returned by infor-syteline\_load\_collection). Requires Delete privileges on the IDO in the target configuration. HTTP status is 200 even for logical failures — check MessageCode/Message.

**Parameters:**

| Parameter | Type   | Required | Default | Description                                   |
| --------- | ------ | -------- | ------- | --------------------------------------------- |
| `ido`     | string | Yes      | —       | IDO name (e.g. SLItems, SLCustomers)          |
| `itemId`  | string | Yes      | —       | Record identity from the load tool (\_ItemId) |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "ido": {
        "type": "string",
        "description": "IDO name (e.g. SLItems, SLCustomers)"
      },
      "itemId": {
        "type": "string",
        "description": "Record identity from the load tool (_ItemId)"
      }
    },
    "required": [
      "PCID",
      "ido",
      "itemId"
    ]
  }
  ```
</Expandable>

***

## infor-syteline\_get\_ido\_info

Discover an IDO's schema BEFORE querying or modifying it: returns each property's name, data type, length, required/read-only flags, the IDO's key properties (Keys), and subcollections. ALWAYS call this first for any IDO you have not already inspected, and copy property and key names VERBATIM into load/filter/update calls — those operations fail if you pass a name that is not an exact property of the IDO. Important nuances: (a) Keys are the primary-key structure (best as filter criteria) and are not guaranteed to be fetchable column names; (b) not every listed property is queryable in load\_collection — derived/computed properties (names starting with Der) and some internal fields fail in a properties list, so prefer plain stored fields; (c) property names vary by SyteLine customization, so never assume names — read them here. Read the actual Keys from this response; do not reuse remembered key names (they vary by IDO, tenant, and version). Works without IDO Read data privileges. Note: there is no API to LIST the available IDOs — the IDO name itself must already be known.

**Parameters:**

| Parameter | Type   | Required | Default | Description                                     |
| --------- | ------ | -------- | ------- | ----------------------------------------------- |
| `ido`     | string | Yes      | —       | IDO name (e.g. SLItems, SLCustomers, UserNames) |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "ido": {
        "type": "string",
        "description": "IDO name (e.g. SLItems, SLCustomers, UserNames)"
      }
    },
    "required": [
      "PCID",
      "ido"
    ]
  }
  ```
</Expandable>

***

## infor-syteline\_invoke\_ido\_method

Invokes a named method on an IDO (business logic such as posting, validation, or document generation). Use the exact IDO and method names (method names are case-sensitive; call infor-syteline\_get\_ido\_info if unsure of the IDO). The request body is a JSON array of parameter values in positional order (use an empty string for output-only parameters); output parameters come back in the response's Parameters array. Method execution may modify ERP data — treat as a write operation. HTTP status is 200 even for logical failures — always check the Success field.

**Parameters:**

| Parameter | Type      | Required | Default | Description                                                                               |
| --------- | --------- | -------- | ------- | ----------------------------------------------------------------------------------------- |
| `ido`     | string    | Yes      | —       | IDO name the method belongs to                                                            |
| `method`  | string    | Yes      | —       | IDO method name to invoke                                                                 |
| `body`    | string\[] | Yes      | —       | Method parameter values in positional order (use empty string for output-only parameters) |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "ido": {
        "type": "string",
        "description": "IDO name the method belongs to"
      },
      "method": {
        "type": "string",
        "description": "IDO method name to invoke"
      },
      "body": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "Method parameter values in positional order (use empty string for output-only parameters)"
      }
    },
    "required": [
      "PCID",
      "ido",
      "method",
      "body"
    ]
  }
  ```
</Expandable>

***

## infor-syteline\_list\_configurations

Returns the list of SyteLine configurations (sites/databases) available on the server. This is the only operation that does not require the X-Infor-MongooseConfig header, and it needs no IDO privileges — useful as a connectivity check and to discover valid values for the connection's SyteLine Configuration field.

**Parameters:**

| Parameter     | Type   | Required | Default | Description                                                                                  |
| ------------- | ------ | -------- | ------- | -------------------------------------------------------------------------------------------- |
| `configGroup` | string | No       | —       | Configuration group name. Use to list only the members of the specified configuration group. |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "configGroup": {
        "type": "string",
        "description": "Configuration group name. Use to list only the members of the specified configuration group."
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## infor-syteline\_load\_collection

Query records from a SyteLine IDO collection (a SQL-backed, table-like view). ALWAYS call infor-syteline\_get\_ido\_info(ido) first to discover exact property names and Keys, then query here. CRITICAL behaviors: (1) SILENT FAILURE on bad property names: if ANY name in properties, filter, or orderBy is not a queryable property of the IDO, the ENTIRE query fails — typically Success=false with Message=null (no indication of WHICH name is wrong), or zero Items; never a partial result. Copy names verbatim from get\_ido\_info, never guess, and if a multi-property query fails, re-test the properties one at a time (a single bad property returns a clear 'Property X not found on \<IDO>' message) to find the culprit. (2) Not every property from get\_ido\_info is queryable here: derived/computed properties (names starting with Der) and some internal fields cannot be requested in the properties list and will fail the query — prefer plain stored fields. (3) Keys vs. fetchable fields: the Keys from get\_ido\_info are the primary-key structure (best used as filter criteria), not a guarantee of a fetchable column; property names also differ from intuition (e.g. CoLine, not CoLineNum). (4) Do NOT use properties='*' on large IDOs — many have hundreds of properties (SLItems \~615, SLCos \~442) and '*' over thousands of rows times out (HTTP 504). Request only the specific properties you need. (5) Always set a small recordCap (e.g. 50-200) when exploring or building a report; the Mongoose default can return very large result sets and time out. (6) Pagination: results come back in the Items array (NOT 'Records'). If MoreRowsExist=true, call again with loadType='NEXT' and bookmark set to the Bookmark from the previous response; repeat until MoreRowsExist=false. (7) HTTP status is 200 even for logical failures — always check Success (a privilege failure names the exact IDO needing a Read grant). There is no API to list IDOs, and IDO/field names vary by SyteLine customization (a site may expose names like STI\_SLCos) — always rely on get\_ido\_info rather than assumed names. Standard IDOs: SLItems (items/products), SLCustomers (customers), SLCos (customer orders), SLCoitems (order lines), SLPos (purchase orders), SLPoitems (PO lines), SLItemlocs/SLItemwhses (inventory), UserNames (users).

**Parameters:**

| Parameter    | Type    | Required | Default | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ------------ | ------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ido`        | string  | Yes      | —       | IDO name (e.g. SLItems, SLCustomers, UserNames)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `properties` | string  | Yes      | —       | Comma-delimited list of EXACT property names to return (from get\_ido\_info). A name that is not a queryable property fails the WHOLE query — usually Success=false with Message=null (no hint which name is wrong), so never guess; if it fails, re-test names one at a time. Derived/computed properties (names starting with Der) and some internal fields are not queryable here. Avoid '\*' on large IDOs (hundreds of properties cause an HTTP 504 timeout); request only what you need. Example: 'Item,Description,UnitCost' |
| `filter`     | string  | No       | —       | SQL WHERE clause WITHOUT the WHERE keyword. Reference only real property names (from get\_ido\_info); single-quote string literals. An unknown field name fails the whole query, often with Message=null. Example: Item LIKE 'ABC%' or CustNum = '1001'                                                                                                                                                                                                                                                                             |
| `orderBy`    | string  | No       | —       | SQL ORDER BY value. Example: 'Item DESC'                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `recordCap`  | integer | No       | —       | Row cap. ALWAYS set a small value (e.g. 50-200) when exploring or building a report — the Mongoose default can return very large result sets and time out (HTTP 504). -1 = Mongoose default; 0 = unlimited.                                                                                                                                                                                                                                                                                                                         |
| `distinct`   | boolean | No       | —       | Apply the SQL DISTINCT keyword                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `clm`        | string  | No       | —       | Custom Load Method name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `clmParam`   | string  | No       | —       | Comma-separated Custom Load Method parameters                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `loadType`   | string  | No       | —       | Load type for paged reads                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `bookmark`   | string  | No       | —       | Pagination cursor (Bookmark) returned by a previous load; combine with loadType=NEXT                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `pqc`        | string  | No       | —       | Post Query Command name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `readOnly`   | boolean | No       | —       | If true, no ItemId is returned with the query                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "ido": {
        "type": "string",
        "description": "IDO name (e.g. SLItems, SLCustomers, UserNames)"
      },
      "properties": {
        "type": "string",
        "description": "Comma-delimited list of EXACT property names to return (from get_ido_info). A name that is not a queryable property fails the WHOLE query — usually Success=false with Message=null (no hint which name is wrong), so never guess; if it fails, re-test names one at a time. Derived/computed properties (names starting with Der) and some internal fields are not queryable here. Avoid '*' on large IDOs (hundreds of properties cause an HTTP 504 timeout); request only what you need. Example: 'Item,Description,UnitCost'"
      },
      "filter": {
        "type": "string",
        "description": "SQL WHERE clause WITHOUT the WHERE keyword. Reference only real property names (from get_ido_info); single-quote string literals. An unknown field name fails the whole query, often with Message=null. Example: Item LIKE 'ABC%' or CustNum = '1001'"
      },
      "orderBy": {
        "type": "string",
        "description": "SQL ORDER BY value. Example: 'Item DESC'"
      },
      "recordCap": {
        "type": "integer",
        "description": "Row cap. ALWAYS set a small value (e.g. 50-200) when exploring or building a report — the Mongoose default can return very large result sets and time out (HTTP 504). -1 = Mongoose default; 0 = unlimited."
      },
      "distinct": {
        "type": "boolean",
        "description": "Apply the SQL DISTINCT keyword"
      },
      "clm": {
        "type": "string",
        "description": "Custom Load Method name"
      },
      "clmParam": {
        "type": "string",
        "description": "Comma-separated Custom Load Method parameters"
      },
      "loadType": {
        "type": "string",
        "description": "Load type for paged reads",
        "enum": [
          "FIRST",
          "NEXT",
          "PREVIOUS",
          "LAST"
        ]
      },
      "bookmark": {
        "type": "string",
        "description": "Pagination cursor (Bookmark) returned by a previous load; combine with loadType=NEXT"
      },
      "pqc": {
        "type": "string",
        "description": "Post Query Command name"
      },
      "readOnly": {
        "type": "boolean",
        "description": "If true, no ItemId is returned with the query"
      }
    },
    "required": [
      "PCID",
      "ido",
      "properties"
    ]
  }
  ```
</Expandable>

***

## infor-syteline\_update\_collection

Insert, update, or delete one or more records in an IDO collection in a single batch. Each change specifies an Action (1=insert, 2=update, 4=delete), the ItemId for update/delete (returned by load\_collection), and the modified Properties. Call infor-syteline\_get\_ido\_info(ido) first for the exact property names and Keys, and use property names VERBATIM — a Property whose Name is not a real property of the IDO fails the whole call. Requires Edit privileges on the IDO in the target configuration. HTTP status is 200 even for logical failures — always check Success.

**Parameters:**

| Parameter          | Type      | Required | Default | Description                                                           |
| ------------------ | --------- | -------- | ------- | --------------------------------------------------------------------- |
| `ido`              | string    | Yes      | —       | IDO name                                                              |
| `refresh`          | boolean   | No       | —       | Refresh after update flag — returns the saved records in RefreshItems |
| `Changes`          | object\[] | No       | —       | Record changes to apply                                               |
| `CustomDelete`     | string    | No       | —       | Custom delete method name (optional)                                  |
| `CustomInsert`     | string    | No       | —       | Custom insert method name (optional)                                  |
| `CustomUpdate`     | string    | No       | —       | Custom update method name (optional)                                  |
| `IDOName`          | string    | No       | —       | IDO name (same as the path parameter)                                 |
| `RefreshAfterSave` | boolean   | No       | —       | Return saved records after the update                                 |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "ido": {
        "type": "string",
        "description": "IDO name"
      },
      "refresh": {
        "type": "boolean",
        "description": "Refresh after update flag — returns the saved records in RefreshItems"
      },
      "Changes": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "Action": {
              "type": "integer",
              "description": "1=insert, 2=update, 4=delete"
            },
            "ItemId": {
              "type": "string",
              "description": "Record identity from a prior load (required for update/delete)"
            },
            "ItemNo": {
              "type": "integer",
              "description": "Client-assigned sequence number for correlating results"
            },
            "UpdateLocking": {
              "type": "integer",
              "description": "Optimistic-locking mode (0 = default)"
            },
            "Properties": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "Name": {
                    "type": "string"
                  },
                  "Value": {
                    "type": "string"
                  },
                  "OriginalValue": {
                    "type": "string",
                    "description": "Prior value, for concurrency checking on updates"
                  },
                  "IsNull": {
                    "type": "boolean"
                  },
                  "Modified": {
                    "type": "boolean"
                  }
                }
              },
              "description": "Property values to set"
            }
          }
        },
        "description": "Record changes to apply"
      },
      "CustomDelete": {
        "type": "string",
        "description": "Custom delete method name (optional)"
      },
      "CustomInsert": {
        "type": "string",
        "description": "Custom insert method name (optional)"
      },
      "CustomUpdate": {
        "type": "string",
        "description": "Custom update method name (optional)"
      },
      "IDOName": {
        "type": "string",
        "description": "IDO name (same as the path parameter)"
      },
      "RefreshAfterSave": {
        "type": "boolean",
        "description": "Return saved records after the update"
      }
    },
    "required": [
      "PCID",
      "ido"
    ]
  }
  ```
</Expandable>

***

## infor-syteline\_update\_item

Update one record in an IDO collection (a simpler alternative to the bulk update tool for single-record edits). Requires the record's ItemId (returned by load\_collection) and the changed properties as Name/Value pairs with Modified set true, using exact property names from infor-syteline\_get\_ido\_info — a Property whose Name is not a real property of the IDO fails the whole call. Requires Edit privileges on the IDO in the target configuration. HTTP status is 200 even for logical failures — check MessageCode/Message.

**Parameters:**

| Parameter       | Type      | Required | Default | Description                                   |
| --------------- | --------- | -------- | ------- | --------------------------------------------- |
| `ido`           | string    | Yes      | —       | IDO name (e.g. SLItems, SLCustomers)          |
| `Action`        | integer   | Yes      | —       | Must be 2 (update)                            |
| `ItemId`        | string    | Yes      | —       | Record identity from the load tool (\_ItemId) |
| `Properties`    | object\[] | Yes      | —       | Changed property values (set Modified: true)  |
| `UpdateLocking` | string    | No       | —       | Optimistic-locking mode (default Row)         |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "ido": {
        "type": "string",
        "description": "IDO name (e.g. SLItems, SLCustomers)"
      },
      "Action": {
        "type": "integer",
        "description": "Must be 2 (update)",
        "enum": [
          2
        ]
      },
      "ItemId": {
        "type": "string",
        "description": "Record identity from the load tool (_ItemId)"
      },
      "Properties": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "Name": {
              "type": "string",
              "description": "Property (field) name"
            },
            "Value": {
              "type": "string",
              "description": "Property value (string-encoded)"
            },
            "OriginalValue": {
              "type": "string",
              "description": "Prior value, for concurrency checking on updates"
            },
            "IsNull": {
              "type": "boolean",
              "description": "Set true to write NULL"
            },
            "Modified": {
              "type": "boolean",
              "description": "Set true on properties you are changing (updates)"
            }
          },
          "required": [
            "Name"
          ]
        },
        "description": "Changed property values (set Modified: true)"
      },
      "UpdateLocking": {
        "type": "string",
        "description": "Optimistic-locking mode (default Row)",
        "enum": [
          "Row",
          "Property"
        ]
      }
    },
    "required": [
      "PCID",
      "ido",
      "Action",
      "ItemId",
      "Properties"
    ]
  }
  ```
</Expandable>
