Repository files navigation

scanii-java

Official Java SDK for the Scanii content processing API.

SDK Principles

  1. Light. Zero runtime dependencies, stdlib only.
  2. Up to date. Always current with the latest Scanii API.
  3. Integration-only. Wraps the REST API — retries, concurrency, and batching are the caller's responsibility.

Install

<dependency>
<groupId>com.scanii</groupId>
<artifactId>scanii-java</artifactId>
<version>8.4.0</version>
</dependency>

Quickstart

importcom.scanii.ScaniiClient;
importcom.scanii.ScaniiClients;
importcom.scanii.ScaniiTarget;
importcom.scanii.models.ScaniiProcessingResult;
importjava.nio.file.Paths;
ScaniiClientclient = ScaniiClients.createDefault(ScaniiTarget.US1, "your-api-key", "your-api-secret");
ScaniiProcessingResultresult = client.process(Paths.get("/path/to/file"));
System.out.printf("findings: %s%n", result.getFindings());

API reference

MethodDescription
process(Path content)Synchronous file scan
process(InputStream content)Synchronous stream scan
process(Path content, Map<String,String> metadata)Scan with metadata
process(Path content, String callback, Map<String,String> metadata)Scan with callback
processAsync(Path content)Async-on-server scan, returns pending result
processFromUrl(URI location)Synchronous remote-URL scan
processFromUrl(URI location, Map<String,String> metadata)Remote-URL scan with metadata
retrieve(String id)Retrieve previous scan result
delete(String id)Delete a previous scan result
deleteTrace(String id)Delete the processing trace for a previous scan result
retrieveTrace(String id)Retrieve ordered processing events for a result
fetch(String location)Server-side async fetch-and-scan of a remote URL
ping()Health check
createAuthToken(int timeout, TimeUnit unit)Mint short-lived auth token
retrieveAuthToken(String id)Inspect auth token
deleteAuthToken(String id)Revoke auth token
retrieveAccountInfo()Retrieve account information

See the API spec for full details.

Regional endpoints

ConstantEndpoint
ScaniiTarget.US1https://api-us1.scanii.com
ScaniiTarget.EU1https://api-eu1.scanii.com
ScaniiTarget.EU2https://api-eu2.scanii.com
ScaniiTarget.AP1https://api-ap1.scanii.com
ScaniiTarget.AP2https://api-ap2.scanii.com
ScaniiTarget.CA1https://api-ca1.scanii.com
ScaniiTarget.AUTOhttps://api.scanii.comdeprecated, does not guarantee regional data placement

Local development with scanii-cli

Run integration tests against a local mock server — no real credentials needed:

docker run -d --name scanii-cli -p 4000:4000 ghcr.io/scanii/scanii-cli:latest server
mvn verify

Test credentials: key key, secret secret, endpoint http://localhost:4000.

Migration from com.uvasoftware:scanii-java

Replace the Maven coordinates and rename imports:

com.uvasoftware.scanii → com.scanii

The old artifact com.uvasoftware:scanii-java is deprecated and will not receive further updates.

License

Apache 2.0 — see LICENSE.

About

Java interface to the scanii.com content processing service

Topics

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

scanii-java

Official Java SDK for the Scanii content processing API.

SDK Principles

  1. Light. Zero runtime dependencies, stdlib only.
  2. Up to date. Always current with the latest Scanii API.
  3. Integration-only. Wraps the REST API — retries, concurrency, and batching are the caller's responsibility.

Install

<dependency>
<groupId>com.scanii</groupId>
<artifactId>scanii-java</artifactId>
<version>8.4.0</version>
</dependency>

Quickstart

importcom.scanii.ScaniiClient;
importcom.scanii.ScaniiClients;
importcom.scanii.ScaniiTarget;
importcom.scanii.models.ScaniiProcessingResult;
importjava.nio.file.Paths;
ScaniiClientclient = ScaniiClients.createDefault(ScaniiTarget.US1, "your-api-key", "your-api-secret");
ScaniiProcessingResultresult = client.process(Paths.get("/path/to/file"));
System.out.printf("findings: %s%n", result.getFindings());

API reference

