{"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/images/upload-image","Method":"POST","ContentType":"multipart/form-data","Title":"Upload Image","Description":"Upload Image. Use the documented inputs and the current access rules for the selected account and profile.","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":"MatchingProfileKey","Type":"GUID string","Required":true,"Description":"An owned profile key returned by list-my-profiles or create-profile."},{"Name":"File","Type":"file","Required":true,"Description":"Image file form part; up to configured 15 MB and 40 megapixels. Re-encoded with embedded metadata removed."},{"Name":"Caption","Type":"string","Required":false,"Description":"Image caption, up to 1000 characters."}],"BusinessInputs":"PersonAuthenticationToken (required); MatchingProfileKey (required); File (required); Caption (optional)","PrivateAccess":"No endpoint-specific grant.","Guidance":"Use only resources accessible to the selected profile. No address collection. Private Thoughts and operational email settings never belong to another member\u2019s response.","Pagination":{"Default":20,"Maximum":50,"Cursor":"Opaque server-issued NextCursor; apply to the same acting profile and filters.","Order":"Stable operation-specific order"},"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","MatchingProfileKey":"00000000-0000-0000-0000-000000000001","File":"BINARY_FILE_PART"},"Failure":{"SuccessCode":"VALIDATION_FAILED","Message":"Select a valid required resource."}}}