NAV Navbar
HTTP c#
  • SecureRX API v1
  • Getting Started
  • Authentication
  • Token
  • Document Processing
  • Document Logs
  • Portal Events
  • Products
  • Schemas
  • SecureRX API v1

    Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

    Getting Started

    Token Authentication

    All document processing API requests must be authenticated.

    Request an authentication token with a request to https://admin.troysecurerx.com/connect/token. See the details for this call in the API specification below.

    Add an Authorization header using the value Bearer <token> replacing <token> with the token you received from the call to connect/token.

    Base URLs:

    Authentication

    Token

    Get a token to authenticate API requests

    Get an auth token

    Code samples

    POST https://admin.troysecurerx.com/connect/token HTTP/1.1
    Host: admin.troysecurerx.com
    Content-Type: application/x-www-form-urlencoded
    
    
    
    
    
    
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("https://admin.troysecurerx.com/connect/token");
    
        var postData = new List>
        {
            new KeyValuePair("grant_type", "client_credentials"),
            new KeyValuePair("client_id", ClientId),
            new KeyValuePair("client_secret", ClientSecret),
            new KeyValuePair("scope", "api")
        };
    
        var content = new FormUrlEncodedContent(postData);
        var response = await client.PostAsync("/connect/token", content);
        var token = await response.Content.ReadAsStringAsync();
                    
        Console.WriteLine($"Access token: {token}");
    }
     
    
    
    

    POST /connect/token

    Returns a token to authenticate further requests

    Body parameter

    grant_type: string
    client_id: string
    client_secret: string
    scope: string
    
    
    

    Parameters

    Parameter In Type Required Description
    body body object false No description
    » grant_type body string true Use client_credentials
    » client_id body string true Your client id
    » client_secret body string true Your client secret
    » scope body string true Use api

    Responses

    Status Meaning Description Schema
    200 OK Success None

    Document Processing

    Add security features to PDF documents

    Template only

    Code samples

    POST https://admin.troysecurerx.com/api/document/create HTTP/1.1
    Host: admin.troysecurerx.com
    Content-Type: application/x-www-form-urlencoded
    
    
    
    
    
    
        const string outFilePath = @"Create.pdf";
        const string templateJson = @"{
            ""document"": {
            ""width"": 816,
            ""height"": 1056,
            ""xps"": null,
            ""printOnBack"": false,
            ""whiteFix"": false,
            ""repeatSecurity"": false,
            ""authMark"": null,
            ""duplexMode"": null,
            ""tray"": null,
            ""documentLevelSerialization"": false
            },
            ""pages"": [
            {
                ""captureRegions"": [],
                ""securityFeatures"": [
                {
                    ""id"": 1545083991962,
                    ""x"": 258,
                    ""y"": 478,
                    ""width"": 300,
                    ""height"": 100,
                    ""type"": ""textbox"",
                    ""text"": ""Create"",
                    ""fontName"": ""Helvetica"",
                    ""fontSize"": 12,
                    ""lineSpacing"": 0,
                    ""transform"": 0,
                    ""color"": {
                    ""r"": 240,
                    ""g"": 11,
                    ""b"": 11,
                    ""a"": 1
                    },
                    ""backgroundColor"": {
                    ""r"": 255,
                    ""g"": 255,
                    ""b"": 255,
                    ""a"": 1
                    },
                    ""border"": {
                    ""size"": 0,
                    ""color"": {
                        ""r"": 0,
                        ""g"": 0,
                        ""b"": 0,
                        ""a"": 1
                    }
                    },
                    ""rotationAngle"": 0,
                    ""placement"": 0,
                    ""scale"": 100,
                    ""autoScale"": false,
                    ""horizontalAlignment"": 0
                }
                ]
            }
            ],
            ""ui"": {
            ""currentPageIndex"": 0,
            ""selectedIndex"": 0,
            ""dirty"": true,
            ""saving"": false,
            ""culture"": {
                ""languageCode"": ""en"",
                ""countryCode"": ""US""
            },
            ""documentName"": """",
            ""workflow"": ""template"",
            ""siteType"": ""docrity"",
            ""lastDownTarget"": """",
            ""mode"": ""design"",
            ""hoverIndex"": -1
            },
            ""protectSettings"": null
        }";
    
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("https://admin.troysecurerx.com");
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Token");
    
            var form = new MultipartFormDataContent
            {
                {new StringContent(templateJson), "template"}
            };
    
            var response = await client.PostAsync("/api/document/create", form);
    
            using (var writer = File.Open(outFilePath, FileMode.Create))
            {
                await (await response.Content.ReadAsStreamAsync()).CopyToAsync(writer);
            }
        }
    
    
    
    

    POST /document/create

    Use this to generate a PDF from a template when no source document exists.

    Body parameter

    template: string
    protectSettings: string
    
    
    

    Parameters

    Parameter In Type Required Description
    body body object false No description
    » template body string true The template JSON
    » protectSettings body string false The digital protection settings JSON to be applied to the document (see ProtectSettings under Models)

    Responses

    Status Meaning Description Schema
    200 OK PDF file stream None

    Using Template Name

    Code samples

    POST https://admin.troysecurerx.com/api/document/processTemplate HTTP/1.1
    Host: admin.troysecurerx.com
    Content-Type: multipart/form-data
    
    
    
    
    
    
    const string inFilePath = @"YourPDF.pdf";
    const string outFilePath = @"OutputFile.pdf";
    const string templateName = "TemplateName";
                
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("https://admin.troysecurerx.com/");
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Token");
    
        var form = new MultipartFormDataContent();
    
        using (var file = File.OpenRead(inFilePath))
        {
            var fileContent = new StreamContent(file);
            fileContent.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
    
            form.Add(fileContent, "file", Path.GetFileName(inFilePath));
            form.Add(new StringContent(templateName), "templateName");
    
            var response = await client.PostAsync("/api/document/processTemplate", form);
    
            using (var writer = File.Open(outFilePath, FileMode.Create))
            {
                await (await response.Content.ReadAsStreamAsync()).CopyToAsync(writer);
            }
        }
    }
    
    
    
    

    POST /document/processTemplate

    Secures a PDF with a template defined on the web. Use the template name to identify the template.

    Body parameter

    file: string
    templateName: string
    protectSettings: string
    
    
    

    Parameters

    Parameter In Type Required Description
    body body object false No description
    » file body string(binary) true The source document
    » templateName body string true The template name
    » protectSettings body string false The digital protection settings JSON to be applied to the document (see ProtectSettings under Models)

    Responses

    Status Meaning Description Schema
    200 OK PDF file stream None
    400 Bad Request Template not found None

    Using Template JSON

    Code samples

    POST https://admin.troysecurerx.com/api/document/processJson HTTP/1.1
    Host: admin.troysecurerx.com
    Content-Type: multipart/form-data
    
    
    
    
    
    
    
    const string inFilePath = @"InputFile.pdf";
    const string outFilePath = @"OutputFile.pdf";
    const string templateJson = @"{
        ""document"": {
        ""width"": 816,
        ""height"": 1056,
        ""xps"": null,
        ""printOnBack"": false,
        ""whiteFix"": false,
        ""repeatSecurity"": false,
        ""authMark"": null,
        ""duplexMode"": null,
        ""tray"": null,
        ""documentLevelSerialization"": false
        },
        ""pages"": [
        {
            ""captureRegions"": [],
            ""securityFeatures"": [
            {
                ""id"": 1545083991962,
                ""x"": 258,
                ""y"": 478,
                ""width"": 300,
                ""height"": 100,
                ""type"": ""textbox"",
                ""text"": ""ProcessJson"",
                ""fontName"": ""Helvetica"",
                ""fontSize"": 12,
                ""lineSpacing"": 0,
                ""transform"": 0,
                ""color"": {
                ""r"": 240,
                ""g"": 11,
                ""b"": 11,
                ""a"": 1
                },
                ""backgroundColor"": {
                ""r"": 255,
                ""g"": 255,
                ""b"": 255,
                ""a"": 1
                },
                ""border"": {
                ""size"": 0,
                ""color"": {
                    ""r"": 0,
                    ""g"": 0,
                    ""b"": 0,
                    ""a"": 1
                }
                },
                ""rotationAngle"": 0,
                ""placement"": 0,
                ""scale"": 100,
                ""autoScale"": false,
                ""horizontalAlignment"": 0
            }
            ]
        }
        ],
        ""ui"": {
        ""currentPageIndex"": 0,
        ""selectedIndex"": 0,
        ""dirty"": true,
        ""saving"": false,
        ""culture"": {
            ""languageCode"": ""en"",
            ""countryCode"": ""US""
        },
        ""documentName"": """",
        ""workflow"": ""template"",
        ""siteType"": ""docrity"",
        ""lastDownTarget"": """",
        ""mode"": ""design"",
        ""hoverIndex"": -1
        },
        ""protectSettings"": null
    }";
    
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("https://admin.troysecurerx.com");
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Token");
    
        var form = new MultipartFormDataContent();
    
        using (var file = File.OpenRead(inFilePath))
        {
            var fileContent = new StreamContent(file);
            fileContent.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
    
            form.Add(fileContent, "file", Path.GetFileName(inFilePath));
            form.Add(new StringContent(templateJson), "templateJson");
    
            var response = await client.PostAsync("/api/document/processJson", form);
    
            using (var writer = File.Open(outFilePath, FileMode.Create))
            {
                await (await response.Content.ReadAsStreamAsync()).CopyToAsync(writer);
            }
        }
    }
    
     
    
    

    POST /document/processJson

    Secures a PDF with a security profile JSON configuration.

    Body parameter

    file: string
    templateJson: string
    protectSettings: string
    
    
    

    Parameters

    Parameter In Type Required Description
    body body object false No description
    » file body string(binary) true The source document
    » templateJson body string true The template JSON
    » protectSettings body string false The digital protection settings JSON to be applied to the document (see ProtectSettings under Models)

    Responses

    Status Meaning Description Schema
    200 OK PDF file stream None
    400 Bad Request Invalid template JSON None

    Download captured document

    Code samples

    GET https://admin.troysecurerx.com/api/document/download/{id} HTTP/1.1
    Host: admin.troysecurerx.com
    
    
    
    
    
    const string outFilePath = @"Download.pdf";
    const string serialNumber = "SAMPLESERIALNO";
    
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("https://admin.troysecurerx.com");
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Token");
    
        var response = await client.GetAsync($"/api/document/download/{serialNumber}");
    
        using (var writer = File.Open(outFilePath, FileMode.Create))
        {
            await (await response.Content.ReadAsStreamAsync()).CopyToAsync(writer);
        }
    }
    
    
    
    
    

    GET /document/download/{id}

    Downloads a captured document if it exists.

    Parameters

    Parameter In Type Required Description
    id path string true The document serial number

    Responses

    Status Meaning Description Schema
    200 OK PDF file stream None
    400 Bad Request Document not found None

    Document Logs

    Retrieve document log information

    Get document log records

    Code samples

    GET https://admin.troysecurerx.com/api/documentlogs/ HTTP/1.1
    Host: admin.troysecurerx.com
    
    
    Accept: application/json
    
    
    
    
    
        using (var client = new HttpClient())
        {
        client.BaseAddress = new Uri("https://admin.troysecurerx.com");
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Token");
    
        var response = await client.GetAsync("/api/documentlogs");
        var logs = await response.Content.ReadAsStringAsync();
    
        Console.WriteLine(logs);
        }
     
    
    
    

    GET /documentlogs/

    Gets a list of document log records. The list is sorted by the date the record was created, with the most recently created records at the top.

    Parameters

    Parameter In Type Required Description
    pageSize query integer false The number of records per page (defaults to 100)
    pageNumber query integer false The page of records to be returned

    Example responses

    [
      {
        "id": "string",
        "serialNumber": "string",
        "companyId": "string",
        "pageCount": 0,
        "userName": "string",
        "printTime": "string",
        "printTimeLocal": "string",
        "documentName": "string",
        "hasXps": 0,
        "dataCapture": "string",
        "authMarkCapture": "string"
      }
    ]
    

    Responses

    Status Meaning Description Schema
    200 OK A list of document log records Inline

    Response Schema

    Status Code 200

    Name Type Required Description
    anonymous [AuditRecord] false No description
    » id string false The unique id of the audit record
    » serialNumber string false The document serial number
    » companyId string false The company id
    » pageCount integer false The page count of the document
    » userName string false The user name of the user who secured the document
    » printTime string false The time the document was secured
    » printTimeLocal string false The local time when the document was secured
    » documentName string false The document name
    » hasXps integer false A value indicating if the document was captured. If 1, the document was captured
    » dataCapture string false A JSON object of the captured data
    » authMarkCapture string false A JSON object of the captured data for AuthMark (may be hashed values)

    Get a document log record

    Code samples

    GET https://admin.troysecurerx.com/api/documentlogs/{id} HTTP/1.1
    Host: admin.troysecurerx.com
    
    
    Accept: application/json
    
    
    
    
    
    const string serialNumber = "SAMPLESERIALNO";
    
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("https://admin.troysecurerx.com");
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Token");
    
        var response = await client.GetAsync($"/api/documentlogs/{serialNumber}");
        var log = await response.Content.ReadAsStringAsync();
    
        Console.WriteLine(log);
    }
    
    

    GET /documentlogs/{id}

    Gets a document log record for a given serial number.

    Parameters

    Parameter In Type Required Description
    id path string true The document serial number

    Example responses

    {
      "auditRecord": {
        "id": "string",
        "serialNumber": "string",
        "companyId": "string",
        "pageCount": 0,
        "userName": "string",
        "printTime": "string",
        "printTimeLocal": "string",
        "documentName": "string",
        "hasXps": 0,
        "dataCapture": "string",
        "authMarkCapture": "string"
      },
      "documentLink": "string",
      "activity": [
        {
          "id": "string",
          "type": 0,
          "eventDateUtc": "string",
          "companyId": "string",
          "userId": "string",
          "serialNumber": "string",
          "ipAddress": "string"
        }
      ]
    }
    

    Responses

    Status Meaning Description Schema
    200 OK A document log record plus blockchain entry details, if any. Also includes portal activity details, if any. DocumentLog
    400 Bad Request Log record not found None

    Portal Events

    Retrieve portal event information

    Get portal event records for a company

    Code samples

    GET https://admin.troysecurerx.com/api/portalevents HTTP/1.1
    Host: admin.troysecurerx.com
    
    
    Accept: application/json
    
    
    
    
    
    
     
    
    

    GET /portalevents

    Gets portal event records for the user's company

    Parameters

    Parameter In Type Required Description
    pagenumber query integer false The page number
    pagesize query integer false The page size

    Example responses

    [
      {
        "id": "string",
        "type": 0,
        "eventDateUtc": "string",
        "companyId": "string",
        "userId": "string",
        "serialNumber": "string",
        "ipAddress": "string"
      }
    ]
    

    Responses

    Status Meaning Description Schema
    200 OK A collection of portal events for the document. Inline

    Response Schema

    Status Code 200

    Name Type Required Description
    anonymous [PortalEvent] false No description
    » id string false The event's unique id
    » type integer false The event type
    » eventDateUtc string false The event date in utc
    » companyId string false The company id
    » userId string false The user id
    » serialNumber string false The document serial number
    » ipAddress string false The IP address associated with the event

    Get portal event records for a document

    Code samples

    GET https://admin.troysecurerx.com/api/portalevents/serialnumber/{serialNumber} HTTP/1.1
    Host: admin.troysecurerx.com
    
    
    Accept: application/json
    
    
    
    
                
    
    

    GET /portalevents/serialnumber/{serialNumber}

    Gets portal event records given the serial number associated with it.

    Parameters

    Parameter In Type Required Description
    serialNumber path string true The document serial number

    Example responses

    [
      {
        "id": "string",
        "type": 0,
        "eventDateUtc": "string",
        "companyId": "string",
        "userId": "string",
        "serialNumber": "string",
        "ipAddress": "string"
      }
    ]
    

    Responses

    Status Meaning Description Schema
    200 OK A collection of portal events for the document. Inline

    Response Schema

    Status Code 200

    Name Type Required Description
    anonymous [PortalEvent] false No description
    » id string false The event's unique id
    » type integer false The event type
    » eventDateUtc string false The event date in utc
    » companyId string false The company id
    » userId string false The user id
    » serialNumber string false The document serial number
    » ipAddress string false The IP address associated with the event

    Products

    Serialize product information

    Create a serialized product record

    Code samples

    POST https://admin.troysecurerx.com/api/products HTTP/1.1
    Host: admin.troysecurerx.com
    Content-Type: application/x-www-form-urlencoded
    Accept: application/json
    
    
    
    
                
    
    

    POST /products

    Create a serialized product record of key/value pairs

    Body parameter

    record: string
    
    
    

    Parameters

    Parameter In Type Required Description
    body body object false No description
    » record body string true The digital protection settings JSON to be applied to the document (see ProductRequest under Models)

    Example responses

    {
      "serialNumber": "string",
      "url": "string"
    }
    

    Responses

    Status Meaning Description Schema
    200 OK Auth portal information Inline

    Schemas

    DocumentLog

    {
      "auditRecord": {
        "id": "string",
        "serialNumber": "string",
        "companyId": "string",
        "pageCount": 0,
        "userName": "string",
        "printTime": "string",
        "printTimeLocal": "string",
        "documentName": "string",
        "hasXps": 0,
        "dataCapture": "string",
        "authMarkCapture": "string"
      },
      "documentLink": "string",
      "activity": [
        {
          "id": "string",
          "type": 0,
          "eventDateUtc": "string",
          "companyId": "string",
          "userId": "string",
          "serialNumber": "string",
          "ipAddress": "string"
        }
      ]
    }
    

    Properties

    Name Type Required Description
    auditRecord AuditRecord false No description
    documentLink string false A URL for downloading the captured document
    activity [PortalEvent] false Represents authentication portal events associated with the document

    AuditRecord

    {
      "id": "string",
      "serialNumber": "string",
      "companyId": "string",
      "pageCount": 0,
      "userName": "string",
      "printTime": "string",
      "printTimeLocal": "string",
      "documentName": "string",
      "hasXps": 0,
      "dataCapture": "string",
      "authMarkCapture": "string"
    }
    

    Properties

    Name Type Required Description
    id string false The unique id of the audit record
    serialNumber string false The document serial number
    companyId string false The company id
    pageCount integer false The page count of the document
    userName string false The user name of the user who secured the document
    printTime string false The time the document was secured
    printTimeLocal string false The local time when the document was secured
    documentName string false The document name
    hasXps integer false A value indicating if the document was captured. If 1, the document was captured
    dataCapture string false A JSON object of the captured data
    authMarkCapture string false A JSON object of the captured data for AuthMark (may be hashed values)

    PortalEvent

    {
      "id": "string",
      "type": 0,
      "eventDateUtc": "string",
      "companyId": "string",
      "userId": "string",
      "serialNumber": "string",
      "ipAddress": "string"
    }
    

    Properties

    Name Type Required Description
    id string false The event's unique id
    type integer false The event type
    eventDateUtc string false The event date in utc
    companyId string false The company id
    userId string false The user id
    serialNumber string false The document serial number
    ipAddress string false The IP address associated with the event

    ProductRequest

    {
      "property1": "string",
      "property2": "string"
    }
    

    Properties

    Name Type Required Description
    additionalProperties string false No description

    ProtectSettings

    {
      "method": {
        "const": 0,
        "description": "Rc440"
      },
      "annotations": false,
      "extraction": false,
      "accessibility": false,
      "assembly": false,
      "modify": false,
      "formsFill": false,
      "print": false,
      "encryptMedia": false,
      "highQualityPrint": false,
      "enhancedPasswordValidation": false,
      "ownerPassword": "string",
      "userPassword": "string"
    }
    

    Properties

    Name Type Required Description
    method integer false The encryption method
    annotations boolean false A flag indicating whether to enable annotations
    extraction boolean false A flag inidicating whether to enable extraction
    accessibility boolean false A flag inidicating whether to enable accessibility
    assembly boolean false A flag inidicating whether to enable document assembly
    modify boolean false A flag inidicating whether to enable document modification
    formsFill boolean false A flag inidicating whether to enable forms fill
    print boolean false A flag inidicating whether to enable printing
    encryptMedia boolean false A flag inidicating whether to encrypt media
    highQualityPrint boolean false A flag inidicating whether to enable high-quality printing
    enhancedPasswordValidation boolean false A a flag inidicating whether to enable enhanced password validation (only applies to AES encryption)
    ownerPassword string false The owner password
    userPassword string false The user password