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

Compare with Current View Page History

« Previous Version 20 Next »

In Progress



The REST Connector can be configured using the Rest API. It requires the following entities to be created:

  • Credential
  • Connection
  • Connector
  • Seed

Below are the examples of how to create the Credential, Connection and the Seed. For the Connector, please check this page.

Create Credential

We support these crawled repositories authentication types:

  • Basic - see here
  • Bearer - see here
  • API Token - can be used as an alternative for Bearer. It is about sending configured header field as a part of each request
  • None

FieldRequiredDefaultMultipleNotesExample
typeYes-NoThe value must be "rest-api"."rest-api"
descriptionYes-NoName of the credential object."My REST Credential"
propertiesYes-NoConfiguration object
typeyes-NoAuthentication type: basic, apiToken, bearer, none,basic




type: basic
loginAccountYes-NoUser name."admin"
passwordYes-NoPassword (can be encrypted in Aspire fashion)"adminPassword"




type: apiToken
headerNameyes-NoThe name of HTTP header field to be sent with a request"tokenName1"
headerValueyes-NoThe value of the "headerName" field"tokenValue1"




type: bearer
preExpirationLimitInMsYes0NoPre expiration limit. The time (in ms) used for calculating when to ask for the new accessToken5000
queryyes-Nobearer query: JSON object representing the query to be sent for getting the accessToken
urlTemplateyes-NoThe context path of the URL"/login"
methodyes-NoHTTP method. Must be POST in this version"POST"
bodyyes-NoThe query body. Fields  ${loginAccount}, ${password} are expected to be used as a part of the body."{\"username\" : \"${username}\",\"password\" : \"${password}\"}"
queryTypeyes-NoUse the value "metadataExtraction" here"metadataExtraction"
resultFieldyes-NoThe field in the response with the access token"accessToken"
loginAccountYes-NoUser name. Used as a value for ${loginAccount} query body field"admin"
passwordYes-NoPassword. Used as a value for ${password} query body field"adminPassword"

Example

POST aspire/_api/credentials
{
    "type": "rest-api",
    "description": "My credential",
    "properties": {
        "type": "bearer",
        "query": {
            "urlTemplate": "/login",
            "method": "POST",
            "body": "{\"username\" : \"${username}\",\"password\" : \"${password}\"}",
            "queryType": "metadataExtraction",
            "resultField": "accessToken"
            "username": "admin",
            "password": "encrypted:xxxxx",
         }
    }
}

Create Connection


FieldRequiredDefaultMultipleNotesExample
typeYes-NoThe value must be "rest-api"."rest-api"
descriptionYes-NoName of the connection object."My REST Connection"
throttlePolicyNo-NoId of the throttle policy that applies to this connection object."6b235b333a1b"
routingPoliciesNo[ ]YesThe ids of the routing policies that this connection will use.["17f75ce7d0c7", "d42780003b36"]
credentialYes-NoId of the credential"6b235b333a1b"
propertiesYes-NoConfiguration object
baseUrlYes-NoYour rest service API url"https://your-service/api/v2/"
trustAllCertificatesYesfalseNoIf selected, no HTTPS certificate validation will be done.true

Example

POST aspire/_api/connections
{
    "type": "rest-api",
    "description": "Rest conn 3",
    "credential": "0b6fd9c8-d722-4874-aca1-e57c6eff2089",
    "properties": {
        "baseUrl": "http://aspire_manager:50443/aspire/_api"
    }
}

Update Connection


FieldRequiredDefaultMultipleNotesExample
idYes-NoId of the connection to update"d442adcab4b0",
descriptionNo-NoName of the connection object."My REST Connection"
throttlePolicyNo-NoId of the throttle policy that applies to this connection object."b3a9-6b235b333a1b"
routingPoliciesNo[ ]YesThe ids of the routing policies that this connection will use.["17f75ce7d0c7", "d42780003b36"]
credentialNo-NoId of the credential"6b235b333a1b"
propertiesNo-NoConfiguration object
(see create connection)




Example

PUT aspire/_api/connections/89d6632a-a296-426c-adb0-d442adcab4b0
{
   "id": "89d6632a-a296-426c-adb0-d442adcab4b0",
   "description": "REST connection",
     "properties": {
        "baseUrl": "http://aspire_manager:50443/aspire/_api"
    } 
}

Create Connector


For the creation of the Connector object using the Rest API check this page

Update Connector


For the update of the Connector object using the Rest API check this page

Create Seed


FieldRequiredDefaultMultipleNotesExample
seedYes-NoN/A"N/A"
typeYes-NoThe value must be "rest-api"."rest-api"
descriptionYes-NoName of the seed object."My REST Seed"
connectorYes-NoThe id of the connector to be used with this seed. The connector type must match the seed type."e3ca414b0d31"
connectionYes-NoThe id of the connection to be used with this seed. The connection type must match the seed type."e4a663fe9ee6"
workflowsNo[ ]YesThe ids of the workflows that will be executed for the documents crawled.["5696c3f0bda4"]
throttlePolicyNo-NoId of the throttle policy that applies to this seed object."6b235b333a1b"
routingPoliciesNo[ ]YesThe ids of the routing policies that this seed will use.["17f75ce7d0c7", "d42780003b36"]
tagsNo[ ]YesThe tags of the seed. These can be used to filter the seed["tag1", "tag2"]






propertiesYes-NoConfiguration object






crawlRulesyes-yesCrawl rules
conditionNo-No

Groovy condition to determine which items should execute this set of queries. Groovy script to determine if a given item should execute this set of queries.

The following matches the root item: item.getType().toString().equals('root')

The following matches any extracted entity from a scan: item.getType().toString().equals('entity')

"item.getType().toString().equals('root')"
shouldStopNofalseNoIf selected, then no other queries will be executed for the given item.true
shouldIndexNofalseNo

If selected, the item matching this crawl rule will be indexed.

true
queriesNo-yesQueries to execute inside the rule
urlTemplateYes-NoThe query to execute. If ${metadataParameter} is found inside the field it will be replaced with a specific value (for example from the scan result entity)"/serviceEndpoint/${name}"
methodYes-NoHTTP method. Options: GET, POST, PUT"GET"
body (if method POST or PUT)Yes (if method is POST or PUT)-NoThe body of the POST or PUT body. Can include parameters to be replaced as: ${param1.paramA}"{\"username\" : \"${username}\",\"password\" : \"${password}\"}"
contentType (if method POST or PUT)NojsonnoThe body mime type: json/xml/text"xml"






queryTypeyes-noThe query type: scan/metadataExtraction/binaryFetch"scan"










Scan
childrenPathNoresponseNoExtraction path. The path to the response array that contains the children to extract. For example if the response comes as {"response":{"entitities":[{1},{2},{..},{n}]}} response.entities should be used. If the array is the response, then leave this field empty"response.entities"
idFieldYes-NoChild ID field. Field within each child holding its ID. For example if each child has the following structure: {"entity":{"entityId":"abc-ef-1234"}, "att1":"val1"} then entity.entityId should be used"entity.entityId"
signatureFieldsNo-YesIncremental configuration signature fields
pathyes-noSignature Json Path (e.g. $.attribute).  Json path to extract fields to use as signature. Check out https://github.com/json-path/JsonPath for JsonPath documentation"$.attribute"




Extended signatures
extendedSignaturenofalsenoUse this option if extra requests must be executed to obtain metadata needed to calculate modifications properly. Use this option carefully as this decreases the performance upon incremental crawls linearly.true
queriesno-yesExtended signature Queries
queryTypeyes-noQuery type - must be "metadataExtraction""metadataExtraction"
urlTemplateyes-noThe query to execute"/serviceEndpoint/${metadataParameter}"
methodYes-NoHTTP method. Options: GET, POST, PUT"GET"
body (if method POST or PUT)Yes (if method is POST or PUT)-NoThe body of the POST or PUT body. Can include parameters to be replaced as: ${param1.paramA}"{\"username\" : \"${username}\",\"password\" : \"${password}\"}"
contentType (if method POST or PUT)NojsonnoThe body mime type: json/xml/text"xml"
signatureFieldsNo-YesSignature fields
pathyes-noSignature Json Path (e.g. $.attribute).  Json path to extract fields to use as signature. Check out https://github.com/json-path/JsonPath for JsonPath documentation"$.attribute"
resultFieldyes-noInternal name of metadata where the the results will be extracted into

Example

POST aspire/_api/seeds
{
  "seed":"test_db",
  "type":"rdb-snapshot",
  "description" : "RDB_TEST",
  "properties" : {
      "idColumn" : "film_id",
      "stringIdColumn" : false,
      "aclSQL" : null,
      "aclColumn" : "acl",
      "quoteId" : "doNotQuote",
      "discoverySQL" : "SELECT film_id, title FROM film",
      "extractionSQL" : "SELECT * FROM film WHERE film_id IN {IDS}",
      "fullSQL" : null"
  }
}

Update Seed


FieldRequiredDefaultMultipleNotesExample
idYes-NoId of the seed to update"2f287669-d163-4e35-ad17-6bbfe9df3778"
(see the "Create seed" for other fields)




Example

PUT aspire/_api/seeds/2f287669-d163-4e35-ad17-6bbfe9df3778
{
  "id": "2f287669-d163-4e35-ad17-6bbfe9df3778",
  "seed":"test_db",
  "description" : "RDB_TEST",
  "properties" : {
      "idColumn" : "film_id",
      "stringIdColumn" : false,
      "aclSQL" : null,
      "aclColumn" : "acl",
      "quoteId" : "doNotQuote",
      "discoverySQL" : "SELECT film_id, title FROM film",
      "extractionSQL" : "SELECT * FROM film WHERE film_id IN {IDS}",
      "fullSQL" : null"
  }
}
  • No labels