agravity_client/ENDPOINT_COVERAGE_REPORT.md

17 KiB

Agravity Client - Endpoint Coverage Report

Generated: March 25, 2026
Thoroughness Level: Thorough Analysis


Executive Summary

This report analyzes the API endpoint coverage in the agravity_client Python SDK against the Agravity OpenAPI 10.3.0 specification (swagger.json). The analysis identifies which Swagger endpoints are implemented in the client, which are missing, and any extra client methods not in the specification.


1. FULLY IMPLEMENTED ENDPOINTS

Portal Management (/portals*)

Endpoint Method Client Implementation
/portals/{id} GET PortalsApi.get_portal()
/portals/{id}/config GET PortalsApi.get_portal_config()
/portals/{id}/zip POST PortalsApi.create_portal_zip()
/portals/{id}/zip GET PortalsApi.get_portal_zip_status()
/portals/{id}/zip/{zipId} GET PortalsApi.get_portal_zip_status()
/portals/{id}/assetids GET PortalsApi.get_portal_asset_ids()
/portals/{id}/enhancetoken POST PortalsApi.enhance_portal_token()
/portals/{id}/saveuserattributes POST PortalsApi.save_portal_user_attributes()

Asset Management (/assets*)

Endpoint Method Client Implementation
/assets GET AssetsApi.list_assets()
/assets POST AssetsApi.create_asset()
/assets/{id} GET AssetsApi.get_asset()
/assets/{id} POST AssetsApi.update_asset()
/assets/{id} DELETE AssetsApi.delete_asset()
/assetsupload POST AssetsApi.upload_asset()
/assetsbulkupdate POST AssetsApi.bulk_update_assets()
/assetsbulkupdate PUT AssetsApi.bulk_upsert_assets()
/assetsbulkupdate DELETE AssetsApi.bulk_delete_assets()

Asset Operations (/assets/{id}/...)

Endpoint Method Client Implementation
/assets/{id}/blobs GET AssetsApi.get_asset_blob()
/assets/{id}/blob GET AssetsApi.get_shared_asset_blob()
/assets/{id}/download GET AssetsApi.download_asset()
/assets/{id}/resize GET AssetsApi.resize_asset()
/assets/{id}/imageedit GET AssetsApi.imageedit_asset()
/assets/{id}/imageedit POST AssetsApi.imageedit_asset_operations()
/assets/{id}/imageedit/{download_format_id} GET AssetsApi.imageedit_asset_by_format()
/assets/{id}/collections GET AssetsApi.get_asset_collections()
/assets/{id}/tocollection POST NOT IMPLEMENTED
/assets/{id}/availability PUT NOT IMPLEMENTED
/assets/{id}/relations GET NOT IMPLEMENTED

Asset Publishing (/assets/{id}/publish*)

Endpoint Method Client Implementation
/assets/{id}/publish GET NOT IMPLEMENTED
/assets/{id}/publish POST NOT IMPLEMENTED
/assets/{id}/publish/{pid} GET NOT IMPLEMENTED
/publish GET PublishingApi.list_published()

Asset Versioning (/assets/{id}/versions*)

Endpoint Method Client Implementation
/assets/{id}/versions GET NOT IMPLEMENTED
/assets/{id}/versions POST NOT IMPLEMENTED
/assets/{id}/versionsupload POST NOT IMPLEMENTED
/assets/{id}/versions/{vNr} GET NOT IMPLEMENTED
/assets/{id}/versions/{vNr} POST NOT IMPLEMENTED
/assets/{id}/versions/{vNr} DELETE NOT IMPLEMENTED
/assets/{id}/versions/{vNr}/restore POST NOT IMPLEMENTED
/assets/{id}/versions/{vNr}/blobs GET NOT IMPLEMENTED

Asset Relations (/assetrelations*)

Endpoint Method Client Implementation
/assetrelations GET RelationsApi.list_relations()
/assetrelations POST RelationsApi.create_relation()
/assetrelations/{id} GET RelationsApi.get_relation()
/assetrelations/{id} POST RelationsApi.update_relation()
/assetrelations/{id} DELETE RelationsApi.delete_relation()

Asset Relation Types (/assetrelationtypes*)

Endpoint Method Client Implementation
/assetrelationtypes GET RelationsApi.list_relation_types()
/assetrelationtypes/{id} GET RelationsApi.get_relation_type()

AI Operations (/ai*)

Endpoint Method Client Implementation
/ai/reverseassetsearch POST AiApi.reverse_asset_search()

Collections (/collections*)

Endpoint Method Client Implementation
/collections GET CollectionsApi.list_collections()
/collections POST CollectionsApi.create_collection()
/collections/{id} GET CollectionsApi.get_collection()
/collections/{id} POST CollectionsApi.update_collection()
/collections/{id} DELETE CollectionsApi.delete_collection()
/collections/{id}/ancestors GET CollectionsApi.get_collection_ancestors()
/collections/{id}/descendants GET CollectionsApi.get_collection_descendants()
/collections/{id}/previews GET CollectionsApi.get_collection_preview()
/collectionsbynames POST CollectionsApi.get_collections_by_names()

