Skip to content

Latest commit

 

History

History
100 lines (75 loc) · 3.17 KB

devenv-creating-and-interacting-with-odatav4-unbound-action.md

File metadata and controls

100 lines (75 loc) · 3.17 KB
title description author ms.date ms.reviewer ms.topic ms.author
Creating and interacting with an OData V4 unbound action
Describing how to create and interact with an OData V4 Unbound Action in AL.
ap3rus
07/23/2024
solsen
conceptual
vlnagorn

Creating and interacting with an OData V4 unbound action

Unbound actions represent reusable operations that you can perform using an OData request. Use unbound actions when there is no particular entity that the action needs to be bound to.

Using OData V4 unbound actions to migrate from SOAP to OData

One common use case for using SOAP endpoints with Business Central is to expose an AL method to be callable as a web service. The same thing can be achieved by using OData V4 unbound actions as described in this article.

Declaring, registering, and publishing the OData unbound action

To declare an OData unbound action define a codeunit with a procedure with the desired business logic.

The following example illustrates a simple codeunit with three procedures that can be exposed as a web service and called as OData unbound actions.

codeunit 50100 "MiscOperations"
{
    procedure Ping(input: Integer): Integer
    begin
        exit(-input);
    end;
 
    procedure Delay(delayMilliseconds: Integer)
    begin
        Sleep(delayMilliseconds);
    end;
 
    procedure GetLengthOfStringWithConfirmation(inputJson: Text): Integer
    var
        c: JsonToken;
        input: JsonObject;
    begin
        input.ReadFrom(inputJson);
        if input.Get('confirm', c) and c.AsValue().AsBoolean() = true and input.Get('str', c) then
            exit(StrLen(c.AsValue().AsText()))
        else
            exit(-1);
    end;
}

Registering and publishing the codeunit as a web service

Registering and publishing the codeunit is identical to how you work with other web services. For more information, see Publish a Web Service.

Verifying web service availability

HTTP request

To call specific procedure on a codeunit use the base OData URL for the codeunit and procedure name separated by an underscore.

POST /ODataV4/{serviceName}_{procedureName}?company={companyName|companyId} HTTP/1.1
{requestBody}

Request headers

Header Value
Authorization Bearer {token}. Required.

Example request

POST {baseUrl}/ODataV4/MyOperations_GetLengthOfStringWithConfirmation?company=CRONUS%20USA%20Inc. HTTP/1.1
{
    "inputJson": "{\"str\":\"Hello world!\",\"confirm\":true}"
}

Example response

HTTP/1.1 200 OK
{
  "@odata.context": "{baseUrl}/ODataV4/$metadata#Edm.Int32",
  "value": 12
}

See also

AL development environment
Creating and interacting with an OData V4 bound action
Getting started with Microsoft .NET interoperability from AL
Devoloping for multiple platform versions
Exporting permission sets
Discover events using the Event Recorder