Integration Development: Migration to .Net Core

In MYOB Acumatica 2024.1, the changes described in this topic have been made to support .Net Core in OData Version 4.0 and the contract-based web services APIs.

OData Version 4.0 Changes

A developer can find the following changes in OData Version 4.0 responses:

  • A request for $metadata returns an additional attribute, Scale="Variable", for Edm.Decimal types, as shown in the following example.
    <Property Name="ControlAmount" Type="Edm.Decimal" Nullable="false" Scale="Variable"/>
  • In a request for $metadata, if the $format=json parameter has been specified, an error is returned. In previous versions, the parameter was ignored, and XML was returned.
  • An empty response body is returned if the response code is 404 Not Found.
  • A request with an unsupported HTTP method (such as POST, PUT, or DELETE) now returns 405 Method Not Allowed instead of 404 Not Found.
  • A request with an invalid OData-Version header, such as 6.0, now returns 400 Bad Request instead of 404 Not Found.
  • If full metadata is requested, such as in the following request, the value of @odata.id is different from what was returned in the previous versions.
    https://localhost/instanceName/ODatav4/tenantName/ARSetup
    ?$format=application/json;odata.metadata=full 

    The new value includes the full path to the service, such as "@odata.id":"https://localhost/instanceName/odatav4/tenantName/ARSetup"

  • In previous versions, if the client did not specify the Accept-Charset header in a request for $value (such as the one shown below), the UTF-8 BOM (byte order mark) was added to a response. Now the UTF-8 BOM is not added.
    https://localhost/instanceName/ODatav4/tenantName/BAccount('C000000001')/AcctName/$value

OpenAPI 2.0 Changes

The following changes have been introduced in the OpenAPI 2.0 files of the REST API endpoints:

  • Every operation now includes "produces": ["application/json", "text/json"] because every operation can return HttpError as JSON.
  • The default values (such as "consumes": [], "required": false, and "properties": {}) are no longer emitted.
  • When schema is a reference (such as "schema": {"$ref": ..."}), it no longer contains "type": "object".
  • The order of parameters has been changed: "in": "body" is now placed after "in": "query".

Full Removal of the Contract-Based SOAP API Support

Contract Versions 2 and 3, which supported the SOAP API, have been removed in MYOB Acumatica 2024.1.1. In MYOB Acumatica 2024.1, system endpoints with Contract Versions 2 and 3, which are Default/17.200.001 and Default/18.200.001, respectively, have also been removed.