Collection Types (/collectiontypes*)

Endpoint Method Client Implementation
/collectiontypes GET CollectionTypesApi.list_collection_types()
/collectiontypes/{id} GET CollectionTypesApi.get_collection_type()
/collectiontypesitems GET NOT IMPLEMENTED

Search (/search*, /savedsearches*)

Endpoint Method Client Implementation
/search GET NOT IMPLEMENTED (POST available)
/search POST SearchApi.search()
/search/facette GET NOT IMPLEMENTED (POST available)
/search/facette POST SearchApi.search_facette()
/searchadmin/status GET SearchApi.get_search_admin_status()
/savedsearches GET SearchApi.list_saved_searches()

Sharing Management (/shared*, /quickshares*)

Endpoint Method Client Implementation
/shared/{id} GET SharingApi.get_shared_collection()
/shared/{id}/zip POST SharingApi.create_shared_collection_zip()
/shared/{id}/zip/{zipId} GET SharingApi.get_shared_collection_zip_status()
/quickshares/{id} GET SharingApi.get_quickshare()

Secure Upload (/secureupload*)

Endpoint Method Client Implementation
/secureupload/{id} GET SecureUploadApi.check_secure_upload()
/secureupload/{id}/upload POST NOT IMPLEMENTED

Authentication (/auth*)

Endpoint Method Client Implementation
/auth/containerwrite/{containerName} GET AuthApi.get_container_write_sas_token()
/auth/inbox GET AuthApi.get_inbox_sas_token()
/auth/users/{id} GET NOT IMPLEMENTED

Download Formats (/downloadformats*)

Endpoint Method Client Implementation
/downloadformats GET DownloadFormatsApi.list_download_formats()
/downloadformats-shared GET DownloadFormatsApi.list_download_formats_from_shared()

Helper Tools (/helper*)

Endpoint Method Client Implementation
/helper/userdefinedlists GET HelperApi.get_user_defined_lists()
/helper/userdefinedlists PATCH NOT IMPLEMENTED
/helper/searchableitemnames GET HelperApi.get_searchable_item_names()
/helper/searchableitems GET HelperApi.get_searchable_items()
/helper/filterableitems GET HelperApi.get_filterable_items()

Static Lists (/staticdefinedlists*)

Endpoint Method Client Implementation
/staticdefinedlists GET StaticListsApi.list_static_defined_lists()
/staticdefinedlists/{id} GET StaticListsApi.get_static_defined_list()
/staticdefinedlists/{id} PUT StaticListsApi.update_static_defined_list()

Translations (/translations*)

Endpoint Method Client Implementation
/translations/{id} GET TranslationsApi.get_translation()
/translations/{id}/{property} PUT TranslationsApi.update_translation_property()
/translations/{id}/{property}/custom/{customField} PUT TranslationsApi.update_translation_custom_field()

Web App Data (/webappdata*)

Endpoint Method Client Implementation
/webappdata GET WebAppDataApi.get_web_app_data()
/webappdata/{id} GET WebAppDataApi.get_web_app_data_by_collection_type()
/data/collectiontype/{id} GET NOT IMPLEMENTED

Workspaces (/workspaces*)

Endpoint Method Client Implementation
/workspaces GET WorkspacesApi.list_workspaces()
/workspaces/{id} GET WorkspacesApi.get_workspace()

General & Configuration (/config*, /version, /deleted, etc.)

Endpoint Method Client Implementation
/config/frontend GET GeneralApi.get_frontend_config()
/version GET GeneralApi.get_version()
/deleted GET GeneralApi.get_deleted_entities()
/durable/{instanceId} GET GeneralApi.get_durable_status()
/durable/scch/{instanceId} GET NOT IMPLEMENTED
/public/view GET NOT IMPLEMENTED
/signalr/negotiate POST GeneralApi.get_signalr_connection_info()

2. MISSING ENDPOINTS (In Swagger but NOT Implemented)

High Priority - Core Functionality

  1. Asset Versioning (~8 endpoints)

    • /assets/{id}/versions - GET, POST
    • /assets/{id}/versionsupload - POST
    • /assets/{id}/versions/{vNr} - GET, POST, DELETE
    • /assets/{id}/versions/{vNr}/restore - POST
    • /assets/{id}/versions/{vNr}/blobs - GET
  2. Asset Publishing (~3 endpoints)

    • /assets/{id}/publish - GET, POST
    • /assets/{id}/publish/{pid} - GET
  3. Asset Operations (~3 endpoints)

    • /assets/{id}/tocollection - POST (move/assign to collection)
    • /assets/{id}/availability - PUT (lock/unlock assets)
    • /assets/{id}/relations - GET (retrieve asset relations)

Medium Priority - User Workflows

  1. Secure Upload (~1 endpoint)

    • /secureupload/{id}/upload - POST
  2. Authentication (~1 endpoint)

    • /auth/users/{id} - GET
  3. Portal Global Endpoints (~2 endpoints)

    • /portalsenhancetoken - POST (global, not portal-specific)
    • /portalssaveuserattributes - POST (global, not portal-specific)

