This directory contains comprehensive examples demonstrating how to use the JupiterOne Python SDK for various operations and use cases.
Purpose: Basic client setup and query operations
- Client initialization with environment variables
- Basic J1QL queries with filtering
- Relationship traversal queries
- Pagination methods (cursor-based, limit/skip, deferred response)
- Complex query patterns
- Natural language to J1QL conversion
Key Methods Demonstrated:
JupiterOneClient()- Client initializationquery_v1()- Basic queries_cursor_query()- Cursor-based pagination_limit_and_skip_query()- Limit/skip paginationquery_with_deferred_response()- Deferred response for large datasetsgenerate_j1ql()- Natural language to J1QL
Purpose: Complete entity lifecycle management
- Entity creation with various property types
- Entity updates and modifications
- Entity deletion and cleanup
- Entity data fetching (properties, tags, raw data)
- Complete entity lifecycle workflows
- Bulk entity operations
Key Methods Demonstrated:
create_entity()- Entity creationupdate_entity()- Entity updatesdelete_entity()- Entity deletionfetch_all_entity_properties()- Fetch all propertiesfetch_all_entity_tags()- Fetch all tagsfetch_entity_raw_data()- Fetch raw entity data
Purpose: Relationship creation and management
- Relationship creation with properties
- Relationship updates and modifications
- Relationship deletion
- Complex relationship scenarios
- Network-style relationships
- Access control relationships
Key Methods Demonstrated:
create_relationship()- Relationship creationupdate_relationship()- Relationship updatesdelete_relationship()- Relationship deletion
Purpose: Integration instance and sync job management
- Integration instance creation
- Integration definition management
- Synchronization job operations
- Batch upload operations (entities, relationships, combined)
- Integration job monitoring and events
- Bulk delete operations
Key Methods Demonstrated:
create_integration_instance()- Create integration instancesget_integration_definition_details()- Get integration definitionsstart_sync_job()- Start synchronization jobsupload_entities_batch_json()- Batch entity uploadsupload_relationships_batch_json()- Batch relationship uploadsupload_combined_batch_json()- Combined batch uploadsbulk_delete_entities()- Bulk entity deletion
Purpose: Alert rules and SmartClass operations
- Alert rule creation with various configurations
- Alert rules with action configurations (webhooks, tags, Jira)
- Alert rule management and evaluation
- SmartClass creation and management
- Natural language to J1QL conversion
- Compliance framework operations
Key Methods Demonstrated:
create_alert_rule()- Create alert rulesget_alert_rule_details()- Get rule detailslist_alert_rules()- List all rulesupdate_alert_rule()- Update rulesevaluate_alert_rule()- Evaluate rulescreate_smartclass()- Create SmartClassescreate_smartclass_query()- Add queries to SmartClassesevaluate_smartclass()- Evaluate SmartClasses
Purpose: Advanced operations and optimization
- Bulk operations on entities and relationships
- Advanced query techniques (variables, scope filters, flags)
- Performance optimization techniques
- Error handling patterns
- Data synchronization workflows
- Utility methods and helpers
Key Methods Demonstrated:
- Bulk entity/relationship operations
- Advanced query parameters
- Error handling patterns
- Performance optimization techniques
- Data synchronization workflows
Purpose: Account parameter management
- List all account parameters
- Create/update account parameters
- Fetch parameter details
- Secret parameter handling
Key Methods Demonstrated:
list_account_parameters()- List all parameterscreate_update_parameter()- Create or update parametersget_parameter_details()- Get parameter details
Purpose: Questions creation and management
- Create questions with single and multiple queries
- Configure question properties (tags, compliance, variables)
- Create questions for security monitoring and compliance
- List existing questions in the account
- Advanced question features (parameterization, resource groups)
Key Methods Demonstrated:
create_question()- Create questions with J1QL querieslist_questions()- List all questions in the accountget_question_details()- Get detailed information for a specific question by ID
Purpose: Comprehensive examples of all major SDK methods
- Client setup and basic operations
- Entity and relationship management
- Integration and sync job operations
- Alert rules and SmartClass operations
- Questions management and analysis
- Account parameter operations
Key Methods Demonstrated:
- All major SDK methods including:
list_questions()- List and analyze all questions in the accountget_question_details()- Get detailed information for specific questionscreate_question()- Create questions with various configurations- Entity lifecycle management methods
- Relationship management methods
- Integration and sync job methods
- Alert rule and SmartClass methods
- Python 3.6 or higher
- JupiterOne account with API access
- JupiterOne Python SDK installed (
pip install jupiterone)
Set the following environment variables:
export JUPITERONE_ACCOUNT_ID="your-account-id"
export JUPITERONE_API_TOKEN="your-api-token"
export JUPITERONE_URL="https://graphql.us.jupiterone.io" # Optional
export JUPITERONE_SYNC_URL="https://api.us.jupiterone.io" # OptionalEach example file can be run independently:
# Run client setup and query examples
python 01_client_setup_and_queries.py
# Run entity management examples
python 02_entity_management.py
# Run relationship management examples
python 03_relationship_management.py
# Run integration management examples
python 04_integration_management.py
# Run alert rules and SmartClass examples
python 05_alert_rules_and_smartclasses.py
# Run advanced operations examples
python 06_advanced_operations.py
# Run account parameters examples
python 07_account_parameters_list_example.py
# Run questions management examples
python 08_questions_management.py- Basic entity queries
- Relationship traversal
- Property filtering
- Aggregation queries
- Time-based queries
- Complex multi-step queries
- Question creation with J1QL queries
- Question listing and analysis with filtering options
- Search questions by title/description using
search_queryparameter - Filter questions by tags using
tagsparameter - Compliance metadata management
- Question categorization and filtering
- Question lifecycle management
- Entity creation with various property types
- Entity updates and modifications
- Entity deletion and cleanup
- Entity lifecycle management
- Bulk entity operations
- Relationship creation with properties
- Relationship updates and modifications
- Relationship deletion
- Network-style relationships
- Access control relationships
- Integration instance creation
- Synchronization job management
- Batch upload operations
- Integration monitoring
- Bulk operations
- Alert rule creation and configuration
- Action configurations (webhooks, tags, Jira)
- SmartClass creation and management
- Natural language to J1QL conversion
- Compliance framework operations
- Bulk operations
- Performance optimization
- Error handling patterns
- Data synchronization
- Advanced query techniques
All examples include proper error handling:
try:
result = j1.some_operation()
print("Operation successful")
except Exception as e:
print(f"Error: {e}")Examples that create test data include cleanup:
# Create test data
entity = j1.create_entity(...)
# ... perform operations ...
# Clean up
j1.delete_entity(entity_id=entity['entity']['_id'])Examples use environment variables for configuration:
j1 = JupiterOneClient(
account=os.getenv('JUPITERONE_ACCOUNT_ID'),
token=os.getenv('JUPITERONE_API_TOKEN'),
url=os.getenv('JUPITERONE_URL', 'https://graphql.us.jupiterone.io'),
sync_url=os.getenv('JUPITERONE_SYNC_URL', 'https://api.us.jupiterone.io')
)Examples show how to analyze questions data with filtering:
# List all questions
questions = j1.list_questions()
# Search questions by content
security_questions = j1.list_questions(search_query="security")
encryption_questions = j1.list_questions(search_query="encryption")
# Filter questions by tags
compliance_questions = j1.list_questions(tags=["compliance"])
cis_questions = j1.list_questions(tags=["cis", "aws"])
# Combine search and tags
security_compliance = j1.list_questions(
search_query="encryption",
tags=["security", "compliance"]
)
# Get detailed information for a specific question
question_details = j1.get_question_details(
question_id="f90f9aa1-f9ff-47f7-ab34-ce8fa11c7add"
)
print(f"Question title: {question_details['title']}")
print(f"Compliance standard: {question_details.get('compliance', {}).get('standard')}")
print(f"Number of queries: {len(question_details.get('queries', []))}")
# Analyze by compliance standards
compliance_standards = {}
for question in questions:
if 'compliance' in question and question['compliance']:
compliance = question['compliance']
if isinstance(compliance, dict) and 'standard' in compliance:
standard = compliance['standard']
compliance_standards[standard] = compliance_standards.get(standard, 0) + 1
# Find questions by tags
security_questions = [q for q in questions if 'tags' in q and q['tags'] and any('security' in tag.lower() for tag in q['tags'])]Some examples use placeholder values that need to be replaced:
"your-account-id"- Replace with actual JupiterOne account ID"your-api-token"- Replace with actual API token"your-integration-definition-id"- Replace with actual integration definition ID"your-resource-group-id"- Replace with actual resource group ID
Some examples require specific permissions in your JupiterOne account:
- Entity creation/deletion permissions
- Integration management permissions
- Alert rule creation permissions
- SmartClass creation permissions
Some examples assume the presence of certain data types:
- AWS entities (for cloud-specific examples)
- User entities (for access control examples)
- Finding entities (for security examples)
You can modify examples to suit your needs:
- Change entity types and properties
- Modify query filters
- Adjust pagination parameters
- Customize error handling
- Add your own business logic
Examples can be extended with:
- Additional error handling
- Logging and monitoring
- Custom data processing
- Integration with other systems
- Automated workflows
- JupiterOne API Documentation
- J1QL Query Language Guide
- JupiterOne Python SDK Documentation
- JupiterOne Community
When adding new examples:
- Follow the existing naming convention
- Include proper error handling
- Add cleanup operations for test data
- Document the purpose and key methods
- Update this README with new examples
These examples are provided under the same license as the JupiterOne Python SDK.