MethodDescription
process(Path content)Synchronous file scan
process(InputStream content)Synchronous stream scan
process(Path content, Map<String,String> metadata)Scan with metadata
process(Path content, String callback, Map<String,String> metadata)Scan with callback
processAsync(Path content)Async-on-server scan, returns pending result
processFromUrl(URI location)Synchronous remote-URL scan
processFromUrl(URI location, Map<String,String> metadata)Remote-URL scan with metadata
retrieve(String id)Retrieve previous scan result
delete(String id)Delete a previous scan result
deleteTrace(String id)Delete the processing trace for a previous scan result
retrieveTrace(String id)Retrieve ordered processing events for a result
fetch(String location)Server-side async fetch-and-scan of a remote URL
ping()Health check
createAuthToken(int timeout, TimeUnit unit)Mint short-lived auth token
retrieveAuthToken(String id)Inspect auth token
deleteAuthToken(String id)Revoke auth token
retrieveAccountInfo()Retrieve account information

See the API spec for full details.

Regional endpoints

ConstantEndpoint
ScaniiTarget.US1https://api-us1.scanii.com
ScaniiTarget.EU1https://api-eu1.scanii.com
ScaniiTarget.EU2https://api-eu2.scanii.com
ScaniiTarget.AP1https://api-ap1.scanii.com
ScaniiTarget.AP2https://api-ap2.scanii.com
ScaniiTarget.CA1https://api-ca1.scanii.com
ScaniiTarget.AUTOhttps://api.scanii.comdeprecated, does not guarantee regional data placement

Local development with scanii-cli

Run integration tests against a local mock server — no real credentials needed:

docker run -d --name scanii-cli -p 4000:4000 ghcr.io/scanii/scanii-cli:latest server
mvn verify

Test credentials: key key, secret secret, endpoint http://localhost:4000.

Migration from com.uvasoftware:scanii-java

Replace the Maven coordinates and rename imports:

com.uvasoftware.scanii → com.scanii

The old artifact com.uvasoftware:scanii-java is deprecated and will not receive further updates.

License

Apache 2.0 — see LICENSE.

About

Java interface to the scanii.com content processing service

Topics

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

scanii-java

Official Java SDK for the Scanii content processing API.

SDK Principles

  1. Light. Zero runtime dependencies, stdlib only.
  2. Up to date. Always current with the latest Scanii API.
  3. Integration-only. Wraps the REST API — retries, concurrency, and batching are the caller's responsibility.

Install

<dependency>
<groupId>com.scanii</groupId>
<artifactId>scanii-java</artifactId>
<version>8.4.0</version>
</dependency>

Quickstart

importcom.scanii.ScaniiClient;
importcom.scanii.ScaniiClients;
importcom.scanii.ScaniiTarget;
importcom.scanii.models.ScaniiProcessingResult;
importjava.nio.file.Paths;
ScaniiClientclient = ScaniiClients.createDefault(ScaniiTarget.US1, "your-api-key", "your-api-secret");
ScaniiProcessingResultresult = client.process(Paths.get("/path/to/file"));
System.out.printf("findings: %s%n", result.getFindings());

API reference

MethodDescription
process(Path content)Synchronous file scan
process(InputStream content)Synchronous stream scan
process(Path content, Map<String,String> metadata)Scan with metadata
process(Path content, String callback, Map<String,String> metadata)Scan with callback
processAsync(Path content)Async-on-server scan, returns pending result
processFromUrl(URI location)Synchronous remote-URL scan
processFromUrl(URI location, Map<String,String> metadata)Remote-URL scan with metadata
retrieve(String id)Retrieve previous scan result
delete(String id)Delete a previous scan result
deleteTrace(String id)Delete the processing trace for a previous scan result
retrieveTrace(String id)Retrieve ordered processing events for a result
fetch(String location)Server-side async fetch-and-scan of a remote URL
ping()Health check
createAuthToken(int timeout, TimeUnit unit)Mint short-lived auth token
retrieveAuthToken(String id)Inspect auth token
deleteAuthToken(String id)Revoke auth token
retrieveAccountInfo()Retrieve account information

See the API spec for full details.

Regional endpoints

