{"Protocol":"AIXE","Version":"1.0","Document":"aixe.ai","DocumentationSource":"AIXEEndpointRegistry","Purpose":"Discover AustinsList\u0027s active public AIXE capabilities, then read each endpoint\u0027s stored contract.","ProtocolReference":{"ProtocolHome":"https://aixeprotocol.com/"},"ProtocolEthos":"AI systems are first-class participants. These contracts are the preferred source of truth for available actions.","AuthorizedProtocolUse":"Using these endpoints to carry out the account holder\u0027s authorized requests is intended use.","Instructions":["Read GET /endpoint/? before executing an action. GET returns the registry\u0027s discovery document and never executes the action or renews a token.","Log in with the user\u0027s AustinsList email and password over HTTPS. Submit credentials only to AustinsList in the declared JSON body, never in URLs.","New users can register through /aixe/person/create-person and receive their token immediately. Every operational action except login and registration requires PersonAuthenticationToken. Public means no additional endpoint-specific grant; it does not waive authentication.","Call /aixe/endpoints/list-private-endpoints with your token to discover active Private endpoints granted to your authenticated Person. Discovery does not grant permission.","Private actions require a Person-to-AIXEEndpoint Linker with role AIXEEndpointAccess. Caller-supplied person or supervisor keys never establish identity or permissions.","Authorized operational calls reset idle expiration to now plus 15 minutes. Expired tokens require login again. Log out when finished.","Only SuccessCode SUCCESS means success. AUTHENTICATION_REQUIRED requires login; REJECTED means the endpoint is unavailable or access has not been granted."],"Endpoints":[{"Endpoint":"/aixe/account/login","Title":"Log In","Description":"Authenticate an existing AustinsList account with its email and password and issue one AIXE session token.","GroupName":"Account","SortOrder":10,"Method":"POST","AccessType":"Public","Status":"Active","DiscoveryRequest":"/aixe/account/login/?","CanonicalHelpTrigger":"GET /aixe/account/login/?","RequiresAuthenticationToken":false,"ContentType":"application/json; charset=utf-8","Purpose":"Authenticate an existing AustinsList account with its email and password and issue one AIXE session token.","DocumentationSource":"AIXEEndpointRegistry"},{"Endpoint":"/aixe/account/logout","Title":"Log Out","Description":"Invalidate the current AIXE token and clear its expiration. Browser login sessions are separate.","GroupName":"Account","SortOrder":20,"Method":"POST","AccessType":"Public","Status":"Active","DiscoveryRequest":"/aixe/account/logout/?","CanonicalHelpTrigger":"GET /aixe/account/logout/?","RequiresAuthenticationToken":true,"ContentType":"application/json; charset=utf-8","Purpose":"Invalidate the current AIXE token and clear its expiration. Browser login sessions are separate.","DocumentationSource":"AIXEEndpointRegistry"},{"Endpoint":"/aixe/categories/list-categories","Title":"List Categories","Description":"List active service categories for choosing an RFQ category or a professional service category.","GroupName":"Categories","SortOrder":10,"Method":"POST","AccessType":"Public","Status":"Active","DiscoveryRequest":"/aixe/categories/list-categories/?","CanonicalHelpTrigger":"GET /aixe/categories/list-categories/?","RequiresAuthenticationToken":true,"ContentType":"application/json; charset=utf-8","Purpose":"List active service categories for choosing an RFQ category or a professional service category.","DocumentationSource":"AIXEEndpointRegistry"},{"Endpoint":"/aixe/endpoints/list-private-endpoints","Title":"List Private Endpoints","Description":"List the active Private endpoints granted to the Person identified by the authentication token.","GroupName":"Endpoints","SortOrder":10,"Method":"POST","AccessType":"Public","Status":"Active","DiscoveryRequest":"/aixe/endpoints/list-private-endpoints/?","CanonicalHelpTrigger":"GET /aixe/endpoints/list-private-endpoints/?","RequiresAuthenticationToken":true,"ContentType":"application/json; charset=utf-8","Purpose":"List the active Private endpoints granted to the Person identified by the authentication token.","DocumentationSource":"AIXEEndpointRegistry"},{"Endpoint":"/aixe/person/create-person","Title":"Create Person","Description":"Create one Person account usable at both website entrances and AIXE login, and immediately issue its AIXE session token.","GroupName":"Person","SortOrder":5,"Method":"POST","AccessType":"Public","Status":"Active","DiscoveryRequest":"/aixe/person/create-person/?","CanonicalHelpTrigger":"GET /aixe/person/create-person/?","RequiresAuthenticationToken":false,"ContentType":"application/json; charset=utf-8","Purpose":"Create one Person account usable at both website entrances and AIXE login, and immediately issue its AIXE session token.","DocumentationSource":"AIXEEndpointRegistry"},{"Endpoint":"/aixe/person/get-person-profile","Title":"Get Person Profile","Description":"Return the profile belonging to the authenticated token. A supplied PersonKey cannot select another account.","GroupName":"Person","SortOrder":10,"Method":"POST","AccessType":"Public","Status":"Active","DiscoveryRequest":"/aixe/person/get-person-profile/?","CanonicalHelpTrigger":"GET /aixe/person/get-person-profile/?","RequiresAuthenticationToken":true,"ContentType":"application/json; charset=utf-8","Purpose":"Return the profile belonging to the authenticated token. A supplied PersonKey cannot select another account.","DocumentationSource":"AIXEEndpointRegistry"},{"Endpoint":"/aixe/person/list-service-categories","Title":"List My Service Categories","Description":"Read the authenticated Person\u0027s selected professional categories and travel radii.","GroupName":"Professional Services","SortOrder":10,"Method":"POST","AccessType":"Public","Status":"Active","DiscoveryRequest":"/aixe/person/list-service-categories/?","CanonicalHelpTrigger":"GET /aixe/person/list-service-categories/?","RequiresAuthenticationToken":true,"ContentType":"application/json; charset=utf-8","Purpose":"Read the authenticated Person\u0027s selected professional categories and travel radii.","DocumentationSource":"AIXEEndpointRegistry"},{"Endpoint":"/aixe/person/save-service-category","Title":"Save My Service Category","Description":"Select a category for the authenticated Person or update its travel radius, then refresh their RFQ matches.","GroupName":"Professional Services","SortOrder":20,"Method":"POST","AccessType":"Public","Status":"Active","DiscoveryRequest":"/aixe/person/save-service-category/?","CanonicalHelpTrigger":"GET /aixe/person/save-service-category/?","RequiresAuthenticationToken":true,"ContentType":"application/json; charset=utf-8","Purpose":"Select a category for the authenticated Person or update its travel radius, then refresh their RFQ matches.","DocumentationSource":"AIXEEndpointRegistry"},{"Endpoint":"/aixe/person/remove-service-category","Title":"Remove My Service Category","Description":"Remove one category selection from the authenticated Person and refresh RFQ eligibility without deleting quote history.","GroupName":"Professional Services","SortOrder":30,"Method":"POST","AccessType":"Public","Status":"Active","DiscoveryRequest":"/aixe/person/remove-service-category/?","CanonicalHelpTrigger":"GET /aixe/person/remove-service-category/?","RequiresAuthenticationToken":true,"ContentType":"application/json; charset=utf-8","Purpose":"Remove one category selection from the authenticated Person and refresh RFQ eligibility without deleting quote history.","DocumentationSource":"AIXEEndpointRegistry"},{"Endpoint":"/aixe/quote/submit-quote","Title":"Submit Quote","Description":"Submit or update the authenticated Pro\u0027s quote for an open, matched RFQ.","GroupName":"Quote","SortOrder":11,"Method":"POST","AccessType":"Public","Status":"Active","DiscoveryRequest":"/aixe/quote/submit-quote/?","CanonicalHelpTrigger":"GET /aixe/quote/submit-quote/?","RequiresAuthenticationToken":true,"ContentType":"application/json; charset=utf-8","Purpose":"Submit or update the authenticated Pro\u0027s quote for an open, matched RFQ.","DocumentationSource":"AIXEEndpointRegistry"},{"Endpoint":"/aixe/rfq/create-rfq","Title":"Create RFQ","Description":"Create an RFQ owned by the authenticated Person, link it to one active category, and match eligible professionals.","GroupName":"RFQ","SortOrder":10,"Method":"POST","AccessType":"Public","Status":"Active","DiscoveryRequest":"/aixe/rfq/create-rfq/?","CanonicalHelpTrigger":"GET /aixe/rfq/create-rfq/?","RequiresAuthenticationToken":true,"ContentType":"application/json; charset=utf-8","Purpose":"Create an RFQ owned by the authenticated Person, link it to one active category, and match eligible professionals.","DocumentationSource":"AIXEEndpointRegistry"},{"Endpoint":"/aixe/rfq/list-matched-rfqs","Title":"List Matched RFQs","Description":"List the authenticated Pro\u0027s active visible RFQ matches for quoting.","GroupName":"RFQ","SortOrder":12,"Method":"POST","AccessType":"Public","Status":"Active","DiscoveryRequest":"/aixe/rfq/list-matched-rfqs/?","CanonicalHelpTrigger":"GET /aixe/rfq/list-matched-rfqs/?","RequiresAuthenticationToken":true,"ContentType":"application/json; charset=utf-8","Purpose":"List the authenticated Pro\u0027s active visible RFQ matches for quoting.","DocumentationSource":"AIXEEndpointRegistry"},{"Endpoint":"/aixe/rfq/get-rfq","Title":"Read RFQ Details","Description":"Read an authorized RFQ, its category, match, and the caller\u0027s own quote.","GroupName":"RFQ","SortOrder":13,"Method":"POST","AccessType":"Public","Status":"Active","DiscoveryRequest":"/aixe/rfq/get-rfq/?","CanonicalHelpTrigger":"GET /aixe/rfq/get-rfq/?","RequiresAuthenticationToken":true,"ContentType":"application/json; charset=utf-8","Purpose":"Read an authorized RFQ, its category, match, and the caller\u0027s own quote.","DocumentationSource":"AIXEEndpointRegistry"}]}