{"Protocol":"AIXE","Version":"1.0","ProtocolReference":{"Inventor":"Gregory Oglethorpe","Home":"http://aixeprotocol.com/","Usage":"http://aixeprotocol.com/usage/?","Specification":"http://aixeprotocol.com/whitepaper/full-spec.html"},"Endpoint":"/aixe/matching/search-profiles","Method":"POST","ContentType":"application/json","Title":"Search Profiles","Description":"Search Profiles. Find reciprocal practical matches for the acting profile. Read active Thoughts before making recommendations and explain every suggested fit using retrieved evidence.","RequiresAuthenticationToken":true,"Authentication":"PersonAuthenticationToken in JSON body (text form part for upload); 15-minute sliding idle expiry. Re-login after expiry.","InputFields":[{"Name":"PersonAuthenticationToken","Type":"string","Required":true,"Description":"Secret token returned by login. Never put it in a URL or expose it to another member."},{"Name":"ActingMatchingProfileKey","Type":"GUID string","Required":true,"Description":"Owned profile acting in this request. Social actions require Active state; read and management exceptions are described by the operation."},{"Name":"MatchingBeginAge","Type":"integer","Required":false,"Description":"Integer from 18 through 110; cannot exceed MatchingEndAge. Search may only narrow saved preferences."},{"Name":"MatchingEndAge","Type":"integer","Required":false,"Description":"Integer from 18 through 110; cannot be below MatchingBeginAge. Search may only narrow saved preferences."},{"Name":"MatchingRadiusMiles","Type":"number or null","Required":false,"Description":"Number from 1 through 500. Search may only narrow saved preferences. Distance uses ZIP centroids."},{"Name":"MaxResults","Type":"integer","Required":false,"Description":"Page size 1\u201350, default 20. Connection directory supports up to 100, default 100."},{"Name":"Cursor","Type":"string","Required":false,"Description":"Opaque NextCursor from this same list with the same profile and filters. Omit on the first page."}],"BusinessInputs":"PersonAuthenticationToken (required); ActingMatchingProfileKey (required); MatchingBeginAge (optional); MatchingEndAge (optional); MatchingRadiusMiles (optional); MaxResults (optional); Cursor (optional)","PrivateAccess":"No endpoint-specific grant.","Guidance":"Read the acting profile and its active Thoughts before recommending or introducing. Ground every WHY explanation in retrieved content/images, acknowledge uncertainty, never assign compatibility percentages. Send only within the human\u2019s authorization.","Pagination":{"Default":20,"Maximum":50,"Cursor":"Opaque server-issued NextCursor; apply to the same acting profile and filters.","Order":"Distance then MatchingProfileKey"},"Response":{"SuccessCode":"SUCCESS","Message":"Action completed.","Data":"Declared operation result; resource keys only. No PersonKey or numeric IDs.","PersonAuthenticationTokenExpiration":"UTC ISO-8601 when authenticated"},"Errors":["VALIDATION_FAILED","AUTHENTICATION_REQUIRED","LOGIN_FAILED","EMAIL_ALREADY_REGISTERED","NOT_FOUND","REJECTED","BUSINESS_RULE_FAILED","CONFLICT","RATE_LIMITED","FAILED"],"Recovery":"Correct validation inputs; reload on conflict; log in again on expired authentication. Never retry absent authorization.","Retry":"Read current state after an uncertain mutation result before retrying.","Example":{"Request":{"PersonAuthenticationToken":"TOKEN_FROM_LOGIN","ActingMatchingProfileKey":"00000000-0000-0000-0000-000000000001"},"Failure":{"SuccessCode":"VALIDATION_FAILED","Message":"Select a valid required resource."}}}