ConstantEndpoint
ScaniiTarget.US1https://api-us1.scanii.com
ScaniiTarget.EU1https://api-eu1.scanii.com
ScaniiTarget.EU2https://api-eu2.scanii.com
ScaniiTarget.AP1https://api-ap1.scanii.com
ScaniiTarget.AP2https://api-ap2.scanii.com
ScaniiTarget.CA1https://api-ca1.scanii.com
ScaniiTarget.AUTOhttps://api.scanii.comdeprecated, does not guarantee regional data placement

Local development with scanii-cli

Run integration tests against a local mock server — no real credentials needed:

docker run -d --name scanii-cli -p 4000:4000 ghcr.io/scanii/scanii-cli:latest server
mvn verify

Test credentials: key key, secret secret, endpoint http://localhost:4000.

Migration from com.uvasoftware:scanii-java

Replace the Maven coordinates and rename imports:

com.uvasoftware.scanii → com.scanii

The old artifact com.uvasoftware:scanii-java is deprecated and will not receive further updates.

License

Apache 2.0 — see LICENSE.

About

Java interface to the scanii.com content processing service

Topics

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

scanii-java

Official Java SDK for the Scanii content processing API.

SDK Principles

  1. Light. Zero runtime dependencies, stdlib only.
  2. Up to date. Always current with the latest Scanii API.
  3. Integration-only. Wraps the REST API — retries, concurrency, and batching are the caller's responsibility.

Install

<dependency>
<groupId>com.scanii</groupId>
<artifactId>scanii-java</artifactId>
<version>8.4.0</version>
</dependency>

Quickstart

importcom.scanii.ScaniiClient;
importcom.scanii.ScaniiClients;
importcom.scanii.ScaniiTarget;
importcom.scanii.models.ScaniiProcessingResult;
importjava.nio.file.Paths;
ScaniiClientclient = ScaniiClients.createDefault(ScaniiTarget.US1, "your-api-key", "your-api-secret");
ScaniiProcessingResultresult = client.process(Paths.get("/path/to/file"));
System.out.printf("findings: %s%n", result.getFindings());

API reference

MethodDescription
process(Path content)Synchronous file scan
process(InputStream content)Synchronous stream scan
process(Path content, Map<String,String> metadata)Scan with metadata
process(Path content, String callback, Map<String,String> metadata)Scan with callback
processAsync(Path content)Async-on-server scan, returns pending result
processFromUrl(URI location)Synchronous remote-URL scan
processFromUrl(URI location, Map<String,String> metadata)Remote-URL scan with metadata
retrieve(String id)Retrieve previous scan result
delete(String id)Delete a previous scan result
deleteTrace(String id)Delete the processing trace for a previous scan result
retrieveTrace(String id)Retrieve ordered processing events for a result
fetch(String location)Server-side async fetch-and-scan of a remote URL
ping()Health check
createAuthToken(int timeout, TimeUnit unit)Mint short-lived auth token
retrieveAuthToken(String id)Inspect auth token
deleteAuthToken(String id)Revoke auth token
retrieveAccountInfo()Retrieve account information

See the API spec for full details.

Regional endpoints

ConstantEndpoint
ScaniiTarget.US1https://api-us1.scanii.com
ScaniiTarget.EU1https://api-eu1.scanii.com
ScaniiTarget.EU2https://api-eu2.scanii.com
ScaniiTarget.AP1https://api-ap1.scanii.com
ScaniiTarget.AP2https://api-ap2.scanii.com
ScaniiTarget.CA1https://api-ca1.scanii.com
ScaniiTarget.AUTOhttps://api.scanii.comdeprecated, does not guarantee regional data placement

Local development with scanii-cli

Run integration tests against a local mock server — no real credentials needed:

docker run -d --name scanii-cli -p 4000:4000 ghcr.io/scanii/scanii-cli:latest server
mvn verify

Test credentials: key key, secret secret, endpoint http://localhost:4000.

Migration from com.uvasoftware:scanii-java

Replace the Maven coordinates and rename imports:

com.uvasoftware.scanii → com.scanii

The old artifact com.uvasoftware:scanii-java is deprecated and will not receive further updates.

License

Apache 2.0 — see LICENSE.

About

Java interface to the scanii.com content processing service

