Infor SyteLine

CRUD Operations via the SyteLine REST API

The SyteLine REST API exposes standard IDO operations as HTTP endpoints, enabling external systems to create, read, update, and delete ERP records without direct database access. Every IDO registered in SyteLine becomes accessible through RESTful calls, translating HTTP GET requests into LoadCollection operations and POST/PUT/DELETE requests into UpdateCollection commands. Understanding the REST-to-IDO mapping is essential for building reliable integrations.

Reading Data with GET Requests

Retrieving data from SyteLine through the REST API maps to the LoadCollection IDO operation. The GET endpoint accepts query parameters for the IDO name, property list, filter, order by, and record cap. The response returns a JSON array of records matching your criteria. For the ION API Gateway, the endpoint follows the pattern /api/{IDOName} with OData-style query parameters. For direct IDO REST access on-premise, the endpoint is /IDORequestService/ido/load/{IDOName} with SyteLine-specific query syntax.

  • ION API GET: GET /api/SLItems?$filter=Item eq 'WIDGET-001'&$select=Item,Description,QtyOnHand
  • Direct IDO REST: GET /IDORequestService/ido/load/SLItems?properties=Item,Description,QtyOnHand&filter=Item='WIDGET-001'
  • Use $select or properties parameter to limit returned columns and reduce payload size
  • Apply $top or RecordCap to limit result count: $top=100 returns a maximum of 100 records
  • Sort results with $orderby=Item asc or orderby=Item to leverage SQL Server indexes

Creating and Updating Records with POST and PUT

Creating new records maps to the InsertCommand within UpdateCollection. Send a POST request with a JSON body containing the property-value pairs for the new record. The SyteLine REST layer validates the data against IDO metadata, applies extension class logic, and inserts the row into the backing database table. Updating existing records uses a PUT or PATCH request with the record's primary key (typically RowPointer) and the properties to modify. The IDO Runtime checks optimistic concurrency via RowPointer before applying the update.

  • POST new item: POST /api/SLItems with body {"Item": "NEW-001", "Description": "New Widget", "UM": "EA"}
  • PUT update: PUT /api/SLItems('RowPointerValue') with body {"Description": "Updated Widget Name"}
  • Include RowPointer in update requests for concurrency control to prevent overwriting concurrent changes
  • Handle 409 Conflict responses when another user modified the record between your read and write
  • Batch multiple creates in a single POST when the API supports collection inserts for performance

Deleting Records and Transaction Safety

Delete operations map to the DeleteCommand in UpdateCollection. Send a DELETE request with the record's primary key identifier. The IDO Runtime applies security checks and extension class pre-delete validation before removing the row. For referential integrity, SyteLine blocks deletion of parent records that have dependent child records, returning a 400 or 409 error with details about the constraint violation. Always implement confirmation logic in your integration and handle deletion failures gracefully by logging the error and notifying the appropriate team.

  • DELETE request: DELETE /api/SLItems('RowPointerValue') removes the record if no dependencies exist
  • Handle 400 errors for referential integrity violations: the response body contains the constraining table name
  • Implement soft-delete patterns for audit compliance: update a Status field to 'Inactive' rather than hard deleting
  • Log all delete operations with the record key, timestamp, and initiating user or integration identity
  • Test delete operations in a non-production environment first to validate cascading behavior

Netray AI agents generate production-ready REST API integration code for SyteLine CRUD operations, complete with error handling, retry logic, and transaction management. Start building integrations faster.