Design API

NeoLoad makes it possible to trigger from a REST API on the Controller:

  • projects actions (create, open, save, save as, close)

  • recording actions (start, stop, etc.)

  • design actions (create User Path, create Transaction, create Advanced actions, create delay, etc.)

The Design API is the Recording API of NeoLoad 5.1 expanded with new capabilities.

The purpose of the Design API is to automate the transfer of a functional test from an external tool to NeoLoad.

The idea is to set NeoLoad as the proxy of the client, typically a Web browser, so that all HTTP traffic generated is sent to NeoLoad when running the test case.

To learn more about the recording of a test scenario, see Record a test scenario.

License information

License module "Recording API" is required to use this service.

If a call to the Design API is done and the license does not contain the appropriate module, the NL_RECORDING_NOT_LICENSED error message is sent.

Available methods

Interact with the API

Identify the client

By default, no identification is performed: the server accepts all client connections. To identify a client, configure the REST APIs in the Project settings. Every client may have an identification key (the identification key is then sent with each entry; the identification applies for each call because the client/server connection is stateless).

Data model

The Design API is a RESTful data service based on the Open Data Protocol. This is the OData Entity Description Model (EDM):

<edmx:Edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" Version="1.0">
<edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="1.0">
   <Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm" Namespace="com.neotys.neoload.api.design">
    <EntityType Name="StartRecording">
     <Key>
      <PropertyRef Name="ApiKey"/>
    </Key>
    <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
    <Property Name="VirtualUser" Type="Edm.String" Nullable="true"/>
    <Property Name="BaseContainer" Type="Edm.String" Nullable="true"/>
    <Property Name="ProtocolWebSocket" Type="Edm.Boolean" Nullable="true"/>
    <Property Name="ProtocolAdobeRTMP" Type="Edm.Boolean" Nullable="true"/>
    <Property Name="ProtocolHTTP2" Type="Edm.Boolean" Nullable="true"/>
    <Property Name="UserAgent" Type="Edm.String" Nullable="true"/>
    <Property Name="ProtocolSAPGUI" Type="Edm.Boolean" Nullable="true"/>
    <Property Name="SapSessionID" Type="Edm.String" Nullable="true"/>
    <Property Name="SapConnectionString" Type="Edm.String" Nullable="true"/>
 </EntityType>
 <EntityType Name="StopRecording">
   <Key>
    <PropertyRef Name="ApiKey"/>
   </Key>
   <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
   <Property Name="FrameworkParameterSearch" Type="Edm.Boolean" Nullable="true"/>
   <Property Name="GenericParameterSearch" Type="Edm.Boolean" Nullable="true"/>
   <Property Name="Name" Type="Edm.String" Nullable="true"/>
   <Property Name="DeleteRecording" Type="Edm.Boolean" Nullable="true"/>
   <Property Name="UpdateSharedContainers" Type="Edm.Boolean" Nullable="true"/>
   <Property Name="IncludeVariables" Type="Edm.Boolean" Nullable="true"/>
   <Property Name="MatchingThreshold" Type="Edm.Int32" Nullable="true"/>
</EntityType>
<EntityType Name="SetContainer">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
   <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
   <Property Name="Name" Type="Edm.String" Nullable="false"/>
</EntityType>
<EntityType Name="SetScreenshot">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
  <Property Name="Image" Type="Edm.Binary" Nullable="false"/>
</EntityType>
<EntityType Name="PauseRecording">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
</EntityType>
<EntityType Name="ResumeRecording">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
</EntityType>
<EntityType Name="SetBaseContainer">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
  <Property Name="Name" Type="Edm.String" Nullable="false"/>
</EntityType>
<EntityType Name="GetRecorderSettings">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
  <Property Name="ProxySettings" Type="com.neotys.neoload.api.design.ProxySettings" Nullable="true"/>
</EntityType>
<EntityType Name="GetRecordingStatus">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
  <Property Name="Status" Type="Edm.String" Nullable="true"/>
</EntityType>
<EntityType Name="OpenProject">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
  <Property Name="FilePath" Type="Edm.String" Nullable="false"/>
</EntityType>
<EntityType Name="SaveProject">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
</EntityType>
<EntityType Name="SaveAsProject">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
  <Property Name="DirectoryPath" Type="Edm.String" Nullable="true"/>
  <Property Name="Name" Type="Edm.String" Nullable="false"/>
  <Property Name="ForceStop" Type="Edm.Boolean" Nullable="true"/>
  <Property Name="Overwrite" Type="Edm.Boolean" Nullable="true"/>
</EntityType>
<EntityType Name="CloseProject">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
  <Property Name="ForceStop" Type="Edm.Boolean" Nullable="true"/>
  <Property Name="Save" Type="Edm.Boolean" Nullable="true"/>
</EntityType>
<EntityType Name="Exit">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
</EntityType>
<EntityType Name="CreateProject">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
  <Property Name="DirectoryPath" Type="Edm.String" Nullable="true"/>
  <Property Name="Name" Type="Edm.String" Nullable="false"/>
  <Property Name="Overwrite" Type="Edm.Boolean" Nullable="true"/>
