API Inspection with CLI#
Use bfabric-cli api inspect to discover available endpoints, parameters, and data structures in B-Fabric.
Overview#
The inspect command helps you:
Discover what entities exist - Browse all available B-Fabric endpoints
Learn valid filters - See what parameters you can use in queries
Understand field types - Know what data types are expected (string, integer, date, etc.)
Find required fields - Required parameters are marked with
*
Basic Usage#
# Inspect an endpoint's structure
bfabric-cli api inspect resource
# Inspect different methods
bfabric-cli api inspect resource save
# Check multiple endpoints
bfabric-cli api inspect workunit
bfabric-cli api inspect dataset
bfabric-cli api inspect sample
Output:
Namespaces:
bf: http://endpoint.server.webservice.bfabric.org/
xs: http://www.w3.org/2001/XMLSchema
Parameter: parameters
Type: xmlRequestReadResource
- idonly: xs:string
- login: xs:string *
- password: xs:string *
- page: xs:int
- query: bf:xmlRequestParameterReadResource
- id: xs:long[]
- name: xs:string[]
- createdby: xs:string[]
- createdafter: xs:string[]
- createdbefore: xs:string[]
- containerid: xs:long[]
sampleid: xs:long[]
status: xs:string[]
size: xs:long[]
- ...more fields
* required
Common Patterns#
Inspect Different Methods#
# See what 'read' expects (default method)
bfabric-cli api inspect resource
# See what 'save' expects (for creating/updating)
bfabric-cli api inspect resource save
# Check workunit structure
bfabric-cli api inspect workunit
# Check dataset structure
bfabric-cli api inspect dataset
# Check sample structure
bfabric-cli api inspect sample
Discover Available Endpoints#
# Common B-Fabric endpoints to inspect:
bfabric-cli api inspect sample
bfabric-cli api inspect workunit
bfabric-cli api inspect dataset
bfabric-cli api inspect resource
bfabric-cli api inspect application
bfabric-cli api inspect project
Practical Examples#
Example 1: Filter by Date#
First, inspect to see available date filters:
bfabric-cli api inspect resource
From output, you can see createdafter and createdbefore are valid filters. Use them in Python:
from bfabric import Bfabric
from datetime import datetime, timedelta
client = Bfabric.connect()
# Find resources created in last 30 days
date_threshold = (datetime.now() - timedelta(days=30)).strftime("%Y-%m-%d")
results = client.read(
endpoint="resource",
obj={"createdafter": date_threshold},
max_results=10,
)
if results.is_success:
print(f"Found {len(results)} recent resources:")
for resource in results:
print(f" - {resource['name']} (ID: {resource['id']})")
Example 2: Filter by User#
Inspect to see what user-related filters exist:
bfabric-cli api inspect workunit
If you see createdby or modifiedby, use them:
from bfabric import Bfabric
client = Bfabric.connect()
# Find workunits created by specific user
results = client.read(
endpoint="workunit",
obj={"createdby": "pfeeder"},
max_results=10,
)
for workunit in results:
print(f" - ID: {workunit['id']}, Status: {workunit.get('status', 'N/A')}")
Example 3: Create New Entity#
To create an entity, first inspect the save method:
bfabric-cli api inspect sample save
This shows required fields and expected types:
from bfabric import Bfabric
client = Bfabric.connect()
# Create a new sample (required fields from inspect)
sample_data = {
"name": "Test Sample",
"projectid": 300,
"type": "Biological Sample - Generic",
}
results = client.save(endpoint="sample", obj=sample_data)
if results.is_success:
print(f"Created sample ID: {results[0]['id']}")
else:
print(f"Errors: {results.errors}")
Tips and Best Practices#
Inspect before querying - Saves trial and error
Check field types - Know if a field is string, integer, list, etc.
Look for
*marks - These are required fieldsExplore multiple endpoints - You might find better ways to query data
Use CLI for quick testing - Test queries from CLI before coding them
Integration with CLI#
The inspect command integrates well with other CLI commands:
# 1. Inspect structure first
bfabric-cli api inspect sample
# 2. Test query with CLI
bfabric-cli api read sample projectid 123 --limit 5
# 3. Use in your Python script
from bfabric import Bfabric
client = Bfabric.connect()
results = client.read(endpoint='sample', obj={'projectid': 123}, max_results=5)
Tip: CLI queries display equivalent Python code, making it easy to test and adapt for your scripts.
See Also#
bfabric-cli - Complete CLI documentation
API Operations - Generic CRUD operations
Reading Data - Querying B-Fabric in Python