Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Please note that any requests for deleting GlobalSearch Objects (like database, archives, fields, lists, tables, documents, etc) will happen instantly and cannot be reversed. Use with care and consideration.

Initial Configuration

Download and import postman collection below;


Create a Postman Environment with the following values;

  • user - Windows or Square 9 username. If a windows domain user include the domain prefix

  • password - Password for the user, should be set to be type "secret"

  • domain - the FQDN of the GlobalSearch server, including the HTTP/HTTPS protocol

Using different environments in this manner allows you to quickly switch between users and GlobalSearch Servers. Note that you may have clear Postman cookies!

Getting a License

See Authentication and Licensing/Get License
GET request to /square9api/api/licenses, uses Basic Authentication to pass in user name and password.

The username and password are populated by the Postman Environment ({{user}} and {{password}} variables) currently in use.

The response to this request will contain the token in both the request body, cookies and headers. Both a authenticatedUser and sstoken cookie are created. The Postman application is pretty good at handling these and carrying them over to other requests, if you are creating a standalone application you will either need to add these cookies or always pass in the token via URL parameter.

Deleting a License

See Authentication and Licensing/Delete License

DEL request to /square9api/api/licenses/{token} will delete (pre GlobalSearch 6.1) or deactivate (GlobalSearch 6.1+) the given license token.

Managing Licenses is an important part of interacting with GlobalSearch APIs, you should attempt to use licenses for as small a time as possible and return (or delete) them when not in use so that human users of GlobalSearch have enough licenses available to access the program.

Uploading and Indexing a Document (in Chunks)

See Postman flow pictured below (while great for visualization of the process there is not a way to export/share flows from Postman at this time.)

Any variable used by a request in a flow if not retrieved from the flow itself is pulled from the Postman GlobalSearch Collection variables

Steps:

Get GlobalSearch License

  • Request: GET Authentication and Licenses/Get License

    • Uses Basic Authentication using the postman {{user}} and {{password}} variables (pulled from Postman Environment)

Start file upload to server

  • Request: POST Chunking Upload/Upload File to Server

    • this will return the unique JobID that you will need to use in later requests

    • The timestamp value here needs to be unique for each job

Upload file chunk

  • Request: POST Chunking Upload/Upload File Chunk
    Body:

    {"Index":1, "RawData":base64endcodedfilecontent, "JobID":jobid}
    • In this example we are assuming that the file is small enough to be reasonably uploaded in one chunk.

    • PDF is base64 encoded, in this case since there is only one chunk the Index value is 1

      • Online Base64 encoding service: https://www.base64encode.org/

      • The Postman collection includes the {{pdfvaluefull}} variable which is a full PDF encoded to base64 that can be used with this request as long as you are doing a one chunk only upload.

If you wanted to upload in more than one chunk repeat this request (Upload File Chunk) with the next sequential chunk, being sure to increment the “Index” value in the Body of the request. Keeping the index values in order is important because this is how GlobalSearch will stitch the document back together.

Finalize Upload

  • Request: GET Chunking Upload/Finalize Upload

    • This will write the completed chunks to a file in the WebPortalCache directory, the return value from this request will be that file name. This file name is used in the last request when indexing the document.

Import Document from WebPortalCache

  • Request: POST Document Actions/Import Document from WebPortalCache

Example Body of Request:
{
    "fields": [
        {
            "name": FieldID,
            "value": IndexFieldValue
        }
    ],
    "files":[
        {"name":WebPortalCacheFilename}
    ]
}
  • Uses the WebPortalCache filename to index the document to the selected database/archive

Uploading and Indexing a Document

Postman Flow example

Steps:

Get GlobalSearch License

  • Request: GET Authentication and Licenses/Get License

  • Uses Basic Authentication using the postman {{user}} and {{password}} variables (pulled from Postman Environment)

Upload File to Server

By default it will attempt to find a PDF file called “UnsupportedDocumentFormat.pdf“ in your Postman files directory (by default this is C:\Users\<username>\Postman\files). You can update this to be whatever file you wish.

  • Request: POST Document Actions/Upload File To Server

  • Uses request body form-data to upload files

    • Note that you can add multiple files by adding more “file” keys to the form-data section.

    • Select the request and switch to the Body tab;

