{ "Protocol": "AIXE", "Version": "1.0", "Endpoint": "/aixe/customers/create-profile", "DiscoveryRequest": "GET /aixe/customers/create-profile/?", "CanonicalHelpTrigger": "GET /aixe/customers/create-profile/?", "ActionRequest": "POST /aixe/customers/create-profile", "Method": "POST", "ContentType": "application/json; charset=utf-8", "Title": "Create A Customer Profile", "AuthenticationRequired": false, "AccessType": "Public", "Purpose": "Creates a customer profile using the same name, address, contact, and password information collected by the website registration page.", "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": "Explain the required profile information and obtain the human\u0027s approval before creation.", "CorrectWorkflow": [ "Explain the required profile information and obtain the human\u0027s approval before creation.", "Never repeat, log, or return the submitted 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": { "FirstName": { "Type": "string", "Description": "The customer\u0027s first name.", "Required": true, "SubmittedIn": "JSON body", "MaxLength": 100 }, "LastName": { "Type": "string", "Description": "The customer\u0027s last name.", "Required": true, "SubmittedIn": "JSON body", "MaxLength": 100 }, "AddressLine1": { "Type": "string", "Description": "The customer\u0027s primary street-address line.", "Required": true, "SubmittedIn": "JSON body", "MaxLength": 200 }, "City": { "Type": "string", "Description": "The city in the customer\u0027s stored address.", "Required": true, "SubmittedIn": "JSON body", "MaxLength": 100 }, "State": { "Type": "string", "Description": "The state in the customer\u0027s stored address.", "Required": true, "SubmittedIn": "JSON body", "MaxLength": 50 }, "PostalCode": { "Type": "string", "Description": "The postal code in the customer\u0027s stored address.", "Required": true, "SubmittedIn": "JSON body", "MaxLength": 20 }, "Email": { "Type": "string", "Description": "The customer\u0027s unique login and contact email address.", "Required": true, "SubmittedIn": "JSON body", "Format": "email address", "MaxLength": 254 }, "Phone": { "Type": "string", "Description": "The customer\u0027s contact phone number.", "Required": true, "SubmittedIn": "JSON body", "MaxLength": 50 }, "Password": { "Type": "string", "Description": "The customer-selected password. It is one-way hashed and never returned.", "Required": true, "SubmittedIn": "JSON body", "Format": "at least 8 characters" } }, "OptionalFields": { "AddressLine2": { "Type": "string", "Description": "An apartment, suite, unit, or other secondary address line.", "Required": false, "SubmittedIn": "JSON body", "MaxLength": 200 } }, "BusinessRules": [ "The human must approve profile creation.", "The normalized email address must be unique.", "The password must contain at least eight characters and is never returned.", "CustomerKey is not a password or bearer token." ], "ResponseFields": { "SuccessCode": { "Type": "string", "Description": "The authoritative action outcome. SUCCESS means the customer profile was created.", "Required": true, "SubmittedIn": "Response body" }, "CustomerCreated": { "Type": "boolean", "Description": "True when the customer profile and Customer role were saved.", "Required": true, "SubmittedIn": "Response body" }, "CustomerKey": { "Type": "string", "Description": "The new customer\u0027s public key. It is an identifier, not an authentication credential.", "Required": true, "SubmittedIn": "Response body" }, "CustomerName": { "Type": "string", "Description": "The customer\u0027s saved display name.", "Required": true, "SubmittedIn": "Response body" }, "CustomerEmail": { "Type": "string", "Description": "The customer\u0027s saved email address.", "Required": true, "SubmittedIn": "Response body" }, "NextStep": { "Type": "string", "Description": "Plain-language guidance for logging in before protected actions.", "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": "BUSINESS_RULE_FAILED", "Meaning": "The request was understood but a declared business or workflow rule was not satisfied.", "Recovery": "Explain the governing rule to the human and retry only after the required condition or decision changes.", "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", "BUSINESS_RULE_FAILED", "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." } }