GoPlant API: Get Responses Between Start and End Date for an External Tag Source Code
  • Description / Endpoint Version: 1.0
    This endpoint will return a list of responses that were answered between a start and end date UTC and are associated with an external tag source code. This endpoint was designed to work with a historian or logbook system.
  • Deprecated Endpoint:
    Please use endpoint version 1.1 or greater.
  • Change Log:
    • 1.0: Initial build.
    • API 2.0: For any of the endpoints that require a start and end date / time, you can now pass a storage group date / time with "StartDatetimeSG" and "EndDatetimeSG" instead of "StartDatetimeUTC" and "EndDatetimeUTC". Include "StorageGroupID" to tell the system which storage group date / time you are sending.

  • Authentication Type:
    Tag Source
  • Accepts:
    URL: http://skf.goplant.mobi/api/svc/Historian/HistorianBetweenDateTimes
    Method: Post
    Authorization: Basic
    • Username: [Contact The GoPlant Administrator]
    • Password: [Contact The GoPlant Administrator]
    Headers:
    • Content-Type: application/json
    Body:
    • RowStart and RowCount are used for paging thru large record sets. The maximum number of rows that can be returned at any one time is 1000.
    • RowStart: This is a zero based row number of the row to start with.
    • RowCount: The number of rows to return starting from the RowStart.
    • ReturnType: How you would like to receive the response. JSON and XML are supported.
    • Note: StartDatetime and EndDateTime are always UTC.
    • StartDatetimeUTC: Will return responses answered AFTER this UTC date / time.
    • EndDatetimeUTC: Will return responses answered BEFORE this UTC date / time.
    • TagSourceCodeName: The external tag source code you would like to request.
    • TagDataValue: (Optional) The external tag data value you would like to request.
    • Note: For endpoints that allow a date parameter, you can now use "StartDatetimeSG" or "EndDatetimeSG" to pass storage group timestamps. See the home page for more details.
    Accept Body Example:
    {
    	"RowStart": 0,
    	"RowCount": 2,
    	"ReturnType": "json",
    	"StartDatetimeUTC":"2017-11-15T01:57:53",
    	"EndDatetimeUTC": "2017-11-16T19:57:53",
    	"TagSourceCodeName": "MAXIMO",
    	"TagDataValue": "",
    	"EndpointVersion": null (null = latest 1.x)
    }
    
  • Response:
    Status: 200
    Type: JSON
    Body:
    • Status Object: Holds status information about your request.
      • HTTPStatusCode: HTTP Status ID of the request.
      • HTTPStatus: HTTP Status string representation. EX. 'OK'
      • RowStart: The zero based first row that was returned.
      • RowsReturned: The actual number of rows returned in the Data object.
      • LastIdReturned: The Last Response ID Returned by this request. This is useful for the next call when you want new records.
      • RequestBegin: The UTC timestamp API received the request.
      • StopWatch: The elapsed time the API call.
      • APIversion: GoPlant internal API version.
      • EndpointVersionReturned: The endpoint version that was returned based on the request. ex. If no endpoint version was requested, this will show the latest 1.x version.
      • ExternalRequest: The request object that was passed. Includes the endpoint version that was requested and the actual endpoint version that was returned.
        • "EndpointVersion": null
        • "EndpointVersionReturned": 1.1
    • Data Object: Holds the actual data that you are requesting.
      • responseID: Unique Response ID
      • responseType: A string representing our possible response types, which may be Short text, Scan barcode, Drawing, Previous, Show message, Calculation, Multi-line text, Take picture, Lookup, Location, Signature, List, Date, Yes/No, Number
      • responseValue: The string value of the response.
      • responseDate: The UTC date / timestamp the questions step was answered.
      • stepComments: Administrator comments when the step was added to the form.
      • stepWasVisible: Indicates whether the step was visible on the form at the time it was committed. May be null for responses committed before 6/13/2018.
      • formName: Name of the form.
      • assetTag: Name of the Asset. May be null if the response was on a Form Only round.
      • assetDescription: Description of the Asset. May be null if the response was on a Form Only round.
      • assetStatus: String representation of the Assets status. May be null, Nominal, NonNominal or Disabled.
      • roundName: Name of the Round
      • roundVariantName: Name of the variant in the round.
      • elementLabel: Name of the element in the variant in the round.
      • taskName: Name of the task. May be null if the response was in a round and not a task.
      • taskEventStatus: String representation of the tasks status at the time the response was recorded which may be Revoked, CompleteLate, Late, Expired, On Time, Void, Not Started, Completed
      • tagSourceCode: External tag source code.
      • tagSourceDisplayName: People friendly display of the external tag source code. May be null.
      • tagDataValue: Value of the external tag.
      • tagDataDescription: People friendly display of the external tag. May be null.
    Response Example:
    {
        "status": {
            "HTTPStatusCode": 200,
            "HTTPStatus": "OK",
            "RowStart": 0,
            "RowsReturned": 2,
            "LastIdReturned": 245125,
            "RequestBegin": "2018-06-13T20:50:46.1348477Z",
            "StopWatch": {
                "IsRunning": true,
                "Elapsed": "00:00:00.1382361",
                "ElapsedMilliseconds": 139,
                "ElapsedTicks": 353288
            },
            "APIversion": "3.25.0.0",
            "EndpointVersionReturned": 1.0
            "ExternalRequest": {
                "RowStart": 0,
                "RowCount": 2,
                "StartDatetimeUTC": "2017-11-15T01:57:53",
                "EndDatetimeUTC": "2017-11-16T19:57:53",
                "ResponseID": null,
                "TagSourceCodeName": "MAXIMO",
                "ReturnType": 1
            }
        },
        "data": [
            {
                "responseID": 245078,
                "responseType": "Number",
                "responseValue": "55.00",
                "responseDate": "2017-11-16T17:09:52",
                "stepComments": "",
                "stepWasVisible": null,
                "formName": "U1COMP01",
                "assetTag": "U1COMP01",
                "assetDescription": null,
                "assetStatus": "Nominal",
                "roundName": "Round Unit1-1",
                "roundVariantName": "Day",
                "elementLabel": "U1COMP01 / U1COMP01",
                "taskName": "",
                "taskEventStatus": "",
                "tagSourceCode": "MAXIMO",
                "tagSourceDisplayName": "Maximo",
                "tagDataValue": "123",
                "tagDataDescription": "MAXIMOQA"
            },
            {
                "responseID": 245125,
                "responseType": "Number",
                "responseValue": "55.00",
                "responseDate": "2017-11-16T17:30:17",
                "stepComments": "",
                "stepWasVisible": null,
                "formName": "U1COMP01",
                "assetTag": "U1COMP01",
                "assetDescription": null,
                "assetStatus": "Nominal",
                "roundName": "Round Unit1-1",
                "roundVariantName": "Day",
                "elementLabel": "U1COMP01 / U1COMP01",
                "taskName": "",
                "taskEventStatus": "",
                "tagSourceCode": "MAXIMO",
                "tagSourceDisplayName": "Maximo",
                "tagDataValue": "123",
                "tagDataDescription": "MAXIMOQA"
            }
        ]
    }
    
  • On Failure:
    • If you do not provide a basic authorization header you will get an empty body with a status of 401 Unauthorized.
    • If your basic authorization header Username or Password is incorrect, you will get this message with a status of 401 Unauthorized.
      {"message": "Unauthorized API access"}
    • If you do not supply a json object in your body, you will get this message with a status of 500 Internal Server Error.
      {"message": "Missing body in post."}
    • If you pass a RowStart less than zero, you will get this message with a status of 500 Internal Server Error.
      {"message": "RowStart cannot be less than 0."}
    • If you pass a RowCount less than zero, you will get this message with a status of 500 Internal Server Error.
      {"message": "RowCount cannot be less than 0."}
    • If TagSourceCodeName is required and you do not pass it, you will get this message with a status of 500 Internal Server Error.
      {"message": "You must pass a source code name."}
    • If a Start, End or last update date / time is required but not passed, you will get this message with a status of 500 Internal Server Error.
      {"message": "StartDatetimeUTC cannot be null"}
      OR
      {"message": "EndDatetimeUTC cannot be null"}
      OR
      {"message": "LastUpdateUTC cannot be null"}
    • If you pass an invalid version number, you will get this type of response.
      {"message": "ResponsesBetweenResponseDate Error: Invalid Version Requested [1.1].   at ...
    • If you do not pass a TagSourceCodeName you will get this message and a status of 500 - Internal Server Error.
       {"message":"You must pass a source code name."}
  • curl Example:
                            
    curl -X POST \
      http://localhost:9080/api/svc/Historian/HistorianBetweenDateTimes \
      -H 'Authorization: Basic TXlUYWdTb3VyY2UxOjhFRTMxNTFCMUQwODQzOUZCMEQyQjhFQ0MzMzNBNkZF' \
      -H 'Cache-Control: no-cache' \
      -H 'Content-Type: application/json' \
      -d '{
    	"RowStart": 0,
    	"RowCount": 2,
    	"ReturnType": "json",
    	"StartDatetimeUTC":"2017-11-15T01:57:53",
    	"EndDatetimeUTC": "2017-11-16T19:57:53",
    	"TagSourceCodeName": "MAXIMO"
    }'
                        
  • C# Example:
                            
    var client = new RestClient("http://localhost:9080/api/svc/Historian/HistorianBetweenDateTimes");
    var request = new RestRequest(Method.POST);
    request.AddHeader("Cache-Control", "no-cache");
    request.AddHeader("Authorization", "Basic TXlUYWdTb3VyY2UxOjhFRTMxNTFCMUQwODQzOUZCMEQyQjhFQ0MzMzNBNkZF");
    request.AddHeader("Content-Type", "application/json");
    request.AddParameter("undefined", "{\n\t\"RowStart\": 0,\n\t\"RowCount\": 2,\n\t\"ReturnType\": \"json\",\n\t\"StartDatetimeUTC\":\"2017-11-15T01:57:53\",\n\t\"EndDatetimeUTC\": \"2017-11-16T19:57:53\",\n\t\"TagSourceCodeName\": \"MAXIMO\"\n}", ParameterType.RequestBody);
    IRestResponse response = client.Execute(request);
                        
  • Jquery Example:
                            
    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "http://localhost:9080/api/svc/Historian/HistorianBetweenDateTimes",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Authorization": "Basic TXlUYWdTb3VyY2UxOjhFRTMxNTFCMUQwODQzOUZCMEQyQjhFQ0MzMzNBNkZF",
        "Cache-Control": "no-cache"
      },
      "processData": false,
      "data": "{\n\t\"RowStart\": 0,\n\t\"RowCount\": 2,\n\t\"ReturnType\": \"json\",\n\t\"StartDatetimeUTC\":\"2017-11-15T01:57:53\",\n\t\"EndDatetimeUTC\": \"2017-11-16T19:57:53\",\n\t\"TagSourceCodeName\": \"MAXIMO\"\n}"
    }
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });