EnterpriseSearch-APP
Scope of functions
The d.velop enterprise search app is the main HTTP interface for searching your system landscape.
Using the API function
You will learn how to use the d.velop enterprise search programming interface for your own developments below.
Authentication
Some interfaces from d.velop enterprise search require a valid authentication from d.ecs identity provider.
The API documentation for d.ecs identity provider describes how you can acquire this kind of authentication.
Deploying providers
You can use this function to deploy providers. Providers are systems that can be searched. The providers are displayed in d.velop enterprise search.
The following requirements must be met before your app’s providers can be displayed in d.velop enterprise search:
- The app must be registered with the http gateway app (only on-premises).
- The app must deliver a link relation (enterprisesearchfeatures) to the enterprise search configuration.
- The app must deliver an OpenSearch description for every provider.
Deliver link relation (enterprisesearchfeatures) with the enterprise search configuration
In order for d.velop enterprise search to display the providers of your app, your app must deliver a link relation enterprisesearchfeaturesunder the base address to a GET query with the request header "Accept: application/hal+json".
Representation of the resource:
{
"_links": {
"enterprisesearchfeatures": {
"href": string
}
}
}
Property | Type | Description | Required |
---|---|---|---|
_links | Object | Link relations with the resources of an app | Yes |
_links.enterprisesearchfeatures | Object | Object that contains a path to the enterprise search configuration of an app | Yes |
_links.enterprisesearchfeatures.href | String | Path via which the enterprise search configuration should be queried | Yes |
Below is an example of this kind of response in JSON format:
{
"_links": {
"enterprisesearchfeatures": {
"href": "/exampleapp/enterprisesearchfeatures"
}
}
}
Description of the enterprise search configuration
Via the URL href, a JSON object with the following specifications must be returned in the event of a GET query with request header "Accept: application/hal+json".
Representation of the resource:
{
"name": string,
"translatedName": map[string]string,
"iconUrl": string,
"loginUrl": string,
"loggedInUrl": string,
"configUrl": string,
"provider": [
{
"type": "OPENSEARCH",
"iFrameCompatible": boolean,
"loginUrl": string,
"loggedInUrl": string,
"configUrl": string,
"iconUrl": string,
"description": string,
"activeByDefault": boolean
},
{
"type": "OPENSEARCH",
"iFrameCompatible": boolean,
"loginUrl": string,
"loggedInUrl": string,
"configUrl": string,
"iconUrl": string,
"description": string,
"activeByDefault": boolean
}
]
}
Property | Type | Description | Required | Comment |
---|---|---|---|---|
name | String | Contains the parent name for the provider (e.g. d.3ecm, Google or Microsoft) | Yes | |
translatedName | mapStringString | Contains translations for the superordinate name of the providers | No | If there is no corresponding translation, the Name property is used. |
iconUrl | String | Contains the URL for an icon of the app | Yes | URL for an icon with size 32 x 32 pixel in PNG or SVG format. |
loginUrl | String | Contains the URL for a resource that performs the authentication in the external system | No, optional | |
loggedInUrl | String | Contains the URL for a resource that specifies whether the current user is authenticated in the external system | No, optional | |
configUrl | String | Contains the URL for a resource that returns the configuration entries | No, optional | |
provider | List | Provider contains one or more provider objects | Yes | |
provider.type | String | Contains the type of provider description | Yes | The following types of provider descriptions are supported: OPENSEARCH |
provider.iFrameCompatible | Boolean | Specifies whether the search results can be displayed in an iFrame (within the ShellApp). | Yes | |
provider.loginUrl | String | Contains the URL to a resource that performs the authentication in the third-party system. If this URL is specified, the global loginUrl is ignored. | No, optional | |
provider.loggedInUrl | String | Contains the URL to a resource that indicates whether the current user is authenticated on the third-party system. If this URL is specified, the global loggedInUrl is ignored. | No, optional | |
provider.configUrl | String | Contains the URL for a resource that returns the configuration entries for a provider | No, optional | |
provider.iconUrl | String | Contains the URL for a provider icon If this URL is specified, the icon from description is ignored. | No, optional | |
provider.description | String | Contains the URL for the OpenSearch description file (.osdx) | Yes | You can find more information about the structure of the OpenSearch description file [here] |
provider.activeByDefault | Boolean | Specifies whether the provider should be automatically available for selection when EnterpriseSearch is first started. This requires a working configuration on the provider's side. | No, optional |
Below is an example of an enterprise search configuration with a provider.
{
"name": "Awesome App",
"translatedName": {
"de": "Super App",
"en": "Awesome App"
},
"iconUrl": "/exampleapp/path/to/icon-thumbsup.png",
"loginUrl": "/exampleapp/oauth2/login",
"loggedInUrl": "/exampleapp/oauth2/loggedIn",
"configUrl": "/exampleapp/config/features",
"provider": [
{
"type": "OPENSEARCH",
"iFrameCompatible": true,
"loginUrl": "/exampleapp/oauth2/login?id=4711",
"loggedInUrl": "/exampleapp/oauth2/loggedIn?id=4711",
"configUrl": "/exampleapp/config/features?id=4711",
"iconUrl": "/exampleapp/static/files/favicon.png",
"description": "/exampleapp/opensearch/description",
"activeByDefault": false
}
]
}
Description of the login resource
Via the URL loginUrl, the user must be redirected to the external system in the event of a GET query. The authentication information must be saved in the corresponding app for the current user and used accordingly in a search.
info: The URL is only called if the LoggedIn resource responds with the HTTP status code 401 (UNAUTHORIZED).
Description of the LoggedIn resource
Via the URL loggedInUrl, a check must be performed in the event of a GET query to determine whether the current user has access to the external system. The following return values are allowed:
HTTP status code | Description |
---|---|
200 | The user is authenticated and can perform a search in the external system |
401 | The user is not authenticated |
Description of the config resource
Via the URL ConfigUrl, a JSON object with the following specifications must be delivered in the event of a GET query with the request header "Accept: application/hal+json".
Representation of the resource:
[
{
"caption": string,
"description": string,
"href": string,
"keywords": [string, string, ...],
"configurationState": number
}
]
Property | Type | Description | Required | Comment |
---|---|---|---|---|
root | List | List of all menu options | Yes | |
root.caption | String | Menu option heading | Yes | |
root.description | String | Description of the menu option | Yes | |
root.href | String | Link to the configuration after the menu option | Yes | |
root.keywords | String | List of keywords that describe the menu option to enable a search for the menu option | No, optional | |
root.configurationState | Number | Status of the configuration | Yes | 0: The configuration is complete. 1: The configuration is incomplete and should be completed. |
You will find an example of a config resource below.
[
{
"caption": "Awesome App configuration",
"description": "Short description of the configuration",
"href": "/exampleapp/oauth2/config",
"keyWords": ["oauth2", "awesome", "login"],
"configurationState": 0
}
]
Communicating changes in the search provider configuration
You can use this function to update the search provider listing from within your configuration interface.
Let us assume your configuration option has a status with errors, for example, because connection data is not correct. In this case, the administrator navigates to the configuration interface by choosing Manage search provider. After you have corrected the connection data, you want to reload the search provider listing.
Reloading the search provider - this is how it works
- Use the API of the shell app to send a ResourceEvent.
- Enter “changed” under Eventname. The URI transmitted must correspond to the currently displayed configuration option.
- You can find information about sending ResourceEvents in the API documentation for the Shell app.
Your enterprise search configuration is retrieved again.
Description of the OpenSearch description file (.osdx)
Below provider.description, you must specify a URL that returns an OpenSearch description file.
OpenSearch description file:
<?xml version="1.0" encoding="UTF-8" ?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:sru="http://a9.com/-/opensearch/extensions/sru/2.0/">
<ShortName>E-Mails</ShortName>
<Description>Enterprise Search Provider for Mircosoft Exchange (E-Mails)</Description>
<Url type="application/rss+xml" template="https://wathe02.d-velop.de/exchangeadapter/search/email?q={searchTerms}&p={startPage}&c={count}">Exchange</Url>
<Url type="application/sru+xml" template="https://wathe02.d-velop.de/exchangeadapter/search/email?q={query}&p={startRecord}&c={maximumRecords}">Exchange</Url>
<Image>/exchangeadapter/static/images/favicon.png</Image>
</OpenSearchDescription>
Explanation of the properties:
Property | Type | Description | Required |
---|---|---|---|
ShortName | String | Short description of the provider. The user uses this description to decide whether they would like to perform a search in the provider. | Yes |
Description | String | Short explanation of what this provider searches through. | No |
Url | String | URL template that is called during a search | Yes |
Url.type | String | Output format of the search results. application/rss+xml and application/sru+xml are interpreted. The type application/sru+xml must be offered in order to be able to return facets. | Yes |
Url.template | String | URL that is called during the search. The possible placeholders can be taken from the following table. | Yes |
Image | String | URL for an icon for the provider | No |
Explanation of the placeholders:
Placeholder | Description | Format |
---|---|---|
{searchTerms} | User’s search term | application/rss+xml |
{startPage} | Index of the page that should be returned, starting with 1. | application/rss+xml |
{count} | Maximum number of search results that should be returned per page. | application/rss+xml |
{query} | User’s search term in CQL format, including filterings | application/sru+xml |
{startRecord} | Index of the entry (record) that should be returned next, starting with 1. | application/sru+xml |
{maximumRecords} | Maximum number of search results that should be returned per page. | application/sru+xml |
CQL format
If you offer the format application/sru+xml as an output format, the placeholder {query} is transferred in CQL format. This format uses the facets and search terms that were previously returned to transfer both the user’s search term and additional filterings to you. d.velop enterprise search uses only a small part of the CQL format, which is why it is enough to support the following formats:
- cql.anywhere=(“<User search term>“)
- cql.anywhere=(“<User search term>“) and <facetedResults.facet.index>=(“<facetedResults.facet.terms.query>“)
- cql.anywhere=(“<User search term>“) and <facetedResults.facet.index>=(“<facetedResults.facet.terms.query1>“ or “<facetedResults.facet.terms.query2>“)
- cql.anywhere=(“<User search term>“) and <facetedResults.facet.index1>=(“<facetedResults.facet.terms.query1>“ or “<facetedResults.facet.terms.query2>“) and <facetedResults.facet.index>=(“<facetedResults.facet.terms.query3>“ or “<facetedResults.facet.terms.query4>“)
The placeholders <facetedResults.facet.index> and <facetedResults.facet.terms.query1> correspond to the values of the search result that was previously returned. You can find additional detailed information about the placeholders here.
Search results in application/rss+xml
Below you will find an example of what a search result in the format application/rss+xml can look like.
<?xml version="1.0" encoding="UTF-8"?>
<rss version="" media="" dvelop="" win="">
<channel>
<item>
<title>Example Title</title>
<link>https://outlook.office365.com/owa/?ItemID=ITEM-ID</link>
<description>Short abstract of the result item</description>
<pubDate>Mon, 16 Sep 2019 12:58:01 UTC</pubDate>
<thumbnail url="https://provider.org/resultitem.png"></thumbnail>
<property id="sender" name="Sender" displayValue="richard.roe@mycompany.com" value="richard.roe@mycompany.com">Sender</property>
<property id="reciever" name="Reciever" displayValue="john.doe@mycompany.com" value="john.doe@mycompany.com">Reciever</property>
<property id="dvelop_es:IFrameCompatible" name="dvelop_es:IFrameCompatible" displayValue="false" value="false">dvelop_es:IFrameCompatible</property>
<enclosure type="application/vnd.ms-outlook" url="https://outlook.office365.com/owa/?ItemID=AAMkAGZlZGU4NjdhLTNhNjQtNDkwNC1iMjk3LTU3YzA2MDQxOTU3OQBGAAAAAADWB3I3vPVHT7Za7LDOmNb%2FBwDRZC%2BUns%2BPQ6RauNKrXSp3AAAABS2GAABvU1ftEGTNTaVOlXfj0CFuAAAkGNWEAAA%3D&exvsurl=1&viewmodel=ReadMessageItem" length="">Neues Dokument in Google Drive</enclosure>
</item>
...
</channel>
</rss>
Properties | Description | Required |
---|---|---|
item | One entry (item) is returned for each result found | No |
item.title | Title of the result found | Yes |
item.link | Link to the result | Yes |
item.description | Summary that was created based on the search entry. | No |
item.pubDate | Last editing date of the result in the format RFC 822 | Yes |
item.thumbnail | Special icon for the result. The provider’s icon is displayed as an alternative. | No |
item.thumbnail.url | URL for the icon | No |
item.property | Listing of all properties of the result | No |
item.property.id | ID that uniquely identifies the property. You have the option of overriding the view in the new window by using the property dvelop_es:IFrameCompatible. | Yes |
item.property.name | Description of the property in the user’s language | Yes |
item.property.displayValue | Value of the property, translated or formatted for the user, if necessary | Yes |
item.property.value | Value of the property | Yes |
item.enclosure | Attachment that provides a better description of the result found. | Yes |
item.enclosure.type | MimeType of the result | Yes |
item.enclosure.url | Link to the result | Yes |
Search results in application/sru+xml
Below you will find an example of what a search result in the format application/sru+xml can look like.
<?xml version="1.0" encoding="UTF-8" ?>
<searchRetrieveResponse
xmlns:ns="http://docs.oasis-open.org/ns/search-ws/diagnostic"
xmlns="http://docs.oasis-open.org/ns/search-ws/sruResponse" xsi:schemaLocation="http://docs.oasis-open.org/search-ws/searchRetrieve/v1.0/os/schemas/sruResponse.xsd"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<version>1.1</version>
<numberOfRecords>2</numberOfRecords>
<records>
<record>
<recordData>
<dc:title>Example Title</dc:title>
<dc:description>Short abstract of the result item</dc:description>
<dc:date>2019-09-16T12:58:01Z</dc:date>
<dc:format>application/vnd.ms-outlook</dc:format>
<dc:identifier>https://outlook.office365.com/owa/?ItemID=ITEM-ID</dc:identifier>
<property id="sender" name="Sender" displayValue="richard.roe@mycompany.com" value="richard.roe@mycompany.com">Sender</property>
<property id="reciever" name="Reciever" displayValue="john.doe@mycompany.com" value="john.doe@mycompany.com">Reciever</property>
<icon>https://provider.org/resultitem.png</icon>
</recordData>
</record>
...
</records>
<facetedResults
xmlns="http://docs.oasis-open.org/ns/search-ws/facetedResults" schemaLocation="http://docs.oasis-open.org/ns/search-ws/facetedResults schema.xsd" xsi="http://www.w3.org/2001/XMLSchema-instance">
<facet>
<facetDisplayLabel>Sender</facetDisplayLabel>
<index>Sender</index>
<terms>
<term>
<actualTerm>richard.roe@mycompany.com</actualTerm>
<count>75</count>
<query>richard.roe@mycompany.com</query>
</term>
<term>
<actualTerm>roe.richard@mycompany.com</actualTerm>
<count>15</count>
<query>roe.richard@mycompany.com</query>
</term>
</terms>
</facet>
...
</facetedResults>
</searchRetrieveResponse>
Properties | Description | Required |
---|---|---|
record | One entry (record) is returned for each result found | No |
record.recordData.dc:title | Title of the result found | Yes |
record.recordData.dc:description | Summary that was created based on the search entry. | No |
record.recordData.dc:date | Last editing date of the result in the format RFC 3339 | Yes |
record.recordData.dc:format | MimeType of the result | Yes |
record.recordData.dc:identifier | Link to the result | Yes |
record.recordData.property | Listing of all properties of the result | No |
record.recordData.property.id | ID that uniquely identifies the property. You have the option of overriding the view in the new window by using the property dvelop_es:IFrameCompatible. | Yes |
record.recordData.property.name | Description of the property in the user’s language | Yes |
record.recordData.property.displayValue | Value of the property, translated or formatted for the user, if necessary | Yes |
record.recordData.property.value | Value of the property | Yes |
record.recordData.icon | Special icon for the result. The provider’s icon is displayed as an alternative. | No |
facetedResults.facet | One entry (facet) is returned for each facet | No |
facetedResults.facet.facetDisplayLabel | Display name of the facet | Yes |
facetedResults.facet.index | ID of the facet | Yes |
facetedResults.facet.terms | Listing of the terms for the facet | Yes |
facetedResults.facet.terms.actualTerm | Display name of the current search term | Yes |
facetedResults.facet.terms.count | Number of hits with this search term | Yes |
facetedResults.facet.terms.query | ID or technical description for the search term | Yes |
Perform search
With this function, you can start a search with all providers that are known in d.velop enterprise search and use the results in your app. The search is performed using the format OpenSearch. Learn more about how you can get the OpenSearch description file.
OpenSearch description file
The URL /enterprisesearch/opensearch returns an HTML page that you can use to download the two OpenSearch description files.
Download description file
The link leads to an OpenSearch description file, which you can use according to the format OpenSearch.
Alternatively, you can also call the description file directly by querying the following URL:
/enterprisesearch/opensearch/description
Download description file for Windows
The link leads to an OpenSearch description file that uses the d.ecs identity tunnel to cache the cookie. The description file can be used with the format OpenSearch.
Use this description file to integrate d.velop enterprise search into your local file explorer.
Alternatively, you can also call the description file directly with the following URL:
/enterprisesearch/opensearch/description?identitytunnel=true
Embedding the enterprise search app in third-party applications
You can adjust the display by configuring the following settings so you can easily use d.velop enterprise search from any third-party application.
URL for embedding the enterprise search app
You can use the following URL to embed the company-wide search without a direct search query:
/enterprisesearch/search/
Using parameters to influence the behavior
You can add parameters to the base URL to control the behavior of the embedded company-wide search. The following table contains the possible parameters.
Parameter | Description | Example |
---|---|---|
q | With the parameter q, you can transfer a search term that is directly searched for in the company-wide search when the call is made. You need to transfer the search term in URL-coded form. | /enterprisesearch/search?q=search term |
p | You can use the parameter p to limit the providers used to execute the search. You can find the ID of the provider in the provider management. | /enterprisesearch/search?p=ProviderId |
d | Using the parameter d you can limit your search results to a certain time range in advance. The start and end time must be passed in a JSON and encoded as a URL. | /enterprisesearch/search?d=DateFilterJSON |
minimalView | You can use the parameter minimalView to specify that the display should be lightweight and minimalist. No logo is displayed. | /enterprisesearch/search?minimalView |
hideProviderSelection | You can use the parameter hideProviderSelection to determine whether the provider selection should be displayed. Possible values: start (the provider selection on the start page is hidden), all (the provider selection on the start page and on the results page is hidden), | /enterprisesearch/search?hideProviderSelection=start |
newTab | With the parameter newTab, you can specify that the hit list should open in a new tab after a search. | /enterprisesearch/search?newTab |
providerView | Using the parameter providerView you can specify how the provider selection on the results page is displayed. Possible values: dropdown (default value), smallcards, bigcards | /enterprisesearch/search?providerView=bigcards |
Example:
/enterprisesearch/search?q=Suchbegriff&p=598238e4ed7df5505cdc9304e3371b88-7f0b4762571d05f45f62e4d43b8f6f05&hideProviderSelection&newTab&minimalView
Options for using the parameter p
You can use the parameter p to specify which provider should be used to execute the search. That way, you determine the specific ID in the configuration interface of the company-wide search:
- Navigate to Manage search provider.
- Open the context menu of the provider.
- Copy the ID.
You can transfer several providers if you use a hyphen as a separator.
/enterprisesearch/search?q={search term}&p={ProviderID1-ProviderID2}
If you want to use all providers for the search, set the parameter p=””.
If you do not specify the parameter p, the company-wide search performs the search using the last user-specific provider selection made by the user.
Using the parameter d
The parameter d requires a JSON with the following properties:
Property | Description | Example |
---|---|---|
start | Defines the start time of the search in ISO-8601 format | "2020-08-01T00:00:00.000Z" |
end | Defines the end time of the search in ISO-8601 format | "2020-09-30T23:59:59.999Z" |
Start time must be before the end time.
Adding own functions
Extension points give you the option or adding your own functions to d.velop enterprise search. For example, you can add context actions to the detail view.
Preparing your app
So that extensions for context actions are found, your app must provide an interface, which you will learn about below. d.velop enterprise search uses the HTTP GET
request concept for the root resource (systemBaseUri
path with the app name) of apps that provide extensions. All apps that are registered in the HttpGateway app are queried.
Providing the URL for extensions
The administrator can manually update root resources of apps on the page /enterprisesearch/extensions
. An app’s response is checked in terms of the link relation enterprisesearchextensions
. This link relation is a signal that the app offers extensions for d.velop enterprise search. d.velop enterprise search executes an HTTP GET
query for the specified links and expects a normed JSON object with the HTTP status code 200
from the responding app.
Request
GET /myapp/
Accept: application/hal+json
Response
HTTP/1.1 200 OK
Content-Type: application/hal+json
{
"_links" : {
"enterprisesearchextensions" : {
"href" : "/myapp/enterprisesearchextensions"
}
}
}
Displaying extension points
You can display the registered extension points. To do so, call the URL /enterprisesearch/extensions
in the browser.
Request
GET /enterprisesearch/extensions
Accept: text/html
Adding context actions to the detail view
You can add context actions to the detail view for a search result. These context actions are also summarized for a search result in the menu for context actions. The app that wants to provide an extension must return an HTTP response in JSON format under the link relation enterprisesearchextensions
. The following information must be provided for every context action:
- Context of the extension point:
ESObjectDetailsContextAction
- Activation conditions for displaying the context action
- Display name of the context action in the available translations
- Link to the symbol of the context action
- The action that should be executed if the user has clicked on the context action. This is where you need to specify a relative link that is called by d.velop enterprise search via
HTTP GET
.
Example
The example shows how you can structure the HTTP response of the link relation enterprisesearchextensions
to add a context action using an extension point ESObjectDetailsContextAction
. You define different properties for every context action.
{
"extensions": [
{
"id": "myapp.openExternalApp",
"activationConditions": [{
"propertyId": "mimetype",
"operator": "or",
"values": ["application/pdf","image/jpeg"]
}],
"captions": [{
"culture": "de",
"caption": "Externe Applikation öffnen"
},
{
"culture": "en",
"caption": "Open external application"
}],
"context": "ESObjectDetailsContextAction",
"uriTemplate": "/myapp/dosomething?id={esobject.attributes.document_id}",
"iconUri": "/myapp/images/goto.png",
"openInNewWindow": true
}]
}
Property | Type | Description | Required |
---|---|---|---|
id | String | Stipulate the unique technical name that is used to differentiate the extension from other extensions. | Yes |
activationConditions | Object array | For every extension, the application communicates the activation conditions under which the context action should be displayed. A context action is displayed when all individual conditions apply. If the list of activation conditions does not contain an entry, the extension is generally active. Enter the activation conditions as an array. | No |
activationConditions.propertyId | String | Specifies the property for which the activation condition is checked. You can find possible values further below. | Yes |
activationConditions.operator | String | Specifies how an individual condition is evaluated. You can choose the following operators: or: A ´or´ condition is fulfilled if the current value of the property corresponds to one of the values. Capitalization is not considered. notOr: A notOr condition is fulfilled if the current value of the property does not correspond to any of the values. Capitalization is not considered. | Yes |
activationConditions.values | String array | Specifies the values in the form of an array, and they are compared with the value of the propertyId . | Yes |
captions | Object array | Every context action communicates the name under which the context action is displayed. You can also consider different languages. If you do so, you need to specify the language-dependent names as an array. Enter the translation for the following languages so the language packages are completely compatible: cs (Czech), da (Danish), de (German), en (English), es (Spanish), fr (French), hr (Croatian), it (Italian), nl (Dutch), pl (Polish), sr (Serbian) | Yes |
captions.culture | String | Specifies the language of the context action. The information contains the language code (e.g., en) and, optionally, an additional region code (e.g., en-GB). | Yes |
captions.caption | String | Specifies the language-dependent name of the context action. | Yes |
context | String | Specifies the desired extension point to which the context action should be added. Enter the following value for the detail view for context actions: ESObjectDetailsContextAction | Yes |
uriTemplate | String | Defines the URL that should be called when the user clicks on the context action. You can define placeholders to receive additional information about the current context. The actual properties replace the placeholders when the extension is called. The properties are transferred to the URI in URL-coded form. You can find possible placeholders further below. | Yes |
iconUri | String | Specifies the link to the symbol displayed for the context action. The file for the symbol must be in PNG format. | Yes |
openInNewWindow | Boolean | Specifies whether the context action can be opened within d.3one (false) or whether a new window must be opened for it (true). false is configured by default. | No |
You can use the following values to define context actions for the detail view in the following areas:
- A: Definition of activation conditions for the property
propertyId
- P: Defining placeholders in the property
uriTemplate
Subject | Value | Usage | Description |
---|---|---|---|
Provider | provider.id | A/P | ID of the search provider. The ID can be queried from the resource /enterprisesearch/provider . |
Provider | provider.name | A/P | Name of the search provider, e.g. (productive system). The name can be queried from the resource /enterprisesearch/provider . |
Provider | providerconfig.id | A/P | ID of the provider configuration. The ID can be queried from the resource /enterprisesearch/provider . |
Provider | providerconfig.name | A/P | Name of the provider configuration, e.g., d.3 ecm. The name can be queried from the resource /enterprisesearch/provider . |
User | user.idp.group_id | A/P | Activation condition: GUID of a user group of the identity provider app in which the user who is currently logged on is a member. Placeholder uriTemplate : List of the GUIDs of the user groups of the identity provider app in which the user who is currently logged on is a member as an array in JSON format. |
Element properties | esobject.title | A/P | Search result title |
Element properties | esobject.mime_type | A/P | MIME type of the search results (e.g. image/jpeg or application/vnd.ms-outlook). |
Element properties | esobject.date | P | Last change date of the search result in the format RFC822. |
Element properties | esobject.link | P | Link to the search result |
Element properties | esobject.iframe_compatible | A/P | Contains information about whether the search result can be displayed in an IFrame. Only the first value entered is considered. |
Element properties | esobject.attributes.<attributeId> | A/P | Value of the attribute with the ID <attributeId> |
Manually adding extension points
By making the following HTTP calls, you can manually add, edit or remove an extension.
Add
POST /enterprisesearch/extensions
Accept: application/json
Body:
{
"id": "myapp.openExternalApp",
"activationConditions": [{
"propertyId": "mimetype",
"operator": "or",
"values": ["application/pdf","image/jpeg"]
}],
"captions": [{
"culture": "de",
"caption": "Externe Applikation öffnen"
},
{
"culture": "en",
"caption": "Open external application"
}],
"context": "ESObjectDetailsContextAction",
"uriTemplate": "/myapp/dosomething?id={esobject.attributes.document_id}",
"iconUri": "/myapp/images/goto.png",
"openInNewWindow": true
}
Edit
PUT /enterprisesearch/extensions/<extension.id>
Accept: application/json
Body:
{
"id": "myapp.openExternalApp",
"activationConditions": [{
"propertyId": "mimetype",
"operator": "or",
"values": ["application/pdf","image/jpeg"]
}],
"captions": [{
"culture": "de",
"caption": "Externe Applikation öffnen"
},
{
"culture": "en",
"caption": "Open external application"
}],
"context": "ESObjectDetailsContextAction",
"uriTemplate": "/myapp/dosomething?id={esobject.attributes.document_id}",
"iconUri": "/myapp/images/goto.png",
"openInNewWindow": true
}
Remove
DELETE /enterprisesearch/extensions/<extension.id>
Accept: application/json