Universal Catalog FAQ
General Questions
Q: What is the Universal Catalog Client?
A: It’s a flexible client that can connect to any STAC-compliant API endpoint, with or without authentication. It provides a consistent interface across all STAC APIs while handling provider-specific differences.
Q: How is it different from Planetary Computer and Earth Search clients?
A: The Universal Catalog Client is provider-agnostic:
Planetary Computer: Specific to Microsoft Planetary Computer
Earth Search: Specific to AWS Element84
Universal Catalog: Works with any STAC API
Q: Can I use it with public APIs?
A: Yes! Simply omit the auth_token parameter for public APIs.
Authentication Questions
Q: What authentication methods are supported?
A: Bearer token authentication and custom HTTP headers. Most STAC APIs use Bearer tokens.
Q: What if my API uses a different authentication method?
A: You can pass custom headers:
client = ogapi.catalog(
api_url,
headers={"Authorization": "Custom auth-method"}
)
Q: How do I store authentication tokens securely?
A: Use environment variables or configuration files, never commit tokens to version control.
Technical Questions
Q: Which STAC versions are supported?
A: STAC v1.0 and above. The client automatically detects the STAC version.
Q: What if the search endpoint has a different URL pattern?
A: The client automatically discovers the search endpoint from the root catalog links.
Q: Can I use it with non-standard STAC implementations?
A: Yes, as long as they follow STAC specifications. Custom behavior can be handled with additional headers or parameters.
Q: Does it support pagination?
A: Yes, through the same interface as other clients (get_all_items() handles pagination automatically).
Q: Can I disable SSL verification?
A: Yes, but only for development:
client = ogapi.catalog(api_url, verify_ssl=False)
Usage Questions
Q: How do I handle band name differences?
A: The client includes automatic band name mapping. Use either standard names (B02, B03) or common names (blue, green):
# Both work!
url1 = client.get_asset_url(item, 'B02')
url2 = client.get_asset_url(item, 'blue')
Q: Can I use it with existing workflows?
A: Yes! It returns the same STACItem and STACItemCollection objects as other clients.
Q: How do I know if an API requires authentication?
A: Try connecting without a token first. If you get a 401 or 403 error, authentication is required.
Troubleshooting
Q: “Failed to connect to STAC API” error
A: Check:
API URL is correct and reachable
API is actually a STAC-compliant endpoint
Network connectivity
SSL certificate issues (try verify_ssl=False for testing)
Q: “Search endpoint not available” error
A: The API might not support search. Check API documentation or use get_collections() instead.
Q: Getting empty results
A: Verify:
Collection names are correct (use
list_collections())Bbox coordinates are in correct order [west, south, east, north]
Datetime format is correct
Query parameters match API expectations
Comparison with Other Clients
Feature |
Planetary Computer |
Earth Search |
Universal Catalog |
|---|---|---|---|
Provider |
Microsoft |
Element84/AWS |
Any STAC API |
Authentication |
Automatic signing |
None |
Flexible (optional) |
Band Names |
B01, B02, B03… |
blue, green, red… |
Both supported |
Custom APIs |
No |
No |
Yes |
Setup Complexity |
Low |
Low |
Low-Medium |