Topics

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

scanii-java

Official Java SDK for the Scanii content processing API.

SDK Principles

  1. Light. Zero runtime dependencies, stdlib only.
  2. Up to date. Always current with the latest Scanii API.
  3. Integration-only. Wraps the REST API — retries, concurrency, and batching are the caller's responsibility.

Install

<dependency>
<groupId>com.scanii</groupId>
<artifactId>scanii-java</artifactId>
<version>8.4.0</version>
</dependency>

Quickstart

importcom.scanii.ScaniiClient;
importcom.scanii.ScaniiClients;
importcom.scanii.ScaniiTarget;
importcom.scanii.models.ScaniiProcessingResult;
importjava.nio.file.Paths;
ScaniiClientclient = ScaniiClients.createDefault(ScaniiTarget.US1, "your-api-key", "your-api-secret");
ScaniiProcessingResultresult = client.process(Paths.get("/path/to/file"));
System.out.printf("findings: %s%n", result.getFindings());

API reference

MethodDescription
process(Path content)Synchronous file scan
process(InputStream content)Synchronous stream scan
process(Path content, Map<String,String> metadata)Scan with metadata
process(Path content, String callback, Map<String,String> metadata)Scan with callback
processAsync(Path content)Async-on-server scan, returns pending result
processFromUrl(URI location)Synchronous remote-URL scan
processFromUrl(URI location, Map<String,String> metadata)Remote-URL scan with metadata
retrieve(String id)Retrieve previous scan result
delete(String id)Delete a previous scan result
deleteTrace(String id)Delete the processing trace for a previous scan result
retrieveTrace(String id)Retrieve ordered processing events for a result
fetch(String location)Server-side async fetch-and-scan of a remote URL
ping()Health check
createAuthToken(int timeout, TimeUnit unit)Mint short-lived auth token
retrieveAuthToken(String id)Inspect auth token
deleteAuthToken(String id)Revoke auth token
retrieveAccountInfo()Retrieve account information

See the API spec for full details.

Regional endpoints

ConstantEndpoint
ScaniiTarget.US1https://api-us1.scanii.com
ScaniiTarget.EU1https://api-eu1.scanii.com
ScaniiTarget.EU2https://api-eu2.scanii.com
ScaniiTarget.AP1https://api-ap1.scanii.com
ScaniiTarget.AP2https://api-ap2.scanii.com
ScaniiTarget.CA1https://api-ca1.scanii.com
ScaniiTarget.AUTOhttps://api.scanii.comdeprecated, does not guarantee regional data placement

Local development with scanii-cli

Run integration tests against a local mock server — no real credentials needed:

docker run -d --name scanii-cli -p 4000:4000 ghcr.io/scanii/scanii-cli:latest server
mvn verify

Test credentials: key key, secret secret, endpoint http://localhost:4000.

Migration from com.uvasoftware:scanii-java

Replace the Maven coordinates and rename imports:

com.uvasoftware.scanii → com.scanii

The old artifact com.uvasoftware:scanii-java is deprecated and will not receive further updates.

License

Apache 2.0 — see LICENSE.

About

Java interface to the scanii.com content processing service

Topics

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

scanii-java

Official Java SDK for the Scanii content processing API.

SDK Principles

  1. Light. Zero runtime dependencies, stdlib only.
  2. Up to date. Always current with the latest Scanii API.
  3. Integration-only. Wraps the REST API — retries, concurrency, and batching are the caller's responsibility.

Install

<dependency>
<groupId>com.scanii</groupId>
<artifactId>scanii-java</artifactId>
<version>8.4.0</version>
</dependency>

Quickstart

importcom.scanii.ScaniiClient;
importcom.scanii.ScaniiClients;
importcom.scanii.ScaniiTarget;
importcom.scanii.models.ScaniiProcessingResult;
importjava.nio.file.Paths;
ScaniiClientclient = ScaniiClients.createDefault(ScaniiTarget.US1, "your-api-key", "your-api-secret");
ScaniiProcessingResultresult = client.process(Paths.get("/path/to/file"));
System.out.printf("findings: %s%n", result.getFindings());

API reference

