Connect an AI assistant
Your AI assistant can read this documentation directly, so it answers from the current content instead of guessing. Add one of the servers below to your client — they use the Model Context Protocol (MCP). Each one covers a different body of content, so add the one you need.
The catalog did not load. Refresh the page to try again.
Loading…
{{server.name}}
{{server.summary}}
{{server.documentCount.toLocaleString()}} pages Not published to this site
- Name
-
{{server.name}} - URL
-
{{mcpServerUrl(server.path)}}
| Tool | What it does |
|---|---|
{{tool.name}} |
{{part.text}}{{part.text}} |
How can we help?
Keep typing - a search needs at least two characters
Searching in {{docApp.searchFilterBySpecificBookTitle}}
Searching for:
{{docApp.searchResultFilteredItems.length}} results for:
{{docApp.currentResultsSearchText}}
in {{docApp.searchFilterBySpecificBookTitle}}
Found {{docApp.searchResponse.totalResultsAvailable}} matches. Showing the top {{docApp.searchResponse.results ? docApp.searchResponse.results.length : 0}}. Use a more specific search to further narrow down the results.
No documentation pages match this search, so all content types are shown.
Most matches are in {{docApp.searchDocTypeRescue.best.name}}.
There is no book with the ID "{{docApp.searchBookRescue.bid}}", so the book filter from this link was ignored and results from all books are shown.
You have an odd number of " characters in your search terms - each one needs closing with a matching " character!
-
{{resultItem.title}} {{resultItem.matchedBy === 'semantic' ? 'semantic' : (resultItem.matchedBy === 'both' ? 'keyword + semantic' : 'keyword')}}
{{resultItem.url}}
{{docApp.libraryHomeViewProduct.title || docApp.libraryHomeViewProduct.id}}
{{docApp.libraryHomeViewProduct.description}}
{{group.title || group.id}}
{{group.description}}
Configuration Example - Orca Scan
- Article
- Wed Sep 16 2026
- 8 minutes to read
- 1 contributors
The following is an example of the SourceConfig, AssetTypes and data mapping configuration that could be used to import asset records from an Orca Scan sheet.
The utility reads the sheet using the Orca Scan live data URL feature, requesting the JSON flavor of the feed. The live data URL is read directly by the utility from the computer that it runs on, so that computer must be able to reach https://api.orcascan.com over HTTPS.
Important
The configuration example is provided as-is, and may not be suitable to import your organization’s Orca Scan data. The example points at the public Orca Scan demonstration sheet. We highly recommend that an Orca Scan administrator review the sheet ID, returned columns and mappings against your Orca Scan account before using this in a production environment.
Note
Access to a sheet’s live data URL is controlled by the sheet ID in the URL, and the feed does not require a username, password or API key. For this reason the orcascan data source does not use a KeySafe key, and KeysafeKeyID can be omitted from, or set to 0 in, the configuration file. Treat your sheet ID with the same care as you would a password.
Enabling the live data URL for a sheet
The live data URL is turned off by default for every Orca Scan sheet. Before the utility can read a sheet, a user with access to that sheet must enable its live data URL in the Orca Scan web app:
- Log in to the Orca Scan web app and open the sheet that holds the asset data you want to import.
- Click
Integrationsin the top menu. - Find the
Live Data URLintegration and toggle it on. The sheet’s live data URL is then displayed, in the formathttps://api.orcascan.com/sheets/[sheet-id]. - Click
Save. - Copy the
[sheet-id]portion of the URL into theSheetIDoption of your import configuration. Alternatively, copy the whole URL intoEndpointURLand leaveSheetIDempty.
Repeat these steps for each sheet you want to import from. The full Orca Scan instructions, including the query parameters that the OrcaScan configuration options map to, are in the Orca Scan live data guide.
Tip
You can confirm that the URL is working, and see the exact column names to use in your field mappings, by opening https://api.orcascan.com/sheets/[sheet-id].json in a browser on the computer that will run the import. Turning the toggle off again in Orca Scan disables the URL and stops the import from reading the sheet.
{
"LogSizeBytes": 1000000,
"HornbillUserIDColumn": "h_user_id",
"HornbillNotifyUsers": [
"user",
"admin"
],
"SourceConfig": {
"Source": "orcascan",
"OrcaScan": {
"EndpointURL": "https://api.orcascan.com/sheets",
"SheetID": "sJ0KYsnp-9b7Rl7i",
"Columns": [],
"SortBy": "",
"SortOrder": "asc",
"Limit": 0,
"History": false,
"From": "",
"Deltas": false,
"ZeroDeltaBase": false,
"DateTimeFormat": "YYYY-MM-DD HH:mm:ss",
"Timezone": "",
"GPS": "city, country",
"AdditionalParams": {},
"Headers": {},
"MaxRetries": 3,
"ColumnAliases": {
"Serial Number": "SerialNumber"
},
"SanitizeColumnNames": true,
"TrimValues": true
}
},
"AssetTypes": [
{
"AssetType": "Desktop",
"OperationType": "Both",
"PreserveShared": false,
"PreserveState": false,
"PreserveSubState": false,
"PreserveOperationalState": false,
"OrcaScan": {
"Columns": [
"Barcode",
"Name",
"Quantity",
"Description",
"Location",
"Date"
]
},
"AdditionalFilters": [
{
"Field": "Name",
"Operator": "NOTEMPTY",
"Value": ""
}
],
"AssetIdentifier": {
"SourceColumn": "Barcode",
"Entity": "Asset",
"EntityColumn": "h_asset_tag"
}
}
],
"AssetGenericFieldMapping": {
"h_name": "{{.Name}}",
"h_asset_tag": "{{.Barcode}}",
"h_description": "From Orca Scan: {{.Description}}",
"h_location": "{{.Location}}",
"h_notes": "Quantity: {{.Quantity}}\nLast scanned: {{.Date}}"
},
"AssetTypeFieldMapping": {
"h_name": "{{.Name}}",
"h_last_logged_on": "{{.Date}}"
}
}
How the sheet is read
- Each row in the sheet becomes one source record. The columns of the sheet become the fields that can be used in the
AssetGenericFieldMappingandAssetTypeFieldMappingtemplates, for example{{.Barcode}}. - Every value in the live data feed is returned by Orca Scan as text, including numbers and dates. Use the data transformation template functions described in the Configuration article if a value needs to be converted before it is written to Hornbill.
- The live data URL returns the whole sheet in a single response. It does not page through results, so use the
ColumnsandLimitoptions to keep the response to the data you need. - Orca Scan can only filter the feed by barcode on the server. To import a subset of rows based on any other column, use the
AdditionalFiltersoption against the asset type, as shown in the example above.
Sheet columns with spaces in their names
Orca Scan sheet columns are often given display names that contain spaces, for example Serial Number. A Go template cannot reference such a column directly as {{.Serial Number}}. You have three options:
- Set
SanitizeColumnNamestotrue. Each column is then also made available under a template-friendly name, where any run of characters that are not letters, numbers or underscores is replaced by a single underscore.Serial Numberbecomes{{.Serial_Number}}. - Add an entry to
ColumnAliases. The example above makesSerial Numberavailable as{{.SerialNumber}}. - Use the index form in the template:
{{index . \"Serial Number\"}}.
The original column name is always kept, so existing mappings are not affected by enabling either option.
Dates and locations
DateTimeFormatasks Orca Scan to return date and time columns in the given format, using Orca Scan’s own tokens (YYYY,MM,DD,HH,mm,ss). The valueYYYY-MM-DD HH:mm:ssshown in the example returns dates in the exact format that Hornbill date time fields, such ash_last_logged_on, expect, so no further conversion is needed in the mapping. IfDateTimeFormatis not set, dates are returned in ISO 8601 format (2017-01-01T18:38:17Z) and must be converted with thedate_conversiontemplate function before being mapped to a date time field.Timezoneshifts the returned dates by the given UTC offset, for example+01:00or-10:00.GPScontrols how GPS columns are returned. Orca Scan supports the tokenslat,lng,city,countryandcode(country code), combined in any order, for examplecity, countryorlat, lng. IfGPSis not set, GPS columns are returned aslatitude, longitude.
Revision history
When History is set to true, Orca Scan returns every recorded change to every row rather than the current values, so the feed can contain many rows for the same barcode. The utility keys source records by the AssetIdentifier SourceColumn, so where more than one row shares the same identifier the last row returned is the one that is imported. Combine History with SortBy, SortOrder and From to control which revision that is. Revision history older than the retention period of your Orca Scan subscription is not available in the feed.
Configuration options
The OrcaScan object can be provided in two places:
SourceConfig>OrcaScan- the default options for every asset type in the configuration file.AssetTypes>OrcaScan- options for one asset type. Any option set here overrides the same option fromSourceConfig, which allows each asset type to read a different sheet, or a different set of columns from the same sheet. Boolean options are enabled if they are set totrueat either level.AdditionalParams,HeadersandColumnAliasesare merged, with the asset type entries taking precedence.
| Option | Type | Description |
|---|---|---|
EndpointURL |
string |
The base Orca Scan sheets endpoint. Defaults to https://api.orcascan.com/sheets. May instead be set to the full live data URL of a sheet, with or without the .json suffix, in which case SheetID should be left empty. The utility always requests the JSON flavor of the feed. |
SheetID |
string |
The ID of the Orca Scan sheet to read, as shown in the sheet’s live data URL. Appended to EndpointURL. |
Columns |
array |
The sheet columns to return. Only these columns are available to the field mappings. Leave empty to return every column. |
Barcode |
string |
Only return the row (or rows, when History is enabled) with this barcode value. |
SortBy |
string |
The column to sort the returned rows by. |
SortOrder |
string |
asc or desc. |
Limit |
integer |
The maximum number of rows to return. 0 returns every row. |
History |
boolean |
Return all historical changes to the sheet rather than the current values. Defaults to false. See Revision history. |
From |
string |
Only return history from this date onward, in ISO 8601 format, for example 2019-06-12T00:00:00. Only used when History is true. |
Deltas |
boolean |
Return the change in numeric columns between revisions rather than the recorded values. Only used when History is true. |
ZeroDeltaBase |
boolean |
Report the first delta of each numeric column as 0 rather than as its first value. Only used when Deltas is true. |
DateTimeFormat |
string |
The format that Orca Scan should return date and time columns in, using Orca Scan date tokens. See Dates and locations. |
Timezone |
string |
UTC offset to apply to date and time columns, for example +01:00. |
GPS |
string |
The format that Orca Scan should return GPS columns in, for example city, country. |
AdditionalParams |
object |
Any further query string parameters to add to the request, as "name": "value" pairs. These are added after the options above and override them where the names match, so new Orca Scan parameters can be used before this documentation is updated. |
Headers |
object |
Additional HTTP request headers to send with the request, as "name": "value" pairs. Not needed for the standard live data URL. |
MaxRetries |
integer |
The number of attempts made if Orca Scan responds with 429 Too Many Requests or a server error. The wait between attempts honors the Retry-After response header. Defaults to 3. |
ColumnAliases |
object |
"Sheet column name": "alias" pairs. Each aliased column is also made available to the mapping templates under its alias. See Sheet columns with spaces in their names. |
SanitizeColumnNames |
boolean |
Also make each column available under a template-friendly name. Defaults to false. |
TrimValues |
boolean |
Remove leading and trailing white space from every value before it is mapped. Defaults to false. |
- Version {{docApp.book.version}}
- Node {{docApp.node}} / {{docApp.build}}