{"openapi":"3.0.0","info":{"title":"Rankify API","version":"1.0.0","description":"REST API for all Sappo Shopify apps. Authenticate with a Bearer token generated in your app settings."},"servers":[{"url":"https:\/\/api-staging.sappo.xco.agency","description":"Rankify API"}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"mak_xxx","description":"API token generated in your app Settings \u2192 API Access."}},"schemas":{"PaginatedResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"meta":{"type":"object","properties":{"page":{"type":"integer"},"pageSize":{"type":"integer"},"total":{"type":"integer"}}}}},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}}}}}}},"security":[{"BearerAuth":[]}],"paths":{"\/rankify\/v1\/collections":{"get":{"tags":["Collections"],"summary":"List collections","description":"Returns a paginated list of collections with their sort strategies.","operationId":"listCollections","parameters":[{"name":"page","in":"query","schema":{"type":"integer","default":1}},{"name":"page_size","in":"query","schema":{"type":"integer","default":25,"maximum":100}},{"name":"type","in":"query","description":"Filter by collection type (smart_collection or custom_collection)","schema":{"type":"string"}},{"name":"has_strategy","in":"query","description":"Filter collections that have (true) or lack (false) a sort strategy","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Paginated list of collections","$ref":"#\/components\/schemas\/PaginatedResponse"},"401":{"description":"Unauthorized","$ref":"#\/components\/schemas\/Error"},"429":{"description":"Rate limited","$ref":"#\/components\/schemas\/Error"}},"security":[{"BearerAuth":[]}]}},"\/rankify\/v1\/strategies":{"get":{"tags":["Strategies"],"summary":"List sort strategies","description":"Returns a paginated list of collection sort strategies with their rules and assigned collections.","operationId":"listStrategies","parameters":[{"name":"page","in":"query","schema":{"type":"integer","default":1}},{"name":"page_size","in":"query","schema":{"type":"integer","default":25,"maximum":100}},{"name":"active","in":"query","description":"Filter by active status (true\/false)","schema":{"type":"boolean"}},{"name":"status","in":"query","description":"Filter by job status (pending, done, failed, etc.)","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated list of sort strategies","$ref":"#\/components\/schemas\/PaginatedResponse"},"401":{"description":"Unauthorized","$ref":"#\/components\/schemas\/Error"},"429":{"description":"Rate limited","$ref":"#\/components\/schemas\/Error"}},"security":[{"BearerAuth":[]}]}}}}