MethodDescription
process(Path content)Synchronous file scan
process(InputStream content)Synchronous stream scan
process(Path content, Map<String,String> metadata)Scan with metadata
process(Path content, String callback, Map<String,String> metadata)Scan with callback
processAsync(Path content)Async-on-server scan, returns pending result
processFromUrl(URI location)Synchronous remote-URL scan
processFromUrl(URI location, Map<String,String> metadata)Remote-URL scan with metadata
retrieve(String id)Retrieve previous scan result
delete(String id)Delete a previous scan result
deleteTrace(String id)Delete the processing trace for a previous scan result
retrieveTrace(String id)Retrieve ordered processing events for a result
fetch(String location)Server-side async fetch-and-scan of a remote URL
ping()Health check
createAuthToken(int timeout, TimeUnit unit)Mint short-lived auth token
retrieveAuthToken(String id)Inspect auth token
deleteAuthToken(String id)Revoke auth token
retrieveAccountInfo()Retrieve account information

See the API spec for full details.

Regional endpoints

ConstantEndpoint
ScaniiTarget.US1https://api-us1.scanii.com
ScaniiTarget.EU1https://api-eu1.scanii.com
ScaniiTarget.EU2https://api-eu2.scanii.com
ScaniiTarget.AP1https://api-ap1.scanii.com
ScaniiTarget.AP2https://api-ap2.scanii.com
ScaniiTarget.CA1https://api-ca1.scanii.com
ScaniiTarget.AUTOhttps://api.scanii.comdeprecated, does not guarantee regional data placement

Local development with scanii-cli

Run integration tests against a local mock server — no real credentials needed:

docker run -d --name scanii-cli -p 4000:4000 ghcr.io/scanii/scanii-cli:latest server
mvn verify

Test credentials: key key, secret secret, endpoint http://localhost:4000.

Migration from com.uvasoftware:scanii-java

Replace the Maven coordinates and rename imports:

com.uvasoftware.scanii → com.scanii

The old artifact com.uvasoftware:scanii-java is deprecated and will not receive further updates.

License

Apache 2.0 — see LICENSE.

About

Java interface to the scanii.com content processing service

Topics

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

scanii-java

Official Java SDK for the Scanii content processing API.

SDK Principles

  1. Light. Zero runtime dependencies, stdlib only.
  2. Up to date. Always current with the latest Scanii API.
  3. Integration-only. Wraps the REST API — retries, concurrency, and batching are the caller's responsibility.

Install

<dependency>
<groupId>com.scanii</groupId>
<artifactId>scanii-java</artifactId>
<version>8.4.0</version>
</dependency>

Quickstart

importcom.scanii.ScaniiClient;
importcom.scanii.ScaniiClients;
importcom.scanii.ScaniiTarget;
importcom.scanii.models.ScaniiProcessingResult;
importjava.nio.file.Paths;
ScaniiClientclient = ScaniiClients.createDefault(ScaniiTarget.US1, "your-api-key", "your-api-secret");
ScaniiProcessingResultresult = client.process(Paths.get("/path/to/file"));
System.out.printf("findings: %s%n", result.getFindings());

API reference

MethodDescription
process(Path content)Synchronous file scan
process(InputStream content)Synchronous stream scan
process(Path content, Map<String,String> metadata)Scan with metadata
process(Path content, String callback, Map<String,String> metadata)Scan with callback
processAsync(Path content)Async-on-server scan, returns pending result
processFromUrl(URI location)Synchronous remote-URL scan
processFromUrl(URI location, Map<String,String> metadata)Remote-URL scan with metadata
retrieve(String id)Retrieve previous scan result
delete(String id)Delete a previous scan result
deleteTrace(String id)Delete the processing trace for a previous scan result
retrieveTrace(String id)Retrieve ordered processing events for a result
fetch(String location)Server-side async fetch-and-scan of a remote URL
ping()Health check
createAuthToken(int timeout, TimeUnit unit)Mint short-lived auth token
retrieveAuthToken(String id)Inspect auth token
deleteAuthToken(String id)Revoke auth token
retrieveAccountInfo()Retrieve account information

See the API spec for full details.

Regional endpoints