</EntityType>
<EntityType Name="ContainsUserPath">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
  <Property Name="Name" Type="Edm.String" Nullable="false"/>
  <Property Name="Contains" Type="Edm.Boolean" Nullable="true"/>
</EntityType>
<EntityType Name="IsProjectOpen">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
  <Property Name="FilePath" Type="Edm.String" Nullable="false"/>
  <Property Name="Open" Type="Edm.Boolean" Nullable="true"/>
</EntityType>
<EntityType Name="GetStatus">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
  <Property Name="Status" Type="Edm.String" Nullable="true"/>
</EntityType>
<EntityType Name="GetElements">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
  <Property Name="Path" Type="Edm.String" Nullable="false"/>
  <Property Name="Element" Type="com.neotys.neoload.api.design.Element" Nullable="true"/>
</EntityType>
<EntityType Name="GetChildren">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
  <Property Name="Uid" Type="Edm.String" Nullable="false"/>
  <Property Name="Element" Type="com.neotys.neoload.api.design.Element" Nullable="true"/>
</EntityType>
<EntityType Name="AddElement">
  <Key>
    <PropertyRef Name="ApiKey"/>
  </Key>
  <Property Name="ApiKey" Type="Edm.String" Nullable="false"/>
  <Property Name="Type" Type="Edm.String" Nullable="false"/>
  <Property Name="Parent" Type="Edm.String" Nullable="true"/>
  <Property Name="JsonDefinition" Type="Edm.String" Nullable="true"/>
  <Property Name="Index" Type="Edm.String" Nullable="true"/>
  <Property Name="Element" Type="com.neotys.neoload.api.design.Element" Nullable="true"/>
</EntityType>
<ComplexType Name="ProxySettings">
  <Property Name="Port" Type="Edm.Int32" Nullable="true"/>
</ComplexType>
<ComplexType Name="Element">
  <Property Name="Uid" Type="Edm.String" Nullable="true"/>
  <Property Name="Type" Type="Edm.String" Nullable="true"/>
  <Property Name="Parent" Type="Edm.String" Nullable="true"/>
  <Property Name="JsonDefinition" Type="Edm.String" Nullable="true"/>
</ComplexType>
<EntityContainer Name="Container" m:IsDefaultEntityContainer="true">
  <EntitySet Name="StartRecording" EntityType="com.neotys.neoload.api.design.StartRecording"/>
  <EntitySet Name="StopRecording" EntityType="com.neotys.neoload.api.design.StopRecording"/>
  <EntitySet Name="SetContainer" EntityType="com.neotys.neoload.api.design.SetContainer"/>
  <EntitySet Name="SetScreenshot" EntityType="com.neotys.neoload.api.design.SetScreenshot"/>
  <EntitySet Name="PauseRecording" EntityType="com.neotys.neoload.api.design.PauseRecording"/>
  <EntitySet Name="ResumeRecording" EntityType="com.neotys.neoload.api.design.ResumeRecording"/>
  <EntitySet Name="SetBaseContainer" EntityType="com.neotys.neoload.api.design.SetBaseContainer"/>
  <EntitySet Name="GetRecorderSettings" EntityType="com.neotys.neoload.api.design.GetRecorderSettings"/>
  <EntitySet Name="GetRecordingStatus" EntityType="com.neotys.neoload.api.design.GetRecordingStatus"/>
  <EntitySet Name="OpenProject" EntityType="com.neotys.neoload.api.design.OpenProject"/>
  <EntitySet Name="SaveProject" EntityType="com.neotys.neoload.api.design.SaveProject"/>
  <EntitySet Name="SaveAsProject" EntityType="com.neotys.neoload.api.design.SaveAsProject"/>
  <EntitySet Name="CloseProject" EntityType="com.neotys.neoload.api.design.CloseProject"/>
  <EntitySet Name="Exit" EntityType="com.neotys.neoload.api.design.Exit"/>
  <EntitySet Name="CreateProject" EntityType="com.neotys.neoload.api.design.CreateProject"/>
  <EntitySet Name="ContainsUserPath" EntityType="com.neotys.neoload.api.design.ContainsUserPath"/>
  <EntitySet Name="IsProjectOpen" EntityType="com.neotys.neoload.api.design.IsProjectOpen"/>
  <EntitySet Name="GetStatus" EntityType="com.neotys.neoload.api.design.GetStatus"/>
  <EntitySet Name="GetElements" EntityType="com.neotys.neoload.api.design.GetElements"/>
  <EntitySet Name="AddElement" EntityType="com.neotys.neoload.api.design.AddElement"/>
  <EntitySet Name="GetChildren" EntityType="com.neotys.neoload.api.design.GetChildren"/>
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>

This OData Entity Description Model can be accessed on the following URL.

End point

The NeoLoad Controller embeds a REST API server that listens on port 7400. The Design API method can be called using the URL:

http://localhost:7400/Design/v1/Service.svc

The port can be customized and the communication secured in configuration file controller.properties. For more information, see REST APIs.