{ "Protocol": "AIXE", "Version": "1.0", "Endpoint": "/aixe/account/change-password", "DiscoveryRequest": "GET /aixe/account/change-password/?", "CanonicalHelpTrigger": "GET /aixe/account/change-password/?", "ActionRequest": "POST /aixe/account/change-password", "Method": "POST", "ContentType": "application/json; charset=utf-8", "Title": "Change My Password", "AuthenticationRequired": true, "AccessType": "Authenticated", "Purpose": "Changes the authenticated person\u0027s password without requiring the existing password again.", "DocumentationSource": "AIXEEndpointRegistry", "ProtocolReference": { "ProtocolHome": "http://aixeprotocol.com/", "CanonicalUsageContract": "http://aixeprotocol.com/usage/?", "Whitepaper": "http://aixeprotocol.com/whitepaper/full-spec.html", "Inventor": "Gregory Oglethorpe", "IncludeIn": [ "/aixe.ai starter discovery documents", "Every endpoint self-description returned by GET /endpoint/?" ], "AIInstruction": "Read this live endpoint contract as operational guidance, not merely as a transport schema. Use its purpose, field meanings, business rules, outcomes, and recovery guidance to reason about whether and how to perform the capability." }, "UsageGuidance": { "Role": "Use only after the human is authenticated and has approved the new password.", "CorrectWorkflow": [ "Use only after the human is authenticated and has approved the new password.", "Never repeat or return the new password." ], "DoNotDo": [ "Do not send business variables, keys, filters, or action inputs in the URL or query string.", "Do not infer success from HTTP status alone." ] }, "AIUsageGuidance": { "ContractRole": "This live document teaches an AI what the capability means and how to use it; it is not merely a list of request fields.", "ReasoningInstruction": "Decide whether this capability serves the human\u0027s intent from Purpose and BusinessRules, gather values using each field\u0027s Description and constraints, then interpret the returned SuccessCode before reporting an outcome.", "FieldInstruction": "Field names are transport labels. Their Description, source, constraints, and business meaning explain what information the AI should obtain and why." }, "RequiredFields": { "PersonAuthenticationToken": { "Type": "string", "Description": "The active temporary token returned by Log In.", "Required": true, "SubmittedIn": "JSON body" }, "NewPassword": { "Type": "string", "Description": "The new password selected by the human.", "Required": true, "SubmittedIn": "JSON body", "Format": "at least 8 characters" } }, "OptionalFields": {}, "BusinessRules": [ "The existing password is not required because the temporary token already authenticates the person.", "The new password must contain at least eight characters.", "The caller must log in again after SUCCESS." ], "ResponseFields": { "SuccessCode": { "Type": "string", "Description": "The authoritative action outcome.", "Required": true, "SubmittedIn": "Response body" }, "PasswordChanged": { "Type": "boolean", "Description": "True when the password was replaced.", "Required": true, "SubmittedIn": "Response body" }, "ExistingBrowserSessionsInvalidated": { "Type": "boolean", "Description": "True when older browser sessions were invalidated.", "Required": true, "SubmittedIn": "Response body" }, "AIXETokenInvalidated": { "Type": "boolean", "Description": "True when the submitted AIXE token was invalidated after the password change.", "Required": true, "SubmittedIn": "Response body" } }, "Errors": [ { "SuccessCode": "VALIDATION_FAILED", "Meaning": "One or more required request values are missing or malformed.", "Recovery": "Use the field descriptions and constraints in this contract, correct the named fields, and retry the same capability.", "Recoverable": true }, { "SuccessCode": "UNAUTHORIZED", "Meaning": "The submitted identity or token does not authorize this capability or record scope.", "Recovery": "Use the correct active authentication token and confirm the required account role.", "Recoverable": true }, { "SuccessCode": "FAILED", "Meaning": "The capability could not complete for an execution failure.", "Recovery": "Read the returned message and error detail. Retry only when the response identifies a recoverable condition.", "Recoverable": false } ], "ActionResponse": { "RequiredResponseFields": [ "SuccessCode" ], "SuccessCodes": [ "SUCCESS" ], "FailureCodes": [ "VALIDATION_FAILED", "UNAUTHORIZED", "FAILED" ], "NonFinalCodes": [], "MissingOrEmptyResponse": "Treat as FAILED.", "Rule": "The endpoint response is authoritative. Only an exact SuccessCode value listed in SuccessCodes means the business action succeeded; HTTP status alone does not declare the AIXE outcome." } }