ConstantEndpoint
ScaniiTarget.US1https://api-us1.scanii.com
ScaniiTarget.EU1https://api-eu1.scanii.com
ScaniiTarget.EU2https://api-eu2.scanii.com
ScaniiTarget.AP1https://api-ap1.scanii.com
ScaniiTarget.AP2https://api-ap2.scanii.com
ScaniiTarget.CA1https://api-ca1.scanii.com
ScaniiTarget.AUTOhttps://api.scanii.comdeprecated, does not guarantee regional data placement

Local development with scanii-cli

Run integration tests against a local mock server — no real credentials needed:

docker run -d --name scanii-cli -p 4000:4000 ghcr.io/scanii/scanii-cli:latest server
mvn verify

Test credentials: key key, secret secret, endpoint http://localhost:4000.

Migration from com.uvasoftware:scanii-java

Replace the Maven coordinates and rename imports:

com.uvasoftware.scanii → com.scanii

The old artifact com.uvasoftware:scanii-java is deprecated and will not receive further updates.

License

Apache 2.0 — see LICENSE.

About

Java interface to the scanii.com content processing service

Topics

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

scanii-java

Official Java SDK for the Scanii content processing API.

SDK Principles

  1. Light. Zero runtime dependencies, stdlib only.
  2. Up to date. Always current with the latest Scanii API.
  3. Integration-only. Wraps the REST API — retries, concurrency, and batching are the caller's responsibility.

Install

<dependency>
<groupId>com.scanii</groupId>
<artifactId>scanii-java</artifactId>
<version>8.4.0</version>
</dependency>

Quickstart

importcom.scanii.ScaniiClient;
importcom.scanii.ScaniiClients;
importcom.scanii.ScaniiTarget;
importcom.scanii.models.ScaniiProcessingResult;
importjava.nio.file.Paths;
ScaniiClientclient = ScaniiClients.createDefault(ScaniiTarget.US1, "your-api-key", "your-api-secret");
ScaniiProcessingResultresult = client.process(Paths.get("/path/to/file"));
System.out.printf("findings: %s%n", result.getFindings());

API reference

MethodDescription
process(Path content)Synchronous file scan
process(InputStream content)Synchronous stream scan
process(Path content, Map<String,String> metadata)Scan with metadata
process(Path content, String callback, Map<String,String> metadata)Scan with callback
processAsync(Path content)Async-on-server scan, returns pending result
processFromUrl(URI location)Synchronous remote-URL scan
processFromUrl(URI location, Map<String,String> metadata)Remote-URL scan with metadata
retrieve(String id)Retrieve previous scan result
delete(String id)Delete a previous scan result
deleteTrace(String id)Delete the processing trace for a previous scan result
retrieveTrace(String id)Retrieve ordered processing events for a result
fetch(String location)Server-side async fetch-and-scan of a remote URL
ping()Health check
createAuthToken(int timeout, TimeUnit unit)Mint short-lived auth token
retrieveAuthToken(String id)Inspect auth token
deleteAuthToken(String id)Revoke auth token
retrieveAccountInfo()Retrieve account information

See the API spec for full details.

Regional endpoints

ConstantEndpoint
ScaniiTarget.US1https://api-us1.scanii.com
ScaniiTarget.EU1https://api-eu1.scanii.com
ScaniiTarget.EU2https://api-eu2.scanii.com
ScaniiTarget.AP1https://api-ap1.scanii.com
ScaniiTarget.AP2https://api-ap2.scanii.com
ScaniiTarget.CA1https://api-ca1.scanii.com
ScaniiTarget.AUTOhttps://api.scanii.comdeprecated, does not guarantee regional data placement

Local development with scanii-cli

Run integration tests against a local mock server — no real credentials needed:

docker run -d --name scanii-cli -p 4000:4000 ghcr.io/scanii/scanii-cli:latest server
mvn verify

Test credentials: key key, secret secret, endpoint http://localhost:4000.

Migration from com.uvasoftware:scanii-java

Replace the Maven coordinates and rename imports:

com.uvasoftware.scanii → com.scanii

The old artifact com.uvasoftware:scanii-java is deprecated and will not receive further updates.

License

Apache 2.0 — see LICENSE.

About

Java interface to the scanii.com content processing service

Topics

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages