{"openapi":"3.1.0","info":{"title":"Productmate Google Review Link API","version":"1.0.0","description":"Convert a Google Maps URL into a direct Google review link with a free, URL-only API."},"servers":[{"url":"https://productmate.com"}],"paths":{"/api/v1/google-review-link":{"post":{"summary":"Convert a Google Maps URL into a direct Google review link","operationId":"createGoogleReviewLink","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["maps_url"],"properties":{"maps_url":{"type":"string","maxLength":8192,"example":"https://www.google.com/maps/place/PRODUCTMATE/data=!1s0x47b18f1cae867bab:0xb6f8b3a3753ba1a2!8m2"}}}}}},"responses":{"200":{"description":"Review link created","content":{"application/json":{"schema":{"type":"object","required":["place_id","review_url","verification"],"additionalProperties":false,"properties":{"place_id":{"type":"string"},"review_url":{"type":"string","format":"uri"},"verification":{"type":"string","const":"not_verified"}}},"example":{"place_id":"ChIJq3uGrhyPsUcRoqE7daOz-LY","review_url":"https://search.google.com/local/writereview?placeid=ChIJq3uGrhyPsUcRoqE7daOz-LY","verification":"not_verified"}}}},"400":{"description":"Invalid request","content":{"application/json":{"example":{"error":{"code":"invalid_request","message":"maps_url must be a non-empty string.","recovery":"Send JSON with one non-empty maps_url string."}},"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","recovery"],"properties":{"code":{"type":"string","enum":["invalid_request","unsupported_url","unsafe_redirect","upstream_unresolved","upstream_timeout"]},"message":{"type":"string"},"recovery":{"type":"string"}}}}}}}},"422":{"description":"Unsupported or unsafe URL","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","recovery"],"properties":{"code":{"type":"string","enum":["invalid_request","unsupported_url","unsafe_redirect","upstream_unresolved","upstream_timeout"]},"message":{"type":"string"},"recovery":{"type":"string"}}}}}}}},"429":{"description":"Rate limit exceeded at the edge"},"502":{"description":"Short URL could not be resolved","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","recovery"],"properties":{"code":{"type":"string","enum":["invalid_request","unsupported_url","unsafe_redirect","upstream_unresolved","upstream_timeout"]},"message":{"type":"string"},"recovery":{"type":"string"}}}}}}}},"504":{"description":"Short URL resolution timed out","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","recovery"],"properties":{"code":{"type":"string","enum":["invalid_request","unsupported_url","unsafe_redirect","upstream_unresolved","upstream_timeout"]},"message":{"type":"string"},"recovery":{"type":"string"}}}}}}}}}}}}}