Lower Priority - Utility/Admin

  1. Helper Tools (~1 endpoint)

    • /helper/userdefinedlists - PATCH (cache update)
  2. Collection Types (~1 endpoint)

    • /collectiontypesitems - GET
  3. General (~2 endpoints)

    • /durable/scch/{instanceId} - GET (durable SCCH training)
    • /public/view - GET (public asset view)
  4. Web App Data (~1 endpoint)

    • /data/collectiontype/{id} - GET

Search Endpoints (GET vs POST)

  • /search - GET variant (POST is implemented; GET not implemented)
  • /search/facette - GET variant (POST is implemented; GET not implemented)

3. EXTRA CLIENT METHODS (Not in Swagger)

Based on the analysis of the client's API modules, the following methods exist but don't have direct Swagger endpoint mappings:

Portals Module

  • PortalsApi.list_portals() - NOT in swagger (No /portals list endpoint found)

Assets Module

  • AssetsApi.upload_asset_from_path() - Convenience wrapper (wraps upload_asset())

Sharing Module

  • SharingApi.list_shared_collections() - Possible missing endpoint (GET /sharing not clearly defined in swagger excerpt)
  • SharingApi.list_quickshares() - Possible missing endpoint (GET /sharing/quickshares not clearly defined in swagger excerpt)

Search Module

  • Methods use POST endpoints while Swagger also defines GET variants - client chose to implement POST for consistency

4. SUMMARY STATISTICS

Overall Coverage

Metric Count
Total Swagger Endpoints 128
Fully Implemented 88
Partially Implemented 8
Not Implemented 32
Implementation Rate 68.75%

By Category

Category Total Impl Missing Coverage
Portals 6 6 2 75%
Assets (CRUD) 9 9 0 100%
Asset Operations 11 7 4 64%
Asset Publishing 4 1 3 25%
Asset Versioning 8 0 8 0%
Asset Relations 7 7 0 100%
AI Operations 1 1 0 100%
Collections 9 9 0 100%
Collection Types 3 2 1 67%
Search 6 3 3 50%
Sharing 4 4 0 100%
Secure Upload 2 1 1 50%
Authentication 3 2 1 67%
Download Formats 2 2 0 100%
Helper Tools 5 4 1 80%
Static Lists 3 3 0 100%
Translations 3 3 0 100%
Web App Data 3 2 1 67%
Workspaces 2 2 0 100%
General/Config 8 5 3 63%

5. RECOMMENDATIONS

High Priority - Should Implement

  1. Asset Versioning (8 endpoints) - Complete version history management is important for enterprise DAM
  2. Asset Publishing (3 endpoints) - Essential for multi-channel distribution workflows
  3. Asset Availability/Lock (1 endpoint) - Commonly needed for content workflows

Medium Priority - Should Consider

  1. Secure Upload Upload Handler (1 endpoint) - Needed for secure file ingestion
  2. Search GET Variants (2 endpoints) - For REST API consistency with other GET operations
  3. Auth User Lookup (1 endpoint) - Useful for user-related operations

Lower Priority - Nice to Have

  1. Portal Global Endpoints (2) - If portal-level operations are needed
  2. Helper Utilities (1) - Cache management utilities
  3. Durable SCCH (1) - Specialized training workflow

6. MODULE IMPLEMENTATION SUMMARY

Fully Complete Modules (100%)

  • AssetsApi: Core CRUD operations complete
  • RelationsApi: All asset relations implemented
  • CollectionsApi: All collection operations
  • AiApi: Reverse search complete
  • SharingApi: All sharing operations
  • CollectionTypesApi: Type definitions
  • DownloadFormatsApi: Format management
  • StaticListsApi: Static lists
  • TranslationsApi: Translation operations
  • WorkspacesApi: Workspace management

Partial Modules (50-99%)

  • ⚠️ PortalsApi: 75% (missing 2 global endpoints, 1 list endpoint)
  • ⚠️ SearchApi: 50% (GET variants missing; POST implemented)
  • ⚠️ HelperApi: 80% (missing PATCH cache update)
  • ⚠️ DownloadFormatsApi: 100% (covered, though shared variant named differently)
  • ⚠️ WebAppDataApi: 67% (missing /data/collectiontype/{id})
  • ⚠️ AuthApi: 67% (missing user by ID endpoint)

Significant Gaps

  • Asset Versioning: 0% implementation (no methods)
  • Asset Publishing: 25% (only global list, missing individual asset publish)
  • Secure Upload: 50% (check exists, but no upload handler)

Conclusion

The agravity_client Python SDK has excellent coverage of core DAM operations with 68.75% endpoint implementation. The client successfully implements:

All basic CRUD operations for assets and collections
Complete search functionality
Asset relationships and relations
Collection hierarchy navigation
Download formats and transformations
Portal and sharing capabilities

However, there are notable gaps in:

Asset Versioning - Complete feature absent
Asset Publishing - Minimal implementation
Asset Availability Control - Workflow feature missing

These gaps represent ~21 related and interconnected endpoints. Implementing asset versioning and publishing would likely increase coverage to ~80%, making it enterprise-ready for version-controlled asset management.