Index the document

  • Request: POST Document Actions/Import Document from WebPortalCache

Example Body of Request:
{
    "fields": [
        {
            "name": FieldID,
            "value": IndexFieldValue
        }
    ],
    "files":[
        {"name":WebPortalCacheFilename}
    ]
}

Running a search

Postman flow example:

See Searching/Run Search
In order to run a search you will need the following;

  • Database ID

    • Run "Database/Get Database List" and pick the most appropriate database from the returned list

  • Archive ID

    • Run "Archives/Get Archives", pick the appropriate archive from the returned list

  • Search SecureId

    • Run "Searching/Get Archive Searches" to return a full list of searches for an archive, the "Hash" value in the returned information is the "SecureId" of the search.

  • Search Criteria information as needed

    • In the output of "Searching/Get Archive Searches", each search will have a "Detail" object, each item is a search prompt, the "ID" value is the prompt id that will be used in the Search Critera

      • Note that the prompt ids will change if the search is modified/edited/updated.

The JSON document below is an excerpt of the information retrieved from the Searching/Get Archive Search” request. Note that the “Detail” array will have a list of objects describing each Search Prompt. The “ID” key/value pair is the “Prompt Id”. The “FID” value is the GlobalSearch FieldID that the prompt will be compared against.

<truncated>
        "Hash": "245098cfd2e75673bbe3af5ad7bd46fac7e505fc988aab79766f7ea5b619a8d0",
        "Detail": [
            {
                "ID": 1,
                "FID": 1,
                "ListID": 0,
                "ListF1": 0,
                "ListF2": 0,
                "Parent": 0,
                "Operator": 2,
                "Prompt": "Character Field 1:",
                "VAL": "",
                "Prop": 0,
                "FieldType": 1,
                "Mask": ""
<truncated>

Once you have all of this information fill it out in the GlobalSearch Collection variables as desired.

For the "SearchCriteria" URL parameter, this is a JSON document that pairs Prompt IDs (retrieved from search description) with the search criteria.

{1:"tom"}

When passed in via URL param as described the above will execute the search with "tom" as the only filter criteria for search prompt 1. Postman will handle URL escaping, if you are implementing outside of Postman you will have to take steps to ensure that the search values are properly escaped, if they are not you may recieve 404s instead of an error message.

Other Parameters for "Searching/Run Search"

  • Page - Mainly used by GlobalSearch Web/LAN to return a limited number of results in page like fashion

  • RecordsPerPage - The number of results to return

  • SecureId - The "Hash" of the search

  • count - Only returns the number of documents found, without information about the documents themselves

Moving a Document

See Document Actions/Copy Document and Document Actions/Move Document

Please note that you should always fetch the SecureID values anytime that you need to use them, they are updated often. This applies to any version of the SecureID, whether it be search or document.

In order to move a document you will need to know the following

  • DatabaseID - GlobalSearch Database ID

    • Run “Database/Get Database List“ and pick the most appropriate database from the returned list

  • ArchiveID - GlobalSearch Archive ID

    • Run “Archives/Get Archives“, pick the appropriate database from the returned list

  • DocID - GlobalSearch Document ID

    • There are many ways this is obtained, typically via running a search

  • DestinationArchiveID - GlobalSearch Archive ID that you want to move/copy the document to

  • SecureID - A unique hash of the document

    • See "Document Actions/Get Document Secure ID"

Updating Index data on a Document

See Document Actions/Update Index Data

In order to update index data fro a document you will need to know the following, see previous sections for how to obtain these.

  • DatabaseID - GlobalSearch Database ID

  • ArchiveID - GlobalSearch Archive ID

  • DocID - GlobalSearch Document ID

  • SecureID - A unique hash of the document

Example Body of Request:

Below is an example of the Request body used for updating index data. The “ID” key value pair refers to the FieldID on the document that you want to update the data for. The “VAL” key/value pair is the value that you want to be updated.

{
    "IndexData": {
        "IndexFields": [
            {
                "ID":1,
                "VAL":"Test"
            }
        ]
    }
}
  • No labels