Juri API Documentation

Guide to the Data Jurisdiction Risk Assessment API

← Back to Juri

API Overview

The Juri API provides programmatic access to our data jurisdiction risk assessment platform. Analyze IP addresses and domains to understand data sovereignty implications, applicable laws, regulatory agencies, and compliance risks.

Base URL: https://juri.host
API Version: v1
Response Format: JSON
HTTPS: Required for all requests

Key Features

Authentication

Currently, the Juri API operates without authentication for public access. All endpoints are accessible via standard HTTPS requests.

Note: Rate limiting is in effect to ensure fair usage. See the Rate Limits section for details.

Single Address Analysis

Analyze a single IP address or domain for data jurisdiction risk assessment.

Endpoint

GET /analyze

Parameters

Parameter Type Required Description
host string Required IP address or domain name to analyze

Example Request

curl -X GET "https://juri.host/analyze?host=8.8.8.8"

Example Response

HTTP 200 OK
{ "host_country": { "name": "United States", "code": "US", "flag": "https://flagcdn.com/w40/us.png" }, "overall_risk_assessment": { "risk_score": 50, "risk_level": "Medium", "base_score": 45 }, "glars_components": { "judicial_oversight": 65, "agency_powers": 75, "technical_requirements": 40, "extraterritoriality": 80, "transparency": 55, "embargo_impact": 0, "sanction_severity": 10 }, "laws": [ { "law_name": "CLOUD Act", "citations": ["https://www.congress.gov/bill/115th-congress/house-bill/4943"] } ], "sanctions": [], "embargoes": [], "agencies": [ { "name": "Federal Bureau of Investigation (FBI)", "agency_name": "FBI", "website_url": "https://www.fbi.gov" } ], "cdn_info": { "is_detected": true, "provider_name": "Google Cloud", "company_domicile": "United States", "company_domicile_code": "US" } }

Bulk Analysis

Analyze multiple IP addresses or domains in a single request for efficient batch processing.

Endpoint

POST /analyze/bulk

Request Body

Field Type Required Description
addresses array[string] Required Array of IP addresses or domain names (max 100)

Example Request

curl -X POST "https://juri.host/analyze/bulk" \ -H "Content-Type: application/json" \ -d '{ "addresses": [ "8.8.8.8", "github.com", "1.1.1.1" ] }'

Example Response

HTTP 200 OK
{ "total_submitted": 3, "total_analyzed": 3, "total_removed": 0, "removal_message": "", "removed_domains": [], "results": [ { "query": "8.8.8.8", "ip": "8.8.8.8", "host_country": { "name": "United States", "code": "US", "flag": "https://flagcdn.com/w40/us.png" }, "overall_risk_assessment": { "risk_score": 50, "risk_level": "Medium", "base_score": 45 }, "laws": [...], "agencies": [...], "cdn_info": {...}, "glars_components": {...} } ] }

Export Endpoints

Export analysis results in various formats for integration with external systems.

JSON Export

GET /export/json

curl -X GET "https://juri.host/export/json?host=example.com"

CSV Export

GET /export/csv

curl -X GET "https://juri.host/export/csv?host=example.com" \ -o analysis_report.csv

Markdown Export

GET /export/markdown

curl -X GET "https://juri.host/export/markdown?host=example.com" \ -o analysis_report.md

PDF Export

GET /export/pdf

curl -X GET "https://juri.host/export/pdf?host=example.com" \ -o analysis_report.pdf

Response Format

All API responses follow a consistent JSON structure with detailed data about jurisdiction risks.

GLARS Components

The GLARS (Geo-Legal Access Risk Score) methodology provides detailed scoring across multiple risk factors (see www.glars.io):

Risk Levels

Risk Level Score Range Description
Low 0-33 Minimal jurisdiction risk, strong privacy protections
Medium 34-66 Moderate risk, balanced regulatory framework
High 67-100 Significant risk, broad surveillance capabilities

Error Handling

The API uses standard HTTP status codes and provides detailed error messages in JSON format.

Common HTTP Status Codes

Status Code Description Example Response
200 Success Request completed successfully
400 Bad Request {"error": "Missing 'host' query parameter"}
429 Too Many Requests {"error": "Rate limit exceeded"}
500 Internal Server Error {"error": "Internal server error occurred"}

Error Response Format

{ "error": "Description of the error", "code": "ERROR_CODE", "timestamp": "2025-05-29T21:30:00Z" }

Rate Limits

To ensure fair usage and system stability, the following rate limits are enforced:

Endpoint Rate Limit Time Window
Single Analysis 60 requests Per minute
Bulk Analysis 10 requests Per minute
Export Endpoints 30 requests Per minute
Rate Limit Headers: All responses include X-RateLimit-Remaining and X-RateLimit-Reset headers to help you manage your usage.

Practical Examples

Usage examples to help you integrate with the Juri API.

Example 1: Security Assessment Pipeline

# Analyze multiple suspicious IPs curl -X POST "https://juri.host/analyze/bulk" \ -H "Content-Type: application/json" \ -d '{ "addresses": [ "fsb.ru", "1.2.3.4", "suspicious-domain.com" ] }' | jq '.results[] | select(.overall_risk_assessment.risk_level == "High")'

Example 2: Compliance Report Generation

# Generate compliance report curl -X GET "https://juri.host/analyze?host=myapp.example.com" \ | jq '{ jurisdiction: .host_country.name, risk_level: .overall_risk_assessment.risk_level, applicable_laws: [.laws[].law_name], agencies: [.agencies[].name], glars_score: .overall_risk_assessment.risk_score }'

Example 3: CDN Analysis

# Check if domains use CDN and assess jurisdiction risks curl -X POST "https://juri.host/analyze/bulk" \ -H "Content-Type: application/json" \ -d '{ "addresses": [ "cdn1.example.com", "cdn2.example.com", "origin.example.com" ] }' | jq '.results[] | { domain: .query, uses_cdn: .cdn_info.is_detected, cdn_provider: .cdn_info.provider_name, jurisdiction: .host_country.name, risk: .overall_risk_assessment.risk_level }'

Example 4: Automated Monitoring

#!/bin/bash # Monitor infrastructure for jurisdiction changes DOMAINS=("api.myapp.com" "cdn.myapp.com" "db.myapp.com") WEBHOOK_URL="https://monitoring.example.com/webhook" for domain in "${DOMAINS[@]}"; do response=$(curl -s "https://juri.host/analyze?host=$domain") risk_level=$(echo "$response" | jq -r '.overall_risk_assessment.risk_level') if [ "$risk_level" = "High" ]; then echo "HIGH RISK DETECTED: $domain" curl -X POST "$WEBHOOK_URL" \ -H "Content-Type: application/json" \ -d "{\"alert\": \"High jurisdiction risk detected for $domain\"}" fi done

Example 5: Data Governance Dashboard

# Python example for dashboard integration import requests import json def analyze_infrastructure(domains): """Analyze multiple domains and return risk summary""" response = requests.post( 'https://juri.host/analyze/bulk', headers={'Content-Type': 'application/json'}, json={'addresses': domains} ) if response.status_code == 200: data = response.json() return { 'total_analyzed': data['total_analyzed'], 'high_risk_count': len([r for r in data['results'] if r['overall_risk_assessment']['risk_level'] == 'High']), 'jurisdictions': list(set([r['host_country']['name'] for r in data['results']])), 'average_score': sum([r['overall_risk_assessment']['risk_score'] for r in data['results']]) / len(data['results']) } return None # Usage domains = ['api.example.com', 'cdn.example.com', 'db.example.com'] summary = analyze_infrastructure(domains) print(json.dumps(summary, indent=2))
Need Help? For additional support or questions about the Juri API, please contact our development team or visit our main application for interactive testing.