{
  "protocol": "AIXE",
  "version": "1.0",
  "authentication": {
    "login": "/aixe/account/login",
    "tokenField": "PersonAuthenticationToken",
    "tokenMinutes": 15,
    "businessSelection": "Submit BusinessKey with Email and Password at login. Obtain BusinessKey from the business\u0027s hosted manifest."
  },
  "accountEndpoints": [
    {
      "endpoint": "/haixe/quick-order/cancel-order",
      "path": "/haixe/quick-order/cancel-order",
      "title": "Cancel Order",
      "description": "Cancel Order through the public, no-login quick-order flow.",
      "purpose": "Cancel Order through the public, no-login quick-order flow.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 0,
      "discoveryRequest": "GET /haixe/quick-order/cancel-order/?",
      "usageContract": "/haixe/quick-order/cancel-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/customer-check",
      "path": "/haixe/quick-order/customer-check",
      "title": "Customer Check",
      "description": "Customer Check through the public, no-login quick-order flow.",
      "purpose": "Customer Check through the public, no-login quick-order flow.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 450,
      "discoveryRequest": "GET /haixe/quick-order/customer-check/?",
      "usageContract": "/haixe/quick-order/customer-check/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/place-order",
      "path": "/haixe/quick-order/place-order",
      "title": "Place Order",
      "description": "Resolves or creates a customer and places selected products or scheduled services in one quick order with customer and business notifications.",
      "purpose": "Resolves or creates a customer and places selected products or scheduled services in one quick order with customer and business notifications.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 460,
      "discoveryRequest": "GET /haixe/quick-order/place-order/?",
      "usageContract": "/haixe/quick-order/place-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/list-businesses",
      "path": "/aixe/account/list-businesses",
      "title": "List Businesses",
      "description": "List the authenticated Person\u0027s active owned businesses so the human can choose which business to manage or switch to. Returns up to 100 business key/name summaries per page.",
      "purpose": "List the authenticated Person\u0027s active owned businesses so the human can choose which business to manage or switch to. Returns up to 100 business key/name summaries per page.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "BusinessOwner",
      "sortOrder": 1202,
      "discoveryRequest": "GET /aixe/account/list-businesses/?",
      "usageContract": "/aixe/account/list-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/select-business",
      "path": "/aixe/account/select-business",
      "title": "Select Business",
      "description": "Open a business selected by the human from list-businesses after verifying that the authenticated Person owns it. Keep the same token and its existing expiration, and use the selected business for subsequent business operations.",
      "purpose": "Open a business selected by the human from list-businesses after verifying that the authenticated Person owns it. Keep the same token and its existing expiration, and use the selected business for subsequent business operations.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "BusinessOwner",
      "sortOrder": 1203,
      "discoveryRequest": "GET /aixe/account/select-business/?",
      "usageContract": "/aixe/account/select-business/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/login",
      "path": "/aixe/associates/login",
      "title": "Sales Associate Login",
      "description": "Authenticates a Person authorized by a SalesAssociate Linker role and returns a private 15-minute token for Sales Associate AIXE actions.",
      "purpose": "Authenticates a Person authorized by a SalesAssociate Linker role and returns a private 15-minute token for Sales Associate AIXE actions.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1800,
      "discoveryRequest": "GET /aixe/associates/login/?",
      "usageContract": "/aixe/associates/login/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/logout",
      "path": "/aixe/associates/logout",
      "title": "Associate Logout",
      "description": "Invalidates the submitted associate authentication token.",
      "purpose": "Invalidates the submitted associate authentication token.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1801,
      "discoveryRequest": "GET /aixe/associates/logout/?",
      "usageContract": "/aixe/associates/logout/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/get-profile",
      "path": "/aixe/associates/get-profile",
      "title": "Get Associate Profile",
      "description": "Returns the authenticated associate\u0027s current profile and contact information.",
      "purpose": "Returns the authenticated associate\u0027s current profile and contact information.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1802,
      "discoveryRequest": "GET /aixe/associates/get-profile/?",
      "usageContract": "/aixe/associates/get-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-profile",
      "path": "/aixe/associates/update-profile",
      "title": "Update Associate Profile",
      "description": "Updates submitted fields on the authenticated associate\u0027s own Person record.",
      "purpose": "Updates submitted fields on the authenticated associate\u0027s own Person record.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1803,
      "discoveryRequest": "GET /aixe/associates/update-profile/?",
      "usageContract": "/aixe/associates/update-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/search-businesses",
      "path": "/aixe/associates/search-businesses",
      "title": "Search Assigned Businesses",
      "description": "Searches only businesses linked to the authenticated associate and returns bounded summaries.",
      "purpose": "Searches only businesses linked to the authenticated associate and returns bounded summaries.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1804,
      "discoveryRequest": "GET /aixe/associates/search-businesses/?",
      "usageContract": "/aixe/associates/search-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/get-day-report",
      "path": "/aixe/associates/get-day-report",
      "title": "Get Associate Day Report",
      "description": "Returns bounded visit, onboarding, completion, and activity results for the authenticated associate and date range.",
      "purpose": "Returns bounded visit, onboarding, completion, and activity results for the authenticated associate and date range.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1805,
      "discoveryRequest": "GET /aixe/associates/get-day-report/?",
      "usageContract": "/aixe/associates/get-day-report/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/search-activities",
      "path": "/aixe/associates/search-activities",
      "title": "Search Associate Activities",
      "description": "Searches the authenticated associate\u0027s activities using optional text, type, and date filters.",
      "purpose": "Searches the authenticated associate\u0027s activities using optional text, type, and date filters.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1806,
      "discoveryRequest": "GET /aixe/associates/search-activities/?",
      "usageContract": "/aixe/associates/search-activities/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/save-activity",
      "path": "/aixe/associates/save-activity",
      "title": "Save Associate Activity",
      "description": "Creates or updates one activity owned by the authenticated associate.",
      "purpose": "Creates or updates one activity owned by the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1807,
      "discoveryRequest": "GET /aixe/associates/save-activity/?",
      "usageContract": "/aixe/associates/save-activity/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/delete-activity",
      "path": "/aixe/associates/delete-activity",
      "title": "Delete Associate Activity",
      "description": "Deletes one activity owned by the authenticated associate.",
      "purpose": "Deletes one activity owned by the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1808,
      "discoveryRequest": "GET /aixe/associates/delete-activity/?",
      "usageContract": "/aixe/associates/delete-activity/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/get-business",
      "path": "/aixe/associates/get-business",
      "title": "Get Assigned Business",
      "description": "Returns one business assigned to the authenticated associate, including a bounded inventory summary.",
      "purpose": "Returns one business assigned to the authenticated associate, including a bounded inventory summary.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1809,
      "discoveryRequest": "GET /aixe/associates/get-business/?",
      "usageContract": "/aixe/associates/get-business/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-business-information",
      "path": "/aixe/associates/update-business-information",
      "title": "Update Business Information",
      "description": "Updates one assigned business\u0027s core identity, address, and contact fields.",
      "purpose": "Updates one assigned business\u0027s core identity, address, and contact fields.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1810,
      "discoveryRequest": "GET /aixe/associates/update-business-information/?",
      "usageContract": "/aixe/associates/update-business-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-owner-information",
      "path": "/aixe/associates/update-owner-information",
      "title": "Update Business Owner Information",
      "description": "Updates owner identity and contact fields for one assigned business.",
      "purpose": "Updates owner identity and contact fields for one assigned business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1811,
      "discoveryRequest": "GET /aixe/associates/update-owner-information/?",
      "usageContract": "/aixe/associates/update-owner-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-notification-information",
      "path": "/aixe/associates/update-notification-information",
      "title": "Update Business Notification Information",
      "description": "Updates email and phone notification destinations for one assigned business.",
      "purpose": "Updates email and phone notification destinations for one assigned business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1812,
      "discoveryRequest": "GET /aixe/associates/update-notification-information/?",
      "usageContract": "/aixe/associates/update-notification-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-business-login",
      "path": "/aixe/associates/update-business-login",
      "title": "Update Business Owner Login",
      "description": "Create or authenticate a Person using LoginEmail and NewPassword, then attach that Person as BusinessOwner to an assigned business. For an existing Person, NewPassword must contain their current password and does not replace it. New accounts use the business owner\u0027s contact details. Returns PersonKey, PersonLoginEmail, BusinessKey and OwnerAttached=true. Incorrect existing credentials return UNAUTHORIZED with Field NewPassword; ask for the current password.",
      "purpose": "Create or authenticate a Person using LoginEmail and NewPassword, then attach that Person as BusinessOwner to an assigned business. For an existing Person, NewPassword must contain their current password and does not replace it. New accounts use the business owner\u0027s contact details. Returns PersonKey, PersonLoginEmail, BusinessKey and OwnerAttached=true. Incorrect existing credentials return UNAUTHORIZED with Field NewPassword; ask for the current password.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1813,
      "discoveryRequest": "GET /aixe/associates/update-business-login/?",
      "usageContract": "/aixe/associates/update-business-login/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/save-product",
      "path": "/aixe/associates/save-product",
      "title": "Save Business Product",
      "description": "Creates or updates one product or service for a business assigned to the authenticated associate.",
      "purpose": "Creates or updates one product or service for a business assigned to the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1814,
      "discoveryRequest": "GET /aixe/associates/save-product/?",
      "usageContract": "/aixe/associates/save-product/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/upload-product-image",
      "path": "/aixe/associates/upload-product-image",
      "title": "Upload Product Image",
      "description": "Uploads one image directly to an existing product or service belonging to a business assigned to the authenticated associate.",
      "purpose": "Uploads one image directly to an existing product or service belonging to a business assigned to the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1815,
      "discoveryRequest": "GET /aixe/associates/upload-product-image/?",
      "usageContract": "/aixe/associates/upload-product-image/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/web-parts/get-web-part",
      "path": "/aixe/web-parts/get-web-part",
      "title": "Get Web Part",
      "description": "Returns one active reusable HTML and JavaScript Web Part after replacing approved business tokens and optional linked-product tokens.",
      "purpose": "Returns one active reusable HTML and JavaScript Web Part after replacing approved business tokens and optional linked-product tokens.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Web Parts",
      "audience": "Customer",
      "sortOrder": 1900,
      "discoveryRequest": "GET /aixe/web-parts/get-web-part/?",
      "usageContract": "/aixe/web-parts/get-web-part/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/list-new",
      "path": "/aixe/sales-leads/list-new",
      "title": "List New Sales Leads",
      "description": "Returns the first 100 New sales leads in database order for the named call queue.",
      "purpose": "Returns the first 100 New sales leads in database order for the named call queue.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1901,
      "discoveryRequest": "GET /aixe/sales-leads/list-new/?",
      "usageContract": "/aixe/sales-leads/list-new/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/search",
      "path": "/aixe/sales-leads/search",
      "title": "Search Sales Leads",
      "description": "Searches active sales leads within the named call queue across useful business and contact fields and returns at most 100 summaries. Terminal dispositions are excluded.",
      "purpose": "Searches active sales leads within the named call queue across useful business and contact fields and returns at most 100 summaries. Terminal dispositions are excluded.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1902,
      "discoveryRequest": "GET /aixe/sales-leads/search/?",
      "usageContract": "/aixe/sales-leads/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/get",
      "path": "/aixe/sales-leads/get",
      "title": "Get Sales Lead",
      "description": "Returns one complete sales lead dossier selected by public SalesLeadKey without claiming it.",
      "purpose": "Returns one complete sales lead dossier selected by public SalesLeadKey without claiming it.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1903,
      "discoveryRequest": "GET /aixe/sales-leads/get/?",
      "usageContract": "/aixe/sales-leads/get/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/update",
      "path": "/aixe/sales-leads/update",
      "title": "Update Sales Lead",
      "description": "Enriches supplied dossier fields on one sales lead; omitted fields remain unchanged.",
      "purpose": "Enriches supplied dossier fields on one sales lead; omitted fields remain unchanged.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1904,
      "discoveryRequest": "GET /aixe/sales-leads/update/?",
      "usageContract": "/aixe/sales-leads/update/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/claim",
      "path": "/aixe/sales-leads/claim",
      "title": "Claim Sales Lead",
      "description": "Atomically changes an eligible New lead to Claimed and preserves the authenticated Sales Associate as claimant.",
      "purpose": "Atomically changes an eligible New lead to Claimed and preserves the authenticated Sales Associate as claimant.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1905,
      "discoveryRequest": "GET /aixe/sales-leads/claim/?",
      "usageContract": "/aixe/sales-leads/claim/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/change-status",
      "path": "/aixe/sales-leads/change-status",
      "title": "Change Sales Lead Status",
      "description": "Changes one sales lead to a supported workflow status. Follow Up requires a date and contact time for today or later.",
      "purpose": "Changes one sales lead to a supported workflow status. Follow Up requires a date and contact time for today or later.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1906,
      "discoveryRequest": "GET /aixe/sales-leads/change-status/?",
      "usageContract": "/aixe/sales-leads/change-status/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/get-notes",
      "path": "/aixe/sales-leads/get-notes",
      "title": "Get Sales Lead Notes",
      "description": "Returns up to 100 newest historical notes with author and creation time for one sales lead.",
      "purpose": "Returns up to 100 newest historical notes with author and creation time for one sales lead.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1907,
      "discoveryRequest": "GET /aixe/sales-leads/get-notes/?",
      "usageContract": "/aixe/sales-leads/get-notes/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/add-note",
      "path": "/aixe/sales-leads/add-note",
      "title": "Add Sales Lead Note",
      "description": "Adds a historical note to one sales lead and preserves the authenticated Sales Associate as its author.",
      "purpose": "Adds a historical note to one sales lead and preserves the authenticated Sales Associate as its author.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1908,
      "discoveryRequest": "GET /aixe/sales-leads/add-note/?",
      "usageContract": "/aixe/sales-leads/add-note/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/customers/create-profile",
      "path": "/aixe/customers/create-profile",
      "title": "Create Profile",
      "description": "Create a customer profile and password within the selected business after the human approves registration. Existing contacts must use forgot-password to establish credentials by email.",
      "purpose": "Create a customer profile and password within the selected business after the human approves registration. Existing contacts must use forgot-password to establish credentials by email.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer",
      "sortOrder": 2000,
      "discoveryRequest": "GET /aixe/customers/create-profile/?",
      "usageContract": "/aixe/customers/create-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/login",
      "path": "/aixe/account/login",
      "title": "Login",
      "description": "Sign in with a Person login email and password. Automatically select the only owned active business, or return instructions to list and select a business when several are available. Return a short-lived PersonAuthenticationToken. Customer logins additionally require BusinessKey and retain their customer scope.",
      "purpose": "Sign in with a Person login email and password. Automatically select the only owned active business, or return instructions to list and select a business when several are available. Return a short-lived PersonAuthenticationToken. Customer logins additionally require BusinessKey and retain their customer scope.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2001,
      "discoveryRequest": "GET /aixe/account/login/?",
      "usageContract": "/aixe/account/login/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/logout",
      "path": "/aixe/account/logout",
      "title": "Logout",
      "description": "Invalidate the submitted PersonAuthenticationToken to end the current AIXE session.",
      "purpose": "Invalidate the submitted PersonAuthenticationToken to end the current AIXE session.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2002,
      "discoveryRequest": "GET /aixe/account/logout/?",
      "usageContract": "/aixe/account/logout/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/get-profile",
      "path": "/aixe/account/get-profile",
      "title": "Get Profile",
      "description": "Return the authenticated person\u0027s contact information, public keys and current role without returning credentials.",
      "purpose": "Return the authenticated person\u0027s contact information, public keys and current role without returning credentials.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2003,
      "discoveryRequest": "GET /aixe/account/get-profile/?",
      "usageContract": "/aixe/account/get-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/update-profile",
      "path": "/aixe/account/update-profile",
      "title": "Update Profile",
      "description": "Update only the authenticated person\u0027s supplied contact and address fields. Omitted fields remain unchanged.",
      "purpose": "Update only the authenticated person\u0027s supplied contact and address fields. Omitted fields remain unchanged.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2004,
      "discoveryRequest": "GET /aixe/account/update-profile/?",
      "usageContract": "/aixe/account/update-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/change-password",
      "path": "/aixe/account/change-password",
      "title": "Change Password",
      "description": "Change the authenticated person\u0027s password without requiring the old password again and invalidate their AIXE token.",
      "purpose": "Change the authenticated person\u0027s password without requiring the old password again and invalidate their AIXE token.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2005,
      "discoveryRequest": "GET /aixe/account/change-password/?",
      "usageContract": "/aixe/account/change-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/forgot-password",
      "path": "/aixe/account/forgot-password",
      "title": "Forgot Password",
      "description": "Email a 30-minute reset link for a Person login. For customers, additionally supply BusinessKey to request their business-scoped password reset. Do not disclose whether an account exists.",
      "purpose": "Email a 30-minute reset link for a Person login. For customers, additionally supply BusinessKey to request their business-scoped password reset. Do not disclose whether an account exists.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2006,
      "discoveryRequest": "GET /aixe/account/forgot-password/?",
      "usageContract": "/aixe/account/forgot-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/reset-password",
      "path": "/aixe/account/reset-password",
      "title": "Reset Password",
      "description": "Set a new password using the unexpired, one-use ResetToken from the emailed password-reset link. This also invalidates the AIXE token.",
      "purpose": "Set a new password using the unexpired, one-use ResetToken from the emailed password-reset link. This also invalidates the AIXE token.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2007,
      "discoveryRequest": "GET /aixe/account/reset-password/?",
      "usageContract": "/aixe/account/reset-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/create-profile",
      "path": "/aixe/businesses/create-profile",
      "title": "Create Profile",
      "description": "Create a business, associate it with a new or authenticated existing Person as BusinessOwner, and immediately return that Person\u0027s token with the new business selected.",
      "purpose": "Create a business, associate it with a new or authenticated existing Person as BusinessOwner, and immediately return that Person\u0027s token with the new business selected.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "BusinessOwner",
      "sortOrder": 2010,
      "discoveryRequest": "GET /aixe/businesses/create-profile/?",
      "usageContract": "/aixe/businesses/create-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/naics/search",
      "path": "/aixe/naics/search",
      "title": "Search NAICS Industries",
      "description": "Find valid six-digit NAICS industries by activity keywords or code so an AI can categorize a business before creating or updating its profile.",
      "purpose": "Find valid six-digit NAICS industries by activity keywords or code so an AI can categorize a business before creating or updating its profile.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Classification",
      "audience": "BusinessOwner",
      "sortOrder": 2020,
      "discoveryRequest": "GET /aixe/naics/search/?",
      "usageContract": "/aixe/naics/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/create-contact-request",
      "path": "/aixe/businesses/create-contact-request",
      "title": "Create Contact Request",
      "description": "Creates one contact request for an active Internet of Doing business and alerts the business at its configured alert email address.",
      "purpose": "Creates one contact request for an active Internet of Doing business and alerts the business at its configured alert email address.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Businesses",
      "audience": "Customer",
      "sortOrder": 2030,
      "discoveryRequest": "GET /aixe/businesses/create-contact-request/?",
      "usageContract": "/aixe/businesses/create-contact-request/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/naics/validate-naics-code",
      "path": "/aixe/naics/validate-naics-code",
      "title": "Validate NAICS Code",
      "description": "Check a likely NAICS code recalled by an AI against the site\u0027s 2022 six-digit industries before using it in a business search.",
      "purpose": "Check a likely NAICS code recalled by an AI against the site\u0027s 2022 six-digit industries before using it in a business search.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2030,
      "discoveryRequest": "GET /aixe/naics/validate-naics-code/?",
      "usageContract": "/aixe/naics/validate-naics-code/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/search-businesses",
      "path": "/aixe/businesses/search-businesses",
      "title": "Search Businesses",
      "description": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "purpose": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2040,
      "discoveryRequest": "GET /aixe/businesses/search-businesses/?",
      "usageContract": "/aixe/businesses/search-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/search-businesses",
      "path": "/aixe/businesses/search-businesses",
      "title": "Search Businesses",
      "description": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "purpose": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2040,
      "discoveryRequest": "GET /aixe/businesses/search-businesses/?",
      "usageContract": "/aixe/businesses/search-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/review-business",
      "path": "/aixe/businesses/review-business",
      "title": "Review Business",
      "description": "Submit a written review for an active Internet of Doing business and immediately notify the business owner by email and text message.",
      "purpose": "Submit a written review for an active Internet of Doing business and immediately notify the business owner by email and text message.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2050,
      "discoveryRequest": "GET /aixe/businesses/review-business/?",
      "usageContract": "/aixe/businesses/review-business/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/redirector-urls/create-redirector-url",
      "path": "/aixe/redirector-urls/create-redirector-url",
      "title": "Create Redirector URL",
      "description": "Create a custom public redirect link for the signed-in business owner, optionally notifying an email recipient, phone recipient, or both whenever the link is hit. The owner can manage it in the business dashboard.",
      "purpose": "Create a custom public redirect link for the signed-in business owner, optionally notifying an email recipient, phone recipient, or both whenever the link is hit. The owner can manage it in the business dashboard.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Redirector URLs",
      "audience": "BusinessOwner",
      "sortOrder": 2100,
      "discoveryRequest": "GET /aixe/redirector-urls/create-redirector-url/?",
      "usageContract": "/aixe/redirector-urls/create-redirector-url/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/redirector-urls/check-redirector-prefix",
      "path": "/aixe/redirector-urls/check-redirector-prefix",
      "title": "Check Redirector Prefix",
      "description": "Check whether a custom redirector prefix already exists anywhere on Internet of Doing before choosing it for a new redirect link.",
      "purpose": "Check whether a custom redirector prefix already exists anywhere on Internet of Doing before choosing it for a new redirect link.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Redirector URLs",
      "audience": "BusinessOwner",
      "sortOrder": 2110,
      "discoveryRequest": "GET /aixe/redirector-urls/check-redirector-prefix/?",
      "usageContract": "/aixe/redirector-urls/check-redirector-prefix/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/create-pairing-token",
      "path": "/aixe/fulfillment-stations/create-pairing-token",
      "title": "Create Pairing Token",
      "description": "Lets an authenticated business owner provision one fulfillment tablet using a short-lived QR URL, without sharing owner credentials.",
      "purpose": "Lets an authenticated business owner provision one fulfillment tablet using a short-lived QR URL, without sharing owner credentials.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "BusinessOwner",
      "sortOrder": 2200,
      "discoveryRequest": "GET /aixe/fulfillment-stations/create-pairing-token/?",
      "usageContract": "/aixe/fulfillment-stations/create-pairing-token/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/activate",
      "path": "/aixe/fulfillment-stations/activate",
      "title": "Activate",
      "description": "Consumes one unused, unexpired pairing token and names a dedicated business fulfillment station. Returns its unique station credential or sets the secure browser cookie.",
      "purpose": "Consumes one unused, unexpired pairing token and names a dedicated business fulfillment station. Returns its unique station credential or sets the secure browser cookie.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2201,
      "discoveryRequest": "GET /aixe/fulfillment-stations/activate/?",
      "usageContract": "/aixe/fulfillment-stations/activate/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/poll",
      "path": "/aixe/fulfillment-stations/poll",
      "title": "Poll",
      "description": "Authenticates a fulfillment station, records its successful heartbeat, and reports incoming New or Pending orders so every station can sound and flash until the business moves those orders forward.",
      "purpose": "Authenticates a fulfillment station, records its successful heartbeat, and reports incoming New or Pending orders so every station can sound and flash until the business moves those orders forward.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2202,
      "discoveryRequest": "GET /aixe/fulfillment-stations/poll/?",
      "usageContract": "/aixe/fulfillment-stations/poll/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/get-order",
      "path": "/aixe/fulfillment-stations/get-order",
      "title": "Get Order",
      "description": "Returns the selected business-owned order\u0027s captured customer, item, name-on-cup, instructions, schedule, address, totals and invoice payment information needed for fulfillment.",
      "purpose": "Returns the selected business-owned order\u0027s captured customer, item, name-on-cup, instructions, schedule, address, totals and invoice payment information needed for fulfillment.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2203,
      "discoveryRequest": "GET /aixe/fulfillment-stations/get-order/?",
      "usageContract": "/aixe/fulfillment-stations/get-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/accept-order",
      "path": "/aixe/fulfillment-stations/accept-order",
      "title": "Accept Order",
      "description": "Atomically moves a New or Pending order to the existing In Progress status and records the accepting station and UTC timestamp. Other stations stop alerting when their polls see the changed status.",
      "purpose": "Atomically moves a New or Pending order to the existing In Progress status and records the accepting station and UTC timestamp. Other stations stop alerting when their polls see the changed status.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2204,
      "discoveryRequest": "GET /aixe/fulfillment-stations/accept-order/?",
      "usageContract": "/aixe/fulfillment-stations/accept-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/list-stations",
      "path": "/aixe/fulfillment-stations/list-stations",
      "title": "List Stations",
      "description": "Shows the authenticated business owner up to 200 active registered stations, each location, last successful heartbeat and derived online/offline status.",
      "purpose": "Shows the authenticated business owner up to 200 active registered stations, each location, last successful heartbeat and derived online/offline status.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "BusinessOwner",
      "sortOrder": 2205,
      "discoveryRequest": "GET /aixe/fulfillment-stations/list-stations/?",
      "usageContract": "/aixe/fulfillment-stations/list-stations/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/revoke-station",
      "path": "/aixe/fulfillment-stations/revoke-station",
      "title": "Revoke Station",
      "description": "Lets a business owner immediately revoke one registered fulfillment station without changing business login credentials or affecting other stations.",
      "purpose": "Lets a business owner immediately revoke one registered fulfillment station without changing business login credentials or affecting other stations.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "BusinessOwner",
      "sortOrder": 2206,
      "discoveryRequest": "GET /aixe/fulfillment-stations/revoke-station/?",
      "usageContract": "/aixe/fulfillment-stations/revoke-station/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/{businessKey}/products/search",
      "path": "/haixe/quick-order/{businessKey}/products/search",
      "title": "Search Products",
      "description": "Search Products through the public, no-login quick-order flow.",
      "purpose": "Search Products through the public, no-login quick-order flow.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 3002,
      "discoveryRequest": "GET /haixe/quick-order/{businessKey}/products/search/?",
      "usageContract": "/haixe/quick-order/{businessKey}/products/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/{businessKey}/products/search",
      "path": "/haixe/quick-order/{businessKey}/products/search",
      "title": "Search Products",
      "description": "Search Products through the public, no-login quick-order flow.",
      "purpose": "Search Products through the public, no-login quick-order flow.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 3002,
      "discoveryRequest": "GET /haixe/quick-order/{businessKey}/products/search/?",
      "usageContract": "/haixe/quick-order/{businessKey}/products/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/create-request-for-quote",
      "path": "/aixe/rfqs/create-request-for-quote",
      "title": "Create RFQ Draft",
      "description": "Collect a customer\u0027s product or service requirements through an adaptive conversation, then save an editable RFQ draft. Use submit-request-for-quote after customer confirmation to invite nearby businesses.",
      "purpose": "Collect a customer\u0027s product or service requirements through an adaptive conversation, then save an editable RFQ draft. Use submit-request-for-quote after customer confirmation to invite nearby businesses.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8000,
      "discoveryRequest": "GET /aixe/rfqs/create-request-for-quote/?",
      "usageContract": "/aixe/rfqs/create-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/update-request-for-quote",
      "path": "/aixe/rfqs/update-request-for-quote",
      "title": "Update RFQ Draft",
      "description": "Correct or refine the customer\u0027s RFQ while it is a Draft. Published requirements are immutable; create a new draft for different requirements.",
      "purpose": "Correct or refine the customer\u0027s RFQ while it is a Draft. Published requirements are immutable; create a new draft for different requirements.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8001,
      "discoveryRequest": "GET /aixe/rfqs/update-request-for-quote/?",
      "usageContract": "/aixe/rfqs/update-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/submit-request-for-quote",
      "path": "/aixe/rfqs/submit-request-for-quote",
      "title": "Submit RFQ",
      "description": "Publish a confirmed customer RFQ, find active businesses matching any requested NAICS code within the ZIP-based radius, create one assigned quote opportunity per business, and email invitations. Submission permanently locks the request.",
      "purpose": "Publish a confirmed customer RFQ, find active businesses matching any requested NAICS code within the ZIP-based radius, create one assigned quote opportunity per business, and email invitations. Submission permanently locks the request.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8002,
      "discoveryRequest": "GET /aixe/rfqs/submit-request-for-quote/?",
      "usageContract": "/aixe/rfqs/submit-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/cancel-request-for-quote",
      "path": "/aixe/rfqs/cancel-request-for-quote",
      "title": "Cancel RFQ",
      "description": "Stop a Draft or Open RFQ. Businesses previously invited receive closure emails, and outstanding quotes become Not Accepted. Records remain available in history.",
      "purpose": "Stop a Draft or Open RFQ. Businesses previously invited receive closure emails, and outstanding quotes become Not Accepted. Records remain available in history.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8003,
      "discoveryRequest": "GET /aixe/rfqs/cancel-request-for-quote/?",
      "usageContract": "/aixe/rfqs/cancel-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/search-request-for-quotes",
      "path": "/aixe/rfqs/search-request-for-quotes",
      "title": "Search RFQs",
      "description": "Find the signed-in customer\u0027s RFQs, or a business\u0027s assigned RFQ opportunities. Returns a bounded summary page, newest first. Use this before loading a selected RFQ.",
      "purpose": "Find the signed-in customer\u0027s RFQs, or a business\u0027s assigned RFQ opportunities. Returns a bounded summary page, newest first. Use this before loading a selected RFQ.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8004,
      "discoveryRequest": "GET /aixe/rfqs/search-request-for-quotes/?",
      "usageContract": "/aixe/rfqs/search-request-for-quotes/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/get-request-for-quote",
      "path": "/aixe/rfqs/get-request-for-quote",
      "title": "Get RFQ",
      "description": "Read the full requirements and state of one accessible RFQ before preparing a quote, editing a draft, or discussing offers with the customer.",
      "purpose": "Read the full requirements and state of one accessible RFQ before preparing a quote, editing a draft, or discussing offers with the customer.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8005,
      "discoveryRequest": "GET /aixe/rfqs/get-request-for-quote/?",
      "usageContract": "/aixe/rfqs/get-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/search-business-quotes",
      "path": "/aixe/rfqs/search-business-quotes",
      "title": "Search Business Quotes",
      "description": "Read a bounded list of quotes for a selected accessible RFQ. Customers see submitted quotes; a business sees only its own assigned quote. Competitor proposals are private.",
      "purpose": "Read a bounded list of quotes for a selected accessible RFQ. Customers see submitted quotes; a business sees only its own assigned quote. Competitor proposals are private.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8006,
      "discoveryRequest": "GET /aixe/rfqs/search-business-quotes/?",
      "usageContract": "/aixe/rfqs/search-business-quotes/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/get-business-quote",
      "path": "/aixe/rfqs/get-business-quote",
      "title": "Get Business Quote",
      "description": "Read one accessible business quote, its RFQ, proposal details, status, and allowed actions. Customers do not receive unpublished proposal contents.",
      "purpose": "Read one accessible business quote, its RFQ, proposal details, status, and allowed actions. Customers do not receive unpublished proposal contents.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8007,
      "discoveryRequest": "GET /aixe/rfqs/get-business-quote/?",
      "usageContract": "/aixe/rfqs/get-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/save-business-quote",
      "path": "/aixe/rfqs/save-business-quote",
      "title": "Save Business Quote",
      "description": "Save the assigned business\u0027s proposal. An unsubmitted proposal stays private. Changes to an already submitted Pending or Maybe quote become visible immediately; a lower amount triggers an email with both old and new pricing bases.",
      "purpose": "Save the assigned business\u0027s proposal. An unsubmitted proposal stays private. Changes to an already submitted Pending or Maybe quote become visible immediately; a lower amount triggers an email with both old and new pricing bases.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "BusinessOwner",
      "sortOrder": 8008,
      "discoveryRequest": "GET /aixe/rfqs/save-business-quote/?",
      "usageContract": "/aixe/rfqs/save-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/submit-business-quote",
      "path": "/aixe/rfqs/submit-business-quote",
      "title": "Submit Business Quote",
      "description": "Submit the assigned business\u0027s price and scope, or revise its active submitted quote. First submission emails the customer. A subsequent amount reduction emails the customer; quote shortlisting is preserved.",
      "purpose": "Submit the assigned business\u0027s price and scope, or revise its active submitted quote. First submission emails the customer. A subsequent amount reduction emails the customer; quote shortlisting is preserved.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "BusinessOwner",
      "sortOrder": 8009,
      "discoveryRequest": "GET /aixe/rfqs/submit-business-quote/?",
      "usageContract": "/aixe/rfqs/submit-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/decline-business-quote",
      "path": "/aixe/rfqs/decline-business-quote",
      "title": "Decline RFQ Opportunity",
      "description": "Decline an assigned opportunity and remove it from the business\u0027s default active view. The permanent record remains in history and cannot be edited or messaged after decline.",
      "purpose": "Decline an assigned opportunity and remove it from the business\u0027s default active view. The permanent record remains in history and cannot be edited or messaged after decline.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "BusinessOwner",
      "sortOrder": 8010,
      "discoveryRequest": "GET /aixe/rfqs/decline-business-quote/?",
      "usageContract": "/aixe/rfqs/decline-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/update-business-quote-status",
      "path": "/aixe/rfqs/update-business-quote-status",
      "title": "Decide On Business Quote",
      "description": "Record the RFQ customer\u0027s decision on a submitted quote and email the business when that decision changes. Accepting one quote closes the RFQ, marks other outstanding quotes Not Accepted, and emails every other invited business that the RFQ is closed.",
      "purpose": "Record the RFQ customer\u0027s decision on a submitted quote and email the business when that decision changes. Accepting one quote closes the RFQ, marks other outstanding quotes Not Accepted, and emails every other invited business that the RFQ is closed.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8011,
      "discoveryRequest": "GET /aixe/rfqs/update-business-quote-status/?",
      "usageContract": "/aixe/rfqs/update-business-quote-status/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/get-messages",
      "path": "/aixe/rfqs/get-messages",
      "title": "Get Quote Messages",
      "description": "Retrieve one bounded page of the private customer-business conversation for an accessible quote, oldest first. Messages are permanent and contain no attachments or read receipts.",
      "purpose": "Retrieve one bounded page of the private customer-business conversation for an accessible quote, oldest first. Messages are permanent and contain no attachments or read receipts.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8012,
      "discoveryRequest": "GET /aixe/rfqs/get-messages/?",
      "usageContract": "/aixe/rfqs/get-messages/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/send-message",
      "path": "/aixe/rfqs/send-message",
      "title": "Send Quote Message",
      "description": "Send an intentional message in the selected quote\u0027s private conversation and email the other party. Sender identity is determined by authentication. Automatic status and closure emails do not become conversation messages.",
      "purpose": "Send an intentional message in the selected quote\u0027s private conversation and email the other party. Sender identity is determined by authentication. Automatic status and closure emails do not become conversation messages.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8013,
      "discoveryRequest": "GET /aixe/rfqs/send-message/?",
      "usageContract": "/aixe/rfqs/send-message/?",
      "documentationSource": "AIXEEndpointRegistry"
    }
  ],
  "endpoints": [
    {
      "endpoint": "/haixe/quick-order/cancel-order",
      "path": "/haixe/quick-order/cancel-order",
      "title": "Cancel Order",
      "description": "Cancel Order through the public, no-login quick-order flow.",
      "purpose": "Cancel Order through the public, no-login quick-order flow.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 0,
      "discoveryRequest": "GET /haixe/quick-order/cancel-order/?",
      "usageContract": "/haixe/quick-order/cancel-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/customer-check",
      "path": "/haixe/quick-order/customer-check",
      "title": "Customer Check",
      "description": "Customer Check through the public, no-login quick-order flow.",
      "purpose": "Customer Check through the public, no-login quick-order flow.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 450,
      "discoveryRequest": "GET /haixe/quick-order/customer-check/?",
      "usageContract": "/haixe/quick-order/customer-check/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/place-order",
      "path": "/haixe/quick-order/place-order",
      "title": "Place Order",
      "description": "Resolves or creates a customer and places selected products or scheduled services in one quick order with customer and business notifications.",
      "purpose": "Resolves or creates a customer and places selected products or scheduled services in one quick order with customer and business notifications.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 460,
      "discoveryRequest": "GET /haixe/quick-order/place-order/?",
      "usageContract": "/haixe/quick-order/place-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/list-businesses",
      "path": "/aixe/account/list-businesses",
      "title": "List Businesses",
      "description": "List the authenticated Person\u0027s active owned businesses so the human can choose which business to manage or switch to. Returns up to 100 business key/name summaries per page.",
      "purpose": "List the authenticated Person\u0027s active owned businesses so the human can choose which business to manage or switch to. Returns up to 100 business key/name summaries per page.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "BusinessOwner",
      "sortOrder": 1202,
      "discoveryRequest": "GET /aixe/account/list-businesses/?",
      "usageContract": "/aixe/account/list-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/select-business",
      "path": "/aixe/account/select-business",
      "title": "Select Business",
      "description": "Open a business selected by the human from list-businesses after verifying that the authenticated Person owns it. Keep the same token and its existing expiration, and use the selected business for subsequent business operations.",
      "purpose": "Open a business selected by the human from list-businesses after verifying that the authenticated Person owns it. Keep the same token and its existing expiration, and use the selected business for subsequent business operations.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "BusinessOwner",
      "sortOrder": 1203,
      "discoveryRequest": "GET /aixe/account/select-business/?",
      "usageContract": "/aixe/account/select-business/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/login",
      "path": "/aixe/associates/login",
      "title": "Sales Associate Login",
      "description": "Authenticates a Person authorized by a SalesAssociate Linker role and returns a private 15-minute token for Sales Associate AIXE actions.",
      "purpose": "Authenticates a Person authorized by a SalesAssociate Linker role and returns a private 15-minute token for Sales Associate AIXE actions.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1800,
      "discoveryRequest": "GET /aixe/associates/login/?",
      "usageContract": "/aixe/associates/login/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/logout",
      "path": "/aixe/associates/logout",
      "title": "Associate Logout",
      "description": "Invalidates the submitted associate authentication token.",
      "purpose": "Invalidates the submitted associate authentication token.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1801,
      "discoveryRequest": "GET /aixe/associates/logout/?",
      "usageContract": "/aixe/associates/logout/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/get-profile",
      "path": "/aixe/associates/get-profile",
      "title": "Get Associate Profile",
      "description": "Returns the authenticated associate\u0027s current profile and contact information.",
      "purpose": "Returns the authenticated associate\u0027s current profile and contact information.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1802,
      "discoveryRequest": "GET /aixe/associates/get-profile/?",
      "usageContract": "/aixe/associates/get-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-profile",
      "path": "/aixe/associates/update-profile",
      "title": "Update Associate Profile",
      "description": "Updates submitted fields on the authenticated associate\u0027s own Person record.",
      "purpose": "Updates submitted fields on the authenticated associate\u0027s own Person record.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1803,
      "discoveryRequest": "GET /aixe/associates/update-profile/?",
      "usageContract": "/aixe/associates/update-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/search-businesses",
      "path": "/aixe/associates/search-businesses",
      "title": "Search Assigned Businesses",
      "description": "Searches only businesses linked to the authenticated associate and returns bounded summaries.",
      "purpose": "Searches only businesses linked to the authenticated associate and returns bounded summaries.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1804,
      "discoveryRequest": "GET /aixe/associates/search-businesses/?",
      "usageContract": "/aixe/associates/search-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/get-day-report",
      "path": "/aixe/associates/get-day-report",
      "title": "Get Associate Day Report",
      "description": "Returns bounded visit, onboarding, completion, and activity results for the authenticated associate and date range.",
      "purpose": "Returns bounded visit, onboarding, completion, and activity results for the authenticated associate and date range.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1805,
      "discoveryRequest": "GET /aixe/associates/get-day-report/?",
      "usageContract": "/aixe/associates/get-day-report/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/search-activities",
      "path": "/aixe/associates/search-activities",
      "title": "Search Associate Activities",
      "description": "Searches the authenticated associate\u0027s activities using optional text, type, and date filters.",
      "purpose": "Searches the authenticated associate\u0027s activities using optional text, type, and date filters.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1806,
      "discoveryRequest": "GET /aixe/associates/search-activities/?",
      "usageContract": "/aixe/associates/search-activities/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/save-activity",
      "path": "/aixe/associates/save-activity",
      "title": "Save Associate Activity",
      "description": "Creates or updates one activity owned by the authenticated associate.",
      "purpose": "Creates or updates one activity owned by the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1807,
      "discoveryRequest": "GET /aixe/associates/save-activity/?",
      "usageContract": "/aixe/associates/save-activity/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/delete-activity",
      "path": "/aixe/associates/delete-activity",
      "title": "Delete Associate Activity",
      "description": "Deletes one activity owned by the authenticated associate.",
      "purpose": "Deletes one activity owned by the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1808,
      "discoveryRequest": "GET /aixe/associates/delete-activity/?",
      "usageContract": "/aixe/associates/delete-activity/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/get-business",
      "path": "/aixe/associates/get-business",
      "title": "Get Assigned Business",
      "description": "Returns one business assigned to the authenticated associate, including a bounded inventory summary.",
      "purpose": "Returns one business assigned to the authenticated associate, including a bounded inventory summary.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1809,
      "discoveryRequest": "GET /aixe/associates/get-business/?",
      "usageContract": "/aixe/associates/get-business/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-business-information",
      "path": "/aixe/associates/update-business-information",
      "title": "Update Business Information",
      "description": "Updates one assigned business\u0027s core identity, address, and contact fields.",
      "purpose": "Updates one assigned business\u0027s core identity, address, and contact fields.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1810,
      "discoveryRequest": "GET /aixe/associates/update-business-information/?",
      "usageContract": "/aixe/associates/update-business-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-owner-information",
      "path": "/aixe/associates/update-owner-information",
      "title": "Update Business Owner Information",
      "description": "Updates owner identity and contact fields for one assigned business.",
      "purpose": "Updates owner identity and contact fields for one assigned business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1811,
      "discoveryRequest": "GET /aixe/associates/update-owner-information/?",
      "usageContract": "/aixe/associates/update-owner-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-notification-information",
      "path": "/aixe/associates/update-notification-information",
      "title": "Update Business Notification Information",
      "description": "Updates email and phone notification destinations for one assigned business.",
      "purpose": "Updates email and phone notification destinations for one assigned business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1812,
      "discoveryRequest": "GET /aixe/associates/update-notification-information/?",
      "usageContract": "/aixe/associates/update-notification-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-business-login",
      "path": "/aixe/associates/update-business-login",
      "title": "Update Business Owner Login",
      "description": "Create or authenticate a Person using LoginEmail and NewPassword, then attach that Person as BusinessOwner to an assigned business. For an existing Person, NewPassword must contain their current password and does not replace it. New accounts use the business owner\u0027s contact details. Returns PersonKey, PersonLoginEmail, BusinessKey and OwnerAttached=true. Incorrect existing credentials return UNAUTHORIZED with Field NewPassword; ask for the current password.",
      "purpose": "Create or authenticate a Person using LoginEmail and NewPassword, then attach that Person as BusinessOwner to an assigned business. For an existing Person, NewPassword must contain their current password and does not replace it. New accounts use the business owner\u0027s contact details. Returns PersonKey, PersonLoginEmail, BusinessKey and OwnerAttached=true. Incorrect existing credentials return UNAUTHORIZED with Field NewPassword; ask for the current password.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1813,
      "discoveryRequest": "GET /aixe/associates/update-business-login/?",
      "usageContract": "/aixe/associates/update-business-login/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/save-product",
      "path": "/aixe/associates/save-product",
      "title": "Save Business Product",
      "description": "Creates or updates one product or service for a business assigned to the authenticated associate.",
      "purpose": "Creates or updates one product or service for a business assigned to the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1814,
      "discoveryRequest": "GET /aixe/associates/save-product/?",
      "usageContract": "/aixe/associates/save-product/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/upload-product-image",
      "path": "/aixe/associates/upload-product-image",
      "title": "Upload Product Image",
      "description": "Uploads one image directly to an existing product or service belonging to a business assigned to the authenticated associate.",
      "purpose": "Uploads one image directly to an existing product or service belonging to a business assigned to the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1815,
      "discoveryRequest": "GET /aixe/associates/upload-product-image/?",
      "usageContract": "/aixe/associates/upload-product-image/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/web-parts/get-web-part",
      "path": "/aixe/web-parts/get-web-part",
      "title": "Get Web Part",
      "description": "Returns one active reusable HTML and JavaScript Web Part after replacing approved business tokens and optional linked-product tokens.",
      "purpose": "Returns one active reusable HTML and JavaScript Web Part after replacing approved business tokens and optional linked-product tokens.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Web Parts",
      "audience": "Customer",
      "sortOrder": 1900,
      "discoveryRequest": "GET /aixe/web-parts/get-web-part/?",
      "usageContract": "/aixe/web-parts/get-web-part/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/list-new",
      "path": "/aixe/sales-leads/list-new",
      "title": "List New Sales Leads",
      "description": "Returns the first 100 New sales leads in database order for the named call queue.",
      "purpose": "Returns the first 100 New sales leads in database order for the named call queue.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1901,
      "discoveryRequest": "GET /aixe/sales-leads/list-new/?",
      "usageContract": "/aixe/sales-leads/list-new/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/search",
      "path": "/aixe/sales-leads/search",
      "title": "Search Sales Leads",
      "description": "Searches active sales leads within the named call queue across useful business and contact fields and returns at most 100 summaries. Terminal dispositions are excluded.",
      "purpose": "Searches active sales leads within the named call queue across useful business and contact fields and returns at most 100 summaries. Terminal dispositions are excluded.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1902,
      "discoveryRequest": "GET /aixe/sales-leads/search/?",
      "usageContract": "/aixe/sales-leads/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/get",
      "path": "/aixe/sales-leads/get",
      "title": "Get Sales Lead",
      "description": "Returns one complete sales lead dossier selected by public SalesLeadKey without claiming it.",
      "purpose": "Returns one complete sales lead dossier selected by public SalesLeadKey without claiming it.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1903,
      "discoveryRequest": "GET /aixe/sales-leads/get/?",
      "usageContract": "/aixe/sales-leads/get/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/update",
      "path": "/aixe/sales-leads/update",
      "title": "Update Sales Lead",
      "description": "Enriches supplied dossier fields on one sales lead; omitted fields remain unchanged.",
      "purpose": "Enriches supplied dossier fields on one sales lead; omitted fields remain unchanged.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1904,
      "discoveryRequest": "GET /aixe/sales-leads/update/?",
      "usageContract": "/aixe/sales-leads/update/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/claim",
      "path": "/aixe/sales-leads/claim",
      "title": "Claim Sales Lead",
      "description": "Atomically changes an eligible New lead to Claimed and preserves the authenticated Sales Associate as claimant.",
      "purpose": "Atomically changes an eligible New lead to Claimed and preserves the authenticated Sales Associate as claimant.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1905,
      "discoveryRequest": "GET /aixe/sales-leads/claim/?",
      "usageContract": "/aixe/sales-leads/claim/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/change-status",
      "path": "/aixe/sales-leads/change-status",
      "title": "Change Sales Lead Status",
      "description": "Changes one sales lead to a supported workflow status. Follow Up requires a date and contact time for today or later.",
      "purpose": "Changes one sales lead to a supported workflow status. Follow Up requires a date and contact time for today or later.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1906,
      "discoveryRequest": "GET /aixe/sales-leads/change-status/?",
      "usageContract": "/aixe/sales-leads/change-status/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/get-notes",
      "path": "/aixe/sales-leads/get-notes",
      "title": "Get Sales Lead Notes",
      "description": "Returns up to 100 newest historical notes with author and creation time for one sales lead.",
      "purpose": "Returns up to 100 newest historical notes with author and creation time for one sales lead.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1907,
      "discoveryRequest": "GET /aixe/sales-leads/get-notes/?",
      "usageContract": "/aixe/sales-leads/get-notes/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/add-note",
      "path": "/aixe/sales-leads/add-note",
      "title": "Add Sales Lead Note",
      "description": "Adds a historical note to one sales lead and preserves the authenticated Sales Associate as its author.",
      "purpose": "Adds a historical note to one sales lead and preserves the authenticated Sales Associate as its author.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1908,
      "discoveryRequest": "GET /aixe/sales-leads/add-note/?",
      "usageContract": "/aixe/sales-leads/add-note/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/customers/create-profile",
      "path": "/aixe/customers/create-profile",
      "title": "Create Profile",
      "description": "Create a customer profile and password within the selected business after the human approves registration. Existing contacts must use forgot-password to establish credentials by email.",
      "purpose": "Create a customer profile and password within the selected business after the human approves registration. Existing contacts must use forgot-password to establish credentials by email.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer",
      "sortOrder": 2000,
      "discoveryRequest": "GET /aixe/customers/create-profile/?",
      "usageContract": "/aixe/customers/create-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/login",
      "path": "/aixe/account/login",
      "title": "Login",
      "description": "Sign in with a Person login email and password. Automatically select the only owned active business, or return instructions to list and select a business when several are available. Return a short-lived PersonAuthenticationToken. Customer logins additionally require BusinessKey and retain their customer scope.",
      "purpose": "Sign in with a Person login email and password. Automatically select the only owned active business, or return instructions to list and select a business when several are available. Return a short-lived PersonAuthenticationToken. Customer logins additionally require BusinessKey and retain their customer scope.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2001,
      "discoveryRequest": "GET /aixe/account/login/?",
      "usageContract": "/aixe/account/login/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/logout",
      "path": "/aixe/account/logout",
      "title": "Logout",
      "description": "Invalidate the submitted PersonAuthenticationToken to end the current AIXE session.",
      "purpose": "Invalidate the submitted PersonAuthenticationToken to end the current AIXE session.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2002,
      "discoveryRequest": "GET /aixe/account/logout/?",
      "usageContract": "/aixe/account/logout/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/get-profile",
      "path": "/aixe/account/get-profile",
      "title": "Get Profile",
      "description": "Return the authenticated person\u0027s contact information, public keys and current role without returning credentials.",
      "purpose": "Return the authenticated person\u0027s contact information, public keys and current role without returning credentials.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2003,
      "discoveryRequest": "GET /aixe/account/get-profile/?",
      "usageContract": "/aixe/account/get-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/update-profile",
      "path": "/aixe/account/update-profile",
      "title": "Update Profile",
      "description": "Update only the authenticated person\u0027s supplied contact and address fields. Omitted fields remain unchanged.",
      "purpose": "Update only the authenticated person\u0027s supplied contact and address fields. Omitted fields remain unchanged.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2004,
      "discoveryRequest": "GET /aixe/account/update-profile/?",
      "usageContract": "/aixe/account/update-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/change-password",
      "path": "/aixe/account/change-password",
      "title": "Change Password",
      "description": "Change the authenticated person\u0027s password without requiring the old password again and invalidate their AIXE token.",
      "purpose": "Change the authenticated person\u0027s password without requiring the old password again and invalidate their AIXE token.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2005,
      "discoveryRequest": "GET /aixe/account/change-password/?",
      "usageContract": "/aixe/account/change-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/forgot-password",
      "path": "/aixe/account/forgot-password",
      "title": "Forgot Password",
      "description": "Email a 30-minute reset link for a Person login. For customers, additionally supply BusinessKey to request their business-scoped password reset. Do not disclose whether an account exists.",
      "purpose": "Email a 30-minute reset link for a Person login. For customers, additionally supply BusinessKey to request their business-scoped password reset. Do not disclose whether an account exists.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2006,
      "discoveryRequest": "GET /aixe/account/forgot-password/?",
      "usageContract": "/aixe/account/forgot-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/reset-password",
      "path": "/aixe/account/reset-password",
      "title": "Reset Password",
      "description": "Set a new password using the unexpired, one-use ResetToken from the emailed password-reset link. This also invalidates the AIXE token.",
      "purpose": "Set a new password using the unexpired, one-use ResetToken from the emailed password-reset link. This also invalidates the AIXE token.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2007,
      "discoveryRequest": "GET /aixe/account/reset-password/?",
      "usageContract": "/aixe/account/reset-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/create-profile",
      "path": "/aixe/businesses/create-profile",
      "title": "Create Profile",
      "description": "Create a business, associate it with a new or authenticated existing Person as BusinessOwner, and immediately return that Person\u0027s token with the new business selected.",
      "purpose": "Create a business, associate it with a new or authenticated existing Person as BusinessOwner, and immediately return that Person\u0027s token with the new business selected.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "BusinessOwner",
      "sortOrder": 2010,
      "discoveryRequest": "GET /aixe/businesses/create-profile/?",
      "usageContract": "/aixe/businesses/create-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/naics/search",
      "path": "/aixe/naics/search",
      "title": "Search NAICS Industries",
      "description": "Find valid six-digit NAICS industries by activity keywords or code so an AI can categorize a business before creating or updating its profile.",
      "purpose": "Find valid six-digit NAICS industries by activity keywords or code so an AI can categorize a business before creating or updating its profile.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Classification",
      "audience": "BusinessOwner",
      "sortOrder": 2020,
      "discoveryRequest": "GET /aixe/naics/search/?",
      "usageContract": "/aixe/naics/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-business-information",
      "path": "/haixe/{businessKey}/create-business-information",
      "title": "Create Business Information",
      "description": "Save business information with a required valid NAICS industry code.",
      "purpose": "Save business information with a required valid NAICS industry code.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Classification",
      "audience": "BusinessOwner",
      "sortOrder": 2021,
      "discoveryRequest": "GET /haixe/{businessKey}/create-business-information/?",
      "usageContract": "/haixe/{businessKey}/create-business-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-information",
      "path": "/haixe/{businessKey}/update-business-information",
      "title": "Update Business Information",
      "description": "Save business information with a required valid NAICS industry code.",
      "purpose": "Save business information with a required valid NAICS industry code.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Classification",
      "audience": "BusinessOwner",
      "sortOrder": 2021,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-information/?",
      "usageContract": "/haixe/{businessKey}/update-business-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-hours",
      "path": "/haixe/{businessKey}/update-business-hours",
      "title": "Update Business Hours",
      "description": "Replaces the selected business\u0027s complete regular weekly opening and closing schedule.",
      "purpose": "Replaces the selected business\u0027s complete regular weekly opening and closing schedule.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Information",
      "audience": "BusinessOwner",
      "sortOrder": 2022,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-hours/?",
      "usageContract": "/haixe/{businessKey}/update-business-hours/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/upload-business-image",
      "path": "/haixe/{businessKey}/upload-business-image",
      "title": "Upload Business Image",
      "description": "Uploads any requested photo to this business, subject only to the maximum file size.",
      "purpose": "Uploads any requested photo to this business, subject only to the maximum file size.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Images",
      "audience": "SalesAssociate",
      "sortOrder": 2025,
      "discoveryRequest": "GET /haixe/{businessKey}/upload-business-image/?",
      "usageContract": "/haixe/{businessKey}/upload-business-image/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/upload-product-image",
      "path": "/haixe/{businessKey}/upload-product-image",
      "title": "Upload Product Image",
      "description": "Uploads one or more approved images and attaches them to a product or service owned by the selected business.",
      "purpose": "Uploads one or more approved images and attaches them to a product or service owned by the selected business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Products And Services",
      "audience": "BusinessOwner",
      "sortOrder": 2026,
      "discoveryRequest": "GET /haixe/{businessKey}/upload-product-image/?",
      "usageContract": "/haixe/{businessKey}/upload-product-image/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/upload-business-logo",
      "path": "/haixe/{businessKey}/upload-business-logo",
      "title": "Upload Business Logo",
      "description": "Uploads and replaces this business\u0027s single managed logo and saves its HTTPS URL.",
      "purpose": "Uploads and replaces this business\u0027s single managed logo and saves its HTTPS URL.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Images",
      "audience": "Business Owner",
      "sortOrder": 2027,
      "discoveryRequest": "GET /haixe/{businessKey}/upload-business-logo/?",
      "usageContract": "/haixe/{businessKey}/upload-business-logo/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-remote-menu",
      "path": "/haixe/{businessKey}/update-business-remote-menu",
      "title": "Update Business Remote Menu",
      "description": "Replaces or clears the HTML used as this business\u0027s remote menu and branded portal header.",
      "purpose": "Replaces or clears the HTML used as this business\u0027s remote menu and branded portal header.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Business Owner",
      "sortOrder": 2028,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-remote-menu/?",
      "usageContract": "/haixe/{businessKey}/update-business-remote-menu/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/create-contact-request",
      "path": "/aixe/businesses/create-contact-request",
      "title": "Create Contact Request",
      "description": "Creates one contact request for an active Internet of Doing business and alerts the business at its configured alert email address.",
      "purpose": "Creates one contact request for an active Internet of Doing business and alerts the business at its configured alert email address.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Businesses",
      "audience": "Customer",
      "sortOrder": 2030,
      "discoveryRequest": "GET /aixe/businesses/create-contact-request/?",
      "usageContract": "/aixe/businesses/create-contact-request/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/naics/validate-naics-code",
      "path": "/aixe/naics/validate-naics-code",
      "title": "Validate NAICS Code",
      "description": "Check a likely NAICS code recalled by an AI against the site\u0027s 2022 six-digit industries before using it in a business search.",
      "purpose": "Check a likely NAICS code recalled by an AI against the site\u0027s 2022 six-digit industries before using it in a business search.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2030,
      "discoveryRequest": "GET /aixe/naics/validate-naics-code/?",
      "usageContract": "/aixe/naics/validate-naics-code/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/search-businesses",
      "path": "/aixe/businesses/search-businesses",
      "title": "Search Businesses",
      "description": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "purpose": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2040,
      "discoveryRequest": "GET /aixe/businesses/search-businesses/?",
      "usageContract": "/aixe/businesses/search-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/search-businesses",
      "path": "/aixe/businesses/search-businesses",
      "title": "Search Businesses",
      "description": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "purpose": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2040,
      "discoveryRequest": "GET /aixe/businesses/search-businesses/?",
      "usageContract": "/aixe/businesses/search-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/review-business",
      "path": "/aixe/businesses/review-business",
      "title": "Review Business",
      "description": "Submit a written review for an active Internet of Doing business and immediately notify the business owner by email and text message.",
      "purpose": "Submit a written review for an active Internet of Doing business and immediately notify the business owner by email and text message.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2050,
      "discoveryRequest": "GET /aixe/businesses/review-business/?",
      "usageContract": "/aixe/businesses/review-business/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/redirector-urls/create-redirector-url",
      "path": "/aixe/redirector-urls/create-redirector-url",
      "title": "Create Redirector URL",
      "description": "Create a custom public redirect link for the signed-in business owner, optionally notifying an email recipient, phone recipient, or both whenever the link is hit. The owner can manage it in the business dashboard.",
      "purpose": "Create a custom public redirect link for the signed-in business owner, optionally notifying an email recipient, phone recipient, or both whenever the link is hit. The owner can manage it in the business dashboard.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Redirector URLs",
      "audience": "BusinessOwner",
      "sortOrder": 2100,
      "discoveryRequest": "GET /aixe/redirector-urls/create-redirector-url/?",
      "usageContract": "/aixe/redirector-urls/create-redirector-url/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/redirector-urls/check-redirector-prefix",
      "path": "/aixe/redirector-urls/check-redirector-prefix",
      "title": "Check Redirector Prefix",
      "description": "Check whether a custom redirector prefix already exists anywhere on Internet of Doing before choosing it for a new redirect link.",
      "purpose": "Check whether a custom redirector prefix already exists anywhere on Internet of Doing before choosing it for a new redirect link.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Redirector URLs",
      "audience": "BusinessOwner",
      "sortOrder": 2110,
      "discoveryRequest": "GET /aixe/redirector-urls/check-redirector-prefix/?",
      "usageContract": "/aixe/redirector-urls/check-redirector-prefix/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/create-pairing-token",
      "path": "/aixe/fulfillment-stations/create-pairing-token",
      "title": "Create Pairing Token",
      "description": "Lets an authenticated business owner provision one fulfillment tablet using a short-lived QR URL, without sharing owner credentials.",
      "purpose": "Lets an authenticated business owner provision one fulfillment tablet using a short-lived QR URL, without sharing owner credentials.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "BusinessOwner",
      "sortOrder": 2200,
      "discoveryRequest": "GET /aixe/fulfillment-stations/create-pairing-token/?",
      "usageContract": "/aixe/fulfillment-stations/create-pairing-token/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/activate",
      "path": "/aixe/fulfillment-stations/activate",
      "title": "Activate",
      "description": "Consumes one unused, unexpired pairing token and names a dedicated business fulfillment station. Returns its unique station credential or sets the secure browser cookie.",
      "purpose": "Consumes one unused, unexpired pairing token and names a dedicated business fulfillment station. Returns its unique station credential or sets the secure browser cookie.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2201,
      "discoveryRequest": "GET /aixe/fulfillment-stations/activate/?",
      "usageContract": "/aixe/fulfillment-stations/activate/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/poll",
      "path": "/aixe/fulfillment-stations/poll",
      "title": "Poll",
      "description": "Authenticates a fulfillment station, records its successful heartbeat, and reports incoming New or Pending orders so every station can sound and flash until the business moves those orders forward.",
      "purpose": "Authenticates a fulfillment station, records its successful heartbeat, and reports incoming New or Pending orders so every station can sound and flash until the business moves those orders forward.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2202,
      "discoveryRequest": "GET /aixe/fulfillment-stations/poll/?",
      "usageContract": "/aixe/fulfillment-stations/poll/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/get-order",
      "path": "/aixe/fulfillment-stations/get-order",
      "title": "Get Order",
      "description": "Returns the selected business-owned order\u0027s captured customer, item, name-on-cup, instructions, schedule, address, totals and invoice payment information needed for fulfillment.",
      "purpose": "Returns the selected business-owned order\u0027s captured customer, item, name-on-cup, instructions, schedule, address, totals and invoice payment information needed for fulfillment.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2203,
      "discoveryRequest": "GET /aixe/fulfillment-stations/get-order/?",
      "usageContract": "/aixe/fulfillment-stations/get-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/accept-order",
      "path": "/aixe/fulfillment-stations/accept-order",
      "title": "Accept Order",
      "description": "Atomically moves a New or Pending order to the existing In Progress status and records the accepting station and UTC timestamp. Other stations stop alerting when their polls see the changed status.",
      "purpose": "Atomically moves a New or Pending order to the existing In Progress status and records the accepting station and UTC timestamp. Other stations stop alerting when their polls see the changed status.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2204,
      "discoveryRequest": "GET /aixe/fulfillment-stations/accept-order/?",
      "usageContract": "/aixe/fulfillment-stations/accept-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/list-stations",
      "path": "/aixe/fulfillment-stations/list-stations",
      "title": "List Stations",
      "description": "Shows the authenticated business owner up to 200 active registered stations, each location, last successful heartbeat and derived online/offline status.",
      "purpose": "Shows the authenticated business owner up to 200 active registered stations, each location, last successful heartbeat and derived online/offline status.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "BusinessOwner",
      "sortOrder": 2205,
      "discoveryRequest": "GET /aixe/fulfillment-stations/list-stations/?",
      "usageContract": "/aixe/fulfillment-stations/list-stations/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/revoke-station",
      "path": "/aixe/fulfillment-stations/revoke-station",
      "title": "Revoke Station",
      "description": "Lets a business owner immediately revoke one registered fulfillment station without changing business login credentials or affecting other stations.",
      "purpose": "Lets a business owner immediately revoke one registered fulfillment station without changing business login credentials or affecting other stations.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "BusinessOwner",
      "sortOrder": 2206,
      "discoveryRequest": "GET /aixe/fulfillment-stations/revoke-station/?",
      "usageContract": "/aixe/fulfillment-stations/revoke-station/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/shop/get-shop-info",
      "path": "/haixe/{businessKey}/shop/get-shop-info",
      "title": "Get Shop Info",
      "description": "Returns the selected business\u0027s public business information.",
      "purpose": "Returns the selected business\u0027s public business information.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3000,
      "discoveryRequest": "GET /haixe/{businessKey}/shop/get-shop-info/?",
      "usageContract": "/haixe/{businessKey}/shop/get-shop-info/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/list-products-and-services",
      "path": "/haixe/{businessKey}/list-products-and-services",
      "title": "List Products And Services",
      "description": "Returns the selected business\u0027s active products and services as a bounded JSON list.",
      "purpose": "Returns the selected business\u0027s active products and services as a bounded JSON list.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3001,
      "discoveryRequest": "GET /haixe/{businessKey}/list-products-and-services/?",
      "usageContract": "/haixe/{businessKey}/list-products-and-services/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-product-categories",
      "path": "/haixe/{businessKey}/get-product-categories",
      "title": "Get Product Categories",
      "description": "Returns every product category used by an active product or service for the selected business.",
      "purpose": "Returns every product category used by an active product or service for the selected business.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3002,
      "discoveryRequest": "GET /haixe/{businessKey}/get-product-categories/?",
      "usageContract": "/haixe/{businessKey}/get-product-categories/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/{businessKey}/products/search",
      "path": "/haixe/quick-order/{businessKey}/products/search",
      "title": "Search Products",
      "description": "Search Products through the public, no-login quick-order flow.",
      "purpose": "Search Products through the public, no-login quick-order flow.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 3002,
      "discoveryRequest": "GET /haixe/quick-order/{businessKey}/products/search/?",
      "usageContract": "/haixe/quick-order/{businessKey}/products/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/{businessKey}/products/search",
      "path": "/haixe/quick-order/{businessKey}/products/search",
      "title": "Search Products",
      "description": "Search Products through the public, no-login quick-order flow.",
      "purpose": "Search Products through the public, no-login quick-order flow.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 3002,
      "discoveryRequest": "GET /haixe/quick-order/{businessKey}/products/search/?",
      "usageContract": "/haixe/quick-order/{businessKey}/products/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/tour",
      "path": "/haixe/{businessKey}/tour",
      "title": "Tour",
      "description": "Welcome the visitor to their persistent, tenant-isolated the selected business HAIXE business and guide them as they build and operate it.",
      "purpose": "Welcome the visitor to their persistent, tenant-isolated the selected business HAIXE business and guide them as they build and operate it.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3003,
      "discoveryRequest": "GET /haixe/{businessKey}/tour/?",
      "usageContract": "/haixe/{businessKey}/tour/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/customer/create-customer",
      "path": "/haixe/{businessKey}/customer/create-customer",
      "title": "Create Customer",
      "description": "Creates a customer linked to the selected business when the email does not already exist for this business.",
      "purpose": "Creates a customer linked to the selected business when the email does not already exist for this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3004,
      "discoveryRequest": "GET /haixe/{businessKey}/customer/create-customer/?",
      "usageContract": "/haixe/{businessKey}/customer/create-customer/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/customer/check-customer-key",
      "path": "/haixe/{businessKey}/customer/check-customer-key",
      "title": "Check Customer Key",
      "description": "Checks whether CustomerKey identifies an active customer linked to the selected business.",
      "purpose": "Checks whether CustomerKey identifies an active customer linked to the selected business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3005,
      "discoveryRequest": "GET /haixe/{businessKey}/customer/check-customer-key/?",
      "usageContract": "/haixe/{businessKey}/customer/check-customer-key/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/customer/recover-customer-key",
      "path": "/haixe/{businessKey}/customer/recover-customer-key",
      "title": "Recover Customer Key",
      "description": "Accepts a customer email address and, when it matches an active customer linked to the selected business, emails that customer their business-scoped CustomerKey.",
      "purpose": "Accepts a customer email address and, when it matches an active customer linked to the selected business, emails that customer their business-scoped CustomerKey.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3006,
      "discoveryRequest": "GET /haixe/{businessKey}/customer/recover-customer-key/?",
      "usageContract": "/haixe/{businessKey}/customer/recover-customer-key/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/orders/create-order-request",
      "path": "/haixe/{businessKey}/orders/create-order-request",
      "title": "Create Order Request",
      "description": "Creates an order request and invoice for the selected business from existing business-scoped customer and product keys.",
      "purpose": "Creates an order request and invoice for the selected business from existing business-scoped customer and product keys.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3007,
      "discoveryRequest": "GET /haixe/{businessKey}/orders/create-order-request/?",
      "usageContract": "/haixe/{businessKey}/orders/create-order-request/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/orders/get-full-order-information",
      "path": "/haixe/{businessKey}/orders/get-full-order-information",
      "title": "Get Full Order Information",
      "description": "Returns one complete order owned by the submitted customer and linked to the selected business.",
      "purpose": "Returns one complete order owned by the submitted customer and linked to the selected business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3008,
      "discoveryRequest": "GET /haixe/{businessKey}/orders/get-full-order-information/?",
      "usageContract": "/haixe/{businessKey}/orders/get-full-order-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/orders/modify-order",
      "path": "/haixe/{businessKey}/orders/modify-order",
      "title": "Modify Order",
      "description": "Replaces the items on one editable customer-owned order linked to the selected business and recalculates inventory, order totals, and invoice totals.",
      "purpose": "Replaces the items on one editable customer-owned order linked to the selected business and recalculates inventory, order totals, and invoice totals.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3009,
      "discoveryRequest": "GET /haixe/{businessKey}/orders/modify-order/?",
      "usageContract": "/haixe/{businessKey}/orders/modify-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/orders/cancel-order",
      "path": "/haixe/{businessKey}/orders/cancel-order",
      "title": "Cancel Order",
      "description": "Cancels one customer-owned order linked to the selected business when the order is not terminal.",
      "purpose": "Cancels one customer-owned order linked to the selected business when the order is not terminal.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3010,
      "discoveryRequest": "GET /haixe/{businessKey}/orders/cancel-order/?",
      "usageContract": "/haixe/{businessKey}/orders/cancel-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/invoices/list-customer-invoices",
      "path": "/haixe/{businessKey}/invoices/list-customer-invoices",
      "title": "List Customer Invoices",
      "description": "Returns bounded invoice and linked order header history for a customer linked to the selected business.",
      "purpose": "Returns bounded invoice and linked order header history for a customer linked to the selected business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3011,
      "discoveryRequest": "GET /haixe/{businessKey}/invoices/list-customer-invoices/?",
      "usageContract": "/haixe/{businessKey}/invoices/list-customer-invoices/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-business-information",
      "path": "/haixe/{businessKey}/get-business-information",
      "title": "Get Business Information",
      "description": "Returns this business\u0027s complete public business information.",
      "purpose": "Returns this business\u0027s complete public business information.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3012,
      "discoveryRequest": "GET /haixe/{businessKey}/get-business-information/?",
      "usageContract": "/haixe/{businessKey}/get-business-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-account-password",
      "path": "/haixe/{businessKey}/update-business-account-password",
      "title": "Update Business Account Password",
      "description": "Updates the authenticated Person credentials after current-password verification; applies across all managed businesses.",
      "purpose": "Updates the authenticated Person credentials after current-password verification; applies across all managed businesses.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3013,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-account-password/?",
      "usageContract": "/haixe/{businessKey}/update-business-account-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-login-credentials",
      "path": "/haixe/{businessKey}/update-business-login-credentials",
      "title": "Update Business Login Credentials",
      "description": "Updates the authenticated Person credentials after current-password verification; applies across all managed businesses.",
      "purpose": "Updates the authenticated Person credentials after current-password verification; applies across all managed businesses.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3014,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-login-credentials/?",
      "usageContract": "/haixe/{businessKey}/update-business-login-credentials/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-works",
      "path": "/haixe/{businessKey}/get-works",
      "title": "Get Works",
      "description": "Returns this business\u0027s identity and current resource counts.",
      "purpose": "Returns this business\u0027s identity and current resource counts.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3015,
      "discoveryRequest": "GET /haixe/{businessKey}/get-works/?",
      "usageContract": "/haixe/{businessKey}/get-works/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-customers",
      "path": "/haixe/{businessKey}/search-customers",
      "title": "Search Customers",
      "description": "Searches customers linked to this business.",
      "purpose": "Searches customers linked to this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3016,
      "discoveryRequest": "GET /haixe/{businessKey}/search-customers/?",
      "usageContract": "/haixe/{businessKey}/search-customers/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-customer",
      "path": "/haixe/{businessKey}/get-customer",
      "title": "Get Customer",
      "description": "Returns one business-owned customer.",
      "purpose": "Returns one business-owned customer.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3017,
      "discoveryRequest": "GET /haixe/{businessKey}/get-customer/?",
      "usageContract": "/haixe/{businessKey}/get-customer/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-customer",
      "path": "/haixe/{businessKey}/update-customer",
      "title": "Update Customer",
      "description": "Updates supplied fields on one business-owned customer.",
      "purpose": "Updates supplied fields on one business-owned customer.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3018,
      "discoveryRequest": "GET /haixe/{businessKey}/update-customer/?",
      "usageContract": "/haixe/{businessKey}/update-customer/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-customer",
      "path": "/haixe/{businessKey}/delete-customer",
      "title": "Delete Customer",
      "description": "Deletes an unreferenced business-owned customer after explicit confirmation.",
      "purpose": "Deletes an unreferenced business-owned customer after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3019,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-customer/?",
      "usageContract": "/haixe/{businessKey}/delete-customer/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-products-and-services",
      "path": "/haixe/{businessKey}/search-products-and-services",
      "title": "Search Products And Services",
      "description": "Searches this business\u0027s products and services with inventory and reorder information.",
      "purpose": "Searches this business\u0027s products and services with inventory and reorder information.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3020,
      "discoveryRequest": "GET /haixe/{businessKey}/search-products-and-services/?",
      "usageContract": "/haixe/{businessKey}/search-products-and-services/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-product-or-service",
      "path": "/haixe/{businessKey}/get-product-or-service",
      "title": "Get Product Or Service",
      "description": "Returns one business-owned product or service.",
      "purpose": "Returns one business-owned product or service.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3021,
      "discoveryRequest": "GET /haixe/{businessKey}/get-product-or-service/?",
      "usageContract": "/haixe/{businessKey}/get-product-or-service/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-product-or-service",
      "path": "/haixe/{businessKey}/create-product-or-service",
      "title": "Create Product Or Service",
      "description": "Creates one product or service for this business.",
      "purpose": "Creates one product or service for this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3022,
      "discoveryRequest": "GET /haixe/{businessKey}/create-product-or-service/?",
      "usageContract": "/haixe/{businessKey}/create-product-or-service/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-product-or-service",
      "path": "/haixe/{businessKey}/update-product-or-service",
      "title": "Update Product Or Service",
      "description": "Updates supplied fields on one business-owned product or service.",
      "purpose": "Updates supplied fields on one business-owned product or service.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3023,
      "discoveryRequest": "GET /haixe/{businessKey}/update-product-or-service/?",
      "usageContract": "/haixe/{businessKey}/update-product-or-service/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-product-or-service",
      "path": "/haixe/{businessKey}/delete-product-or-service",
      "title": "Delete Product Or Service",
      "description": "Deletes an unreferenced product or service after explicit confirmation.",
      "purpose": "Deletes an unreferenced product or service after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3024,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-product-or-service/?",
      "usageContract": "/haixe/{businessKey}/delete-product-or-service/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/download-price-list",
      "path": "/haixe/{businessKey}/download-price-list",
      "title": "Download Price List",
      "description": "Downloads this business\u0027s complete product and service price list as CSV.",
      "purpose": "Downloads this business\u0027s complete product and service price list as CSV.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3025,
      "discoveryRequest": "GET /haixe/{businessKey}/download-price-list/?",
      "usageContract": "/haixe/{businessKey}/download-price-list/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/import-price-list",
      "path": "/haixe/{businessKey}/import-price-list",
      "title": "Import Price List",
      "description": "Validates and creates or updates submitted product and service CSV rows by ProductOrServiceCode.",
      "purpose": "Validates and creates or updates submitted product and service CSV rows by ProductOrServiceCode.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3026,
      "discoveryRequest": "GET /haixe/{businessKey}/import-price-list/?",
      "usageContract": "/haixe/{businessKey}/import-price-list/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/check-product-inventory",
      "path": "/haixe/{businessKey}/check-product-inventory",
      "title": "Check Product Inventory",
      "description": "Checks current inventory and whether a requested quantity can be fulfilled.",
      "purpose": "Checks current inventory and whether a requested quantity can be fulfilled.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3027,
      "discoveryRequest": "GET /haixe/{businessKey}/check-product-inventory/?",
      "usageContract": "/haixe/{businessKey}/check-product-inventory/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/adjust-product-inventory",
      "path": "/haixe/{businessKey}/adjust-product-inventory",
      "title": "Adjust Product Inventory",
      "description": "Atomically adjusts one product\u0027s quantity on hand.",
      "purpose": "Atomically adjusts one product\u0027s quantity on hand.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3028,
      "discoveryRequest": "GET /haixe/{businessKey}/adjust-product-inventory/?",
      "usageContract": "/haixe/{businessKey}/adjust-product-inventory/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-invoice",
      "path": "/haixe/{businessKey}/get-invoice",
      "title": "Get Invoice",
      "description": "Returns one business-owned invoice with customer and detail lines.",
      "purpose": "Returns one business-owned invoice with customer and detail lines.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3029,
      "discoveryRequest": "GET /haixe/{businessKey}/get-invoice/?",
      "usageContract": "/haixe/{businessKey}/get-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-invoice",
      "path": "/haixe/{businessKey}/create-invoice",
      "title": "Create Invoice",
      "description": "Creates an invoice header for a business-owned customer.",
      "purpose": "Creates an invoice header for a business-owned customer.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3030,
      "discoveryRequest": "GET /haixe/{businessKey}/create-invoice/?",
      "usageContract": "/haixe/{businessKey}/create-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-invoice",
      "path": "/haixe/{businessKey}/update-invoice",
      "title": "Update Invoice",
      "description": "Updates invoice dates, status, address, notes, or tax without changing payment history.",
      "purpose": "Updates invoice dates, status, address, notes, or tax without changing payment history.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3031,
      "discoveryRequest": "GET /haixe/{businessKey}/update-invoice/?",
      "usageContract": "/haixe/{businessKey}/update-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-invoice",
      "path": "/haixe/{businessKey}/delete-invoice",
      "title": "Delete Invoice",
      "description": "Deletes an invoice with no payment history, its lines, and appointments after explicit confirmation.",
      "purpose": "Deletes an invoice with no payment history, its lines, and appointments after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3032,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-invoice/?",
      "usageContract": "/haixe/{businessKey}/delete-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/add-payment-to-invoice",
      "path": "/haixe/{businessKey}/add-payment-to-invoice",
      "title": "Add Payment To Invoice",
      "description": "Adds one immutable positive payment or negative payment adjustment to a business-owned invoice and recalculates its paid balance.",
      "purpose": "Adds one immutable positive payment or negative payment adjustment to a business-owned invoice and recalculates its paid balance.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3033,
      "discoveryRequest": "GET /haixe/{businessKey}/add-payment-to-invoice/?",
      "usageContract": "/haixe/{businessKey}/add-payment-to-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-invoice-payment",
      "path": "/haixe/{businessKey}/get-invoice-payment",
      "title": "Get Invoice Payment",
      "description": "Returns one immutable business-owned invoice payment.",
      "purpose": "Returns one immutable business-owned invoice payment.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3034,
      "discoveryRequest": "GET /haixe/{businessKey}/get-invoice-payment/?",
      "usageContract": "/haixe/{businessKey}/get-invoice-payment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-all-invoice-payments",
      "path": "/haixe/{businessKey}/get-all-invoice-payments",
      "title": "Get All Invoice Payments",
      "description": "Returns a bounded newest-first collection of all invoice payments owned by this business.",
      "purpose": "Returns a bounded newest-first collection of all invoice payments owned by this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3035,
      "discoveryRequest": "GET /haixe/{businessKey}/get-all-invoice-payments/?",
      "usageContract": "/haixe/{businessKey}/get-all-invoice-payments/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-invoice-payments",
      "path": "/haixe/{businessKey}/search-invoice-payments",
      "title": "Search Invoice Payments",
      "description": "Returns bounded newest-first payment history for one business-owned invoice.",
      "purpose": "Returns bounded newest-first payment history for one business-owned invoice.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3036,
      "discoveryRequest": "GET /haixe/{businessKey}/search-invoice-payments/?",
      "usageContract": "/haixe/{businessKey}/search-invoice-payments/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-invoice-detail",
      "path": "/haixe/{businessKey}/get-invoice-detail",
      "title": "Get Invoice Detail",
      "description": "Returns one invoice detail line.",
      "purpose": "Returns one invoice detail line.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3037,
      "discoveryRequest": "GET /haixe/{businessKey}/get-invoice-detail/?",
      "usageContract": "/haixe/{businessKey}/get-invoice-detail/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-invoice-detail",
      "path": "/haixe/{businessKey}/create-invoice-detail",
      "title": "Create Invoice Detail",
      "description": "Adds a product or service line and recalculates invoice totals.",
      "purpose": "Adds a product or service line and recalculates invoice totals.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3038,
      "discoveryRequest": "GET /haixe/{businessKey}/create-invoice-detail/?",
      "usageContract": "/haixe/{businessKey}/create-invoice-detail/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-invoice-detail",
      "path": "/haixe/{businessKey}/update-invoice-detail",
      "title": "Update Invoice Detail",
      "description": "Updates an invoice line and recalculates totals and inventory.",
      "purpose": "Updates an invoice line and recalculates totals and inventory.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3039,
      "discoveryRequest": "GET /haixe/{businessKey}/update-invoice-detail/?",
      "usageContract": "/haixe/{businessKey}/update-invoice-detail/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-invoice-detail",
      "path": "/haixe/{businessKey}/delete-invoice-detail",
      "title": "Delete Invoice Detail",
      "description": "Deletes an invoice line and its appointment after explicit confirmation.",
      "purpose": "Deletes an invoice line and its appointment after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3040,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-invoice-detail/?",
      "usageContract": "/haixe/{businessKey}/delete-invoice-detail/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-service-schedule",
      "path": "/haixe/{businessKey}/search-service-schedule",
      "title": "Search Service Schedule",
      "description": "Searches confirmed service appointments for this business.",
      "purpose": "Searches confirmed service appointments for this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3041,
      "discoveryRequest": "GET /haixe/{businessKey}/search-service-schedule/?",
      "usageContract": "/haixe/{businessKey}/search-service-schedule/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-service-appointment",
      "path": "/haixe/{businessKey}/get-service-appointment",
      "title": "Get Service Appointment",
      "description": "Returns one confirmed service appointment.",
      "purpose": "Returns one confirmed service appointment.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3042,
      "discoveryRequest": "GET /haixe/{businessKey}/get-service-appointment/?",
      "usageContract": "/haixe/{businessKey}/get-service-appointment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-service-appointment",
      "path": "/haixe/{businessKey}/create-service-appointment",
      "title": "Create Service Appointment",
      "description": "Creates a confirmed appointment for a schedulable invoice detail.",
      "purpose": "Creates a confirmed appointment for a schedulable invoice detail.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3043,
      "discoveryRequest": "GET /haixe/{businessKey}/create-service-appointment/?",
      "usageContract": "/haixe/{businessKey}/create-service-appointment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-service-appointment",
      "path": "/haixe/{businessKey}/update-service-appointment",
      "title": "Update Service Appointment",
      "description": "Updates a confirmed service appointment.",
      "purpose": "Updates a confirmed service appointment.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3044,
      "discoveryRequest": "GET /haixe/{businessKey}/update-service-appointment/?",
      "usageContract": "/haixe/{businessKey}/update-service-appointment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-service-appointment",
      "path": "/haixe/{businessKey}/delete-service-appointment",
      "title": "Delete Service Appointment",
      "description": "Deletes a confirmed service appointment after explicit confirmation.",
      "purpose": "Deletes a confirmed service appointment after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3045,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-service-appointment/?",
      "usageContract": "/haixe/{businessKey}/delete-service-appointment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-sales",
      "path": "/haixe/{businessKey}/search-sales",
      "title": "Search Sales",
      "description": "Returns bounded invoice records with full-set sales, payment, and balance totals.",
      "purpose": "Returns bounded invoice records with full-set sales, payment, and balance totals.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3046,
      "discoveryRequest": "GET /haixe/{businessKey}/search-sales/?",
      "usageContract": "/haixe/{businessKey}/search-sales/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-accounts-receivable",
      "path": "/haixe/{businessKey}/get-accounts-receivable",
      "title": "Get Accounts Receivable",
      "description": "Returns outstanding and overdue receivables for this business.",
      "purpose": "Returns outstanding and overdue receivables for this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3047,
      "discoveryRequest": "GET /haixe/{businessKey}/get-accounts-receivable/?",
      "usageContract": "/haixe/{businessKey}/get-accounts-receivable/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-business-overview",
      "path": "/haixe/{businessKey}/get-business-overview",
      "title": "Get Business Overview",
      "description": "Returns a compact business briefing with sales, collections, receivables, schedule, reorder items, and top customers.",
      "purpose": "Returns a compact business briefing with sales, collections, receivables, schedule, reorder items, and top customers.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3048,
      "discoveryRequest": "GET /haixe/{businessKey}/get-business-overview/?",
      "usageContract": "/haixe/{businessKey}/get-business-overview/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/send-email",
      "path": "/haixe/{businessKey}/send-email",
      "title": "Send Email",
      "description": "Sends one business-scoped result, report, briefing, or work assignment by email.",
      "purpose": "Sends one business-scoped result, report, briefing, or work assignment by email.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3049,
      "discoveryRequest": "GET /haixe/{businessKey}/send-email/?",
      "usageContract": "/haixe/{businessKey}/send-email/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/aixe.ai",
      "path": "/haixe/{businessKey}/aixe.ai",
      "title": "Aixe.Ai",
      "description": "Read the selected business\u0027s hosted manifest, current public business identity, and active registered capabilities.",
      "purpose": "Read the selected business\u0027s hosted manifest, current public business identity, and active registered capabilities.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 3050,
      "discoveryRequest": "GET /haixe/{businessKey}/aixe.ai/?",
      "usageContract": "/haixe/{businessKey}/aixe.ai/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-business-notification-settings",
      "path": "/haixe/{businessKey}/get-business-notification-settings",
      "title": "Get Business Notification Settings",
      "description": "Returns the selected business\u0027s current private order and business-alert notification destinations so the owner can review them during onboarding or later management.",
      "purpose": "Returns the selected business\u0027s current private order and business-alert notification destinations so the owner can review them during onboarding or later management.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3051,
      "discoveryRequest": "GET /haixe/{businessKey}/get-business-notification-settings/?",
      "usageContract": "/haixe/{businessKey}/get-business-notification-settings/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-notification-settings",
      "path": "/haixe/{businessKey}/update-business-notification-settings",
      "title": "Update Business Notification Settings",
      "description": "Updates the selected business\u0027s private order and business-alert notification destinations after the owner reviews each destination independently.",
      "purpose": "Updates the selected business\u0027s private order and business-alert notification destinations after the owner reviews each destination independently.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3052,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-notification-settings/?",
      "usageContract": "/haixe/{businessKey}/update-business-notification-settings/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/create-request-for-quote",
      "path": "/aixe/rfqs/create-request-for-quote",
      "title": "Create RFQ Draft",
      "description": "Collect a customer\u0027s product or service requirements through an adaptive conversation, then save an editable RFQ draft. Use submit-request-for-quote after customer confirmation to invite nearby businesses.",
      "purpose": "Collect a customer\u0027s product or service requirements through an adaptive conversation, then save an editable RFQ draft. Use submit-request-for-quote after customer confirmation to invite nearby businesses.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8000,
      "discoveryRequest": "GET /aixe/rfqs/create-request-for-quote/?",
      "usageContract": "/aixe/rfqs/create-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/update-request-for-quote",
      "path": "/aixe/rfqs/update-request-for-quote",
      "title": "Update RFQ Draft",
      "description": "Correct or refine the customer\u0027s RFQ while it is a Draft. Published requirements are immutable; create a new draft for different requirements.",
      "purpose": "Correct or refine the customer\u0027s RFQ while it is a Draft. Published requirements are immutable; create a new draft for different requirements.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8001,
      "discoveryRequest": "GET /aixe/rfqs/update-request-for-quote/?",
      "usageContract": "/aixe/rfqs/update-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/submit-request-for-quote",
      "path": "/aixe/rfqs/submit-request-for-quote",
      "title": "Submit RFQ",
      "description": "Publish a confirmed customer RFQ, find active businesses matching any requested NAICS code within the ZIP-based radius, create one assigned quote opportunity per business, and email invitations. Submission permanently locks the request.",
      "purpose": "Publish a confirmed customer RFQ, find active businesses matching any requested NAICS code within the ZIP-based radius, create one assigned quote opportunity per business, and email invitations. Submission permanently locks the request.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8002,
      "discoveryRequest": "GET /aixe/rfqs/submit-request-for-quote/?",
      "usageContract": "/aixe/rfqs/submit-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/cancel-request-for-quote",
      "path": "/aixe/rfqs/cancel-request-for-quote",
      "title": "Cancel RFQ",
      "description": "Stop a Draft or Open RFQ. Businesses previously invited receive closure emails, and outstanding quotes become Not Accepted. Records remain available in history.",
      "purpose": "Stop a Draft or Open RFQ. Businesses previously invited receive closure emails, and outstanding quotes become Not Accepted. Records remain available in history.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8003,
      "discoveryRequest": "GET /aixe/rfqs/cancel-request-for-quote/?",
      "usageContract": "/aixe/rfqs/cancel-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/search-request-for-quotes",
      "path": "/aixe/rfqs/search-request-for-quotes",
      "title": "Search RFQs",
      "description": "Find the signed-in customer\u0027s RFQs, or a business\u0027s assigned RFQ opportunities. Returns a bounded summary page, newest first. Use this before loading a selected RFQ.",
      "purpose": "Find the signed-in customer\u0027s RFQs, or a business\u0027s assigned RFQ opportunities. Returns a bounded summary page, newest first. Use this before loading a selected RFQ.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8004,
      "discoveryRequest": "GET /aixe/rfqs/search-request-for-quotes/?",
      "usageContract": "/aixe/rfqs/search-request-for-quotes/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/get-request-for-quote",
      "path": "/aixe/rfqs/get-request-for-quote",
      "title": "Get RFQ",
      "description": "Read the full requirements and state of one accessible RFQ before preparing a quote, editing a draft, or discussing offers with the customer.",
      "purpose": "Read the full requirements and state of one accessible RFQ before preparing a quote, editing a draft, or discussing offers with the customer.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8005,
      "discoveryRequest": "GET /aixe/rfqs/get-request-for-quote/?",
      "usageContract": "/aixe/rfqs/get-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/search-business-quotes",
      "path": "/aixe/rfqs/search-business-quotes",
      "title": "Search Business Quotes",
      "description": "Read a bounded list of quotes for a selected accessible RFQ. Customers see submitted quotes; a business sees only its own assigned quote. Competitor proposals are private.",
      "purpose": "Read a bounded list of quotes for a selected accessible RFQ. Customers see submitted quotes; a business sees only its own assigned quote. Competitor proposals are private.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8006,
      "discoveryRequest": "GET /aixe/rfqs/search-business-quotes/?",
      "usageContract": "/aixe/rfqs/search-business-quotes/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/get-business-quote",
      "path": "/aixe/rfqs/get-business-quote",
      "title": "Get Business Quote",
      "description": "Read one accessible business quote, its RFQ, proposal details, status, and allowed actions. Customers do not receive unpublished proposal contents.",
      "purpose": "Read one accessible business quote, its RFQ, proposal details, status, and allowed actions. Customers do not receive unpublished proposal contents.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8007,
      "discoveryRequest": "GET /aixe/rfqs/get-business-quote/?",
      "usageContract": "/aixe/rfqs/get-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/save-business-quote",
      "path": "/aixe/rfqs/save-business-quote",
      "title": "Save Business Quote",
      "description": "Save the assigned business\u0027s proposal. An unsubmitted proposal stays private. Changes to an already submitted Pending or Maybe quote become visible immediately; a lower amount triggers an email with both old and new pricing bases.",
      "purpose": "Save the assigned business\u0027s proposal. An unsubmitted proposal stays private. Changes to an already submitted Pending or Maybe quote become visible immediately; a lower amount triggers an email with both old and new pricing bases.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "BusinessOwner",
      "sortOrder": 8008,
      "discoveryRequest": "GET /aixe/rfqs/save-business-quote/?",
      "usageContract": "/aixe/rfqs/save-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/submit-business-quote",
      "path": "/aixe/rfqs/submit-business-quote",
      "title": "Submit Business Quote",
      "description": "Submit the assigned business\u0027s price and scope, or revise its active submitted quote. First submission emails the customer. A subsequent amount reduction emails the customer; quote shortlisting is preserved.",
      "purpose": "Submit the assigned business\u0027s price and scope, or revise its active submitted quote. First submission emails the customer. A subsequent amount reduction emails the customer; quote shortlisting is preserved.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "BusinessOwner",
      "sortOrder": 8009,
      "discoveryRequest": "GET /aixe/rfqs/submit-business-quote/?",
      "usageContract": "/aixe/rfqs/submit-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/decline-business-quote",
      "path": "/aixe/rfqs/decline-business-quote",
      "title": "Decline RFQ Opportunity",
      "description": "Decline an assigned opportunity and remove it from the business\u0027s default active view. The permanent record remains in history and cannot be edited or messaged after decline.",
      "purpose": "Decline an assigned opportunity and remove it from the business\u0027s default active view. The permanent record remains in history and cannot be edited or messaged after decline.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "BusinessOwner",
      "sortOrder": 8010,
      "discoveryRequest": "GET /aixe/rfqs/decline-business-quote/?",
      "usageContract": "/aixe/rfqs/decline-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/update-business-quote-status",
      "path": "/aixe/rfqs/update-business-quote-status",
      "title": "Decide On Business Quote",
      "description": "Record the RFQ customer\u0027s decision on a submitted quote and email the business when that decision changes. Accepting one quote closes the RFQ, marks other outstanding quotes Not Accepted, and emails every other invited business that the RFQ is closed.",
      "purpose": "Record the RFQ customer\u0027s decision on a submitted quote and email the business when that decision changes. Accepting one quote closes the RFQ, marks other outstanding quotes Not Accepted, and emails every other invited business that the RFQ is closed.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8011,
      "discoveryRequest": "GET /aixe/rfqs/update-business-quote-status/?",
      "usageContract": "/aixe/rfqs/update-business-quote-status/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/get-messages",
      "path": "/aixe/rfqs/get-messages",
      "title": "Get Quote Messages",
      "description": "Retrieve one bounded page of the private customer-business conversation for an accessible quote, oldest first. Messages are permanent and contain no attachments or read receipts.",
      "purpose": "Retrieve one bounded page of the private customer-business conversation for an accessible quote, oldest first. Messages are permanent and contain no attachments or read receipts.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8012,
      "discoveryRequest": "GET /aixe/rfqs/get-messages/?",
      "usageContract": "/aixe/rfqs/get-messages/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/send-message",
      "path": "/aixe/rfqs/send-message",
      "title": "Send Quote Message",
      "description": "Send an intentional message in the selected quote\u0027s private conversation and email the other party. Sender identity is determined by authentication. Automatic status and closure emails do not become conversation messages.",
      "purpose": "Send an intentional message in the selected quote\u0027s private conversation and email the other party. Sender identity is determined by authentication. Automatic status and closure emails do not become conversation messages.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8013,
      "discoveryRequest": "GET /aixe/rfqs/send-message/?",
      "usageContract": "/aixe/rfqs/send-message/?",
      "documentationSource": "AIXEEndpointRegistry"
    }
  ],
  "documentationSource": "AIXEEndpointRegistry",
  "protocolReference": {
    "protocolHome": "http://aixeprotocol.com/",
    "canonicalUsageContract": "http://aixeprotocol.com/usage/?",
    "whitepaper": "http://aixeprotocol.com/whitepaper/full-spec.html",
    "inventor": "Gregory Oglethorpe"
  },
  "canonicalManifest": "https://www.internetofdoing.com/ai",
  "protocolEthos": "AI assistants should discover what a business can do, gather only the information required, protect private business data, and turn authorized human intent into useful business action.",
  "authorizedProtocolUse": [
    "Public discovery of InternetOfDoing.com",
    "Capability description",
    "Workflow explanation",
    "Routing users to signup or login",
    "Explaining how AI-originated requests can become structured small-business work",
    "Discovering an active business\u0027s hosted AIXE workflow through its BusinessKey"
  ],
  "endpointAuthoritativeOutcomeRule": "The root AIXE document describes the platform. Business-scoped hosted actions are declared only by /haixe/{BusinessKey}/aixe.ai and its endpoint contracts. Every hosted action response includes SuccessCode, and only SUCCESS means success.",
  "site": {
    "name": "InternetOfDoing.com",
    "url": "https://www.internetofdoing.com",
    "description": "A small-business operating system and AI-readiness platform for turning AI-originated customer intent into structured business work."
  },
  "publicDiscovery": {
    "allowed": true,
    "privateDataExposed": false,
    "authenticatedAiOperationsAvailable": true,
    "hostedBusinessAixeAvailable": true,
    "publicHaixeBusinessExperienceAvailable": true,
    "authenticationRequiredForAppData": true
  },
  "aixeEndpoints": [
    {
      "endpoint": "/haixe/quick-order/cancel-order",
      "path": "/haixe/quick-order/cancel-order",
      "title": "Cancel Order",
      "description": "Cancel Order through the public, no-login quick-order flow.",
      "purpose": "Cancel Order through the public, no-login quick-order flow.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 0,
      "discoveryRequest": "GET /haixe/quick-order/cancel-order/?",
      "usageContract": "/haixe/quick-order/cancel-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/customer-check",
      "path": "/haixe/quick-order/customer-check",
      "title": "Customer Check",
      "description": "Customer Check through the public, no-login quick-order flow.",
      "purpose": "Customer Check through the public, no-login quick-order flow.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 450,
      "discoveryRequest": "GET /haixe/quick-order/customer-check/?",
      "usageContract": "/haixe/quick-order/customer-check/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/place-order",
      "path": "/haixe/quick-order/place-order",
      "title": "Place Order",
      "description": "Resolves or creates a customer and places selected products or scheduled services in one quick order with customer and business notifications.",
      "purpose": "Resolves or creates a customer and places selected products or scheduled services in one quick order with customer and business notifications.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 460,
      "discoveryRequest": "GET /haixe/quick-order/place-order/?",
      "usageContract": "/haixe/quick-order/place-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/list-businesses",
      "path": "/aixe/account/list-businesses",
      "title": "List Businesses",
      "description": "List the authenticated Person\u0027s active owned businesses so the human can choose which business to manage or switch to. Returns up to 100 business key/name summaries per page.",
      "purpose": "List the authenticated Person\u0027s active owned businesses so the human can choose which business to manage or switch to. Returns up to 100 business key/name summaries per page.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "BusinessOwner",
      "sortOrder": 1202,
      "discoveryRequest": "GET /aixe/account/list-businesses/?",
      "usageContract": "/aixe/account/list-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/select-business",
      "path": "/aixe/account/select-business",
      "title": "Select Business",
      "description": "Open a business selected by the human from list-businesses after verifying that the authenticated Person owns it. Keep the same token and its existing expiration, and use the selected business for subsequent business operations.",
      "purpose": "Open a business selected by the human from list-businesses after verifying that the authenticated Person owns it. Keep the same token and its existing expiration, and use the selected business for subsequent business operations.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "BusinessOwner",
      "sortOrder": 1203,
      "discoveryRequest": "GET /aixe/account/select-business/?",
      "usageContract": "/aixe/account/select-business/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/login",
      "path": "/aixe/associates/login",
      "title": "Sales Associate Login",
      "description": "Authenticates a Person authorized by a SalesAssociate Linker role and returns a private 15-minute token for Sales Associate AIXE actions.",
      "purpose": "Authenticates a Person authorized by a SalesAssociate Linker role and returns a private 15-minute token for Sales Associate AIXE actions.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1800,
      "discoveryRequest": "GET /aixe/associates/login/?",
      "usageContract": "/aixe/associates/login/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/logout",
      "path": "/aixe/associates/logout",
      "title": "Associate Logout",
      "description": "Invalidates the submitted associate authentication token.",
      "purpose": "Invalidates the submitted associate authentication token.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1801,
      "discoveryRequest": "GET /aixe/associates/logout/?",
      "usageContract": "/aixe/associates/logout/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/get-profile",
      "path": "/aixe/associates/get-profile",
      "title": "Get Associate Profile",
      "description": "Returns the authenticated associate\u0027s current profile and contact information.",
      "purpose": "Returns the authenticated associate\u0027s current profile and contact information.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1802,
      "discoveryRequest": "GET /aixe/associates/get-profile/?",
      "usageContract": "/aixe/associates/get-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-profile",
      "path": "/aixe/associates/update-profile",
      "title": "Update Associate Profile",
      "description": "Updates submitted fields on the authenticated associate\u0027s own Person record.",
      "purpose": "Updates submitted fields on the authenticated associate\u0027s own Person record.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1803,
      "discoveryRequest": "GET /aixe/associates/update-profile/?",
      "usageContract": "/aixe/associates/update-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/search-businesses",
      "path": "/aixe/associates/search-businesses",
      "title": "Search Assigned Businesses",
      "description": "Searches only businesses linked to the authenticated associate and returns bounded summaries.",
      "purpose": "Searches only businesses linked to the authenticated associate and returns bounded summaries.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1804,
      "discoveryRequest": "GET /aixe/associates/search-businesses/?",
      "usageContract": "/aixe/associates/search-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/get-day-report",
      "path": "/aixe/associates/get-day-report",
      "title": "Get Associate Day Report",
      "description": "Returns bounded visit, onboarding, completion, and activity results for the authenticated associate and date range.",
      "purpose": "Returns bounded visit, onboarding, completion, and activity results for the authenticated associate and date range.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1805,
      "discoveryRequest": "GET /aixe/associates/get-day-report/?",
      "usageContract": "/aixe/associates/get-day-report/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/search-activities",
      "path": "/aixe/associates/search-activities",
      "title": "Search Associate Activities",
      "description": "Searches the authenticated associate\u0027s activities using optional text, type, and date filters.",
      "purpose": "Searches the authenticated associate\u0027s activities using optional text, type, and date filters.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1806,
      "discoveryRequest": "GET /aixe/associates/search-activities/?",
      "usageContract": "/aixe/associates/search-activities/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/save-activity",
      "path": "/aixe/associates/save-activity",
      "title": "Save Associate Activity",
      "description": "Creates or updates one activity owned by the authenticated associate.",
      "purpose": "Creates or updates one activity owned by the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1807,
      "discoveryRequest": "GET /aixe/associates/save-activity/?",
      "usageContract": "/aixe/associates/save-activity/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/delete-activity",
      "path": "/aixe/associates/delete-activity",
      "title": "Delete Associate Activity",
      "description": "Deletes one activity owned by the authenticated associate.",
      "purpose": "Deletes one activity owned by the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1808,
      "discoveryRequest": "GET /aixe/associates/delete-activity/?",
      "usageContract": "/aixe/associates/delete-activity/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/get-business",
      "path": "/aixe/associates/get-business",
      "title": "Get Assigned Business",
      "description": "Returns one business assigned to the authenticated associate, including a bounded inventory summary.",
      "purpose": "Returns one business assigned to the authenticated associate, including a bounded inventory summary.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1809,
      "discoveryRequest": "GET /aixe/associates/get-business/?",
      "usageContract": "/aixe/associates/get-business/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-business-information",
      "path": "/aixe/associates/update-business-information",
      "title": "Update Business Information",
      "description": "Updates one assigned business\u0027s core identity, address, and contact fields.",
      "purpose": "Updates one assigned business\u0027s core identity, address, and contact fields.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1810,
      "discoveryRequest": "GET /aixe/associates/update-business-information/?",
      "usageContract": "/aixe/associates/update-business-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-owner-information",
      "path": "/aixe/associates/update-owner-information",
      "title": "Update Business Owner Information",
      "description": "Updates owner identity and contact fields for one assigned business.",
      "purpose": "Updates owner identity and contact fields for one assigned business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1811,
      "discoveryRequest": "GET /aixe/associates/update-owner-information/?",
      "usageContract": "/aixe/associates/update-owner-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-notification-information",
      "path": "/aixe/associates/update-notification-information",
      "title": "Update Business Notification Information",
      "description": "Updates email and phone notification destinations for one assigned business.",
      "purpose": "Updates email and phone notification destinations for one assigned business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1812,
      "discoveryRequest": "GET /aixe/associates/update-notification-information/?",
      "usageContract": "/aixe/associates/update-notification-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-business-login",
      "path": "/aixe/associates/update-business-login",
      "title": "Update Business Owner Login",
      "description": "Create or authenticate a Person using LoginEmail and NewPassword, then attach that Person as BusinessOwner to an assigned business. For an existing Person, NewPassword must contain their current password and does not replace it. New accounts use the business owner\u0027s contact details. Returns PersonKey, PersonLoginEmail, BusinessKey and OwnerAttached=true. Incorrect existing credentials return UNAUTHORIZED with Field NewPassword; ask for the current password.",
      "purpose": "Create or authenticate a Person using LoginEmail and NewPassword, then attach that Person as BusinessOwner to an assigned business. For an existing Person, NewPassword must contain their current password and does not replace it. New accounts use the business owner\u0027s contact details. Returns PersonKey, PersonLoginEmail, BusinessKey and OwnerAttached=true. Incorrect existing credentials return UNAUTHORIZED with Field NewPassword; ask for the current password.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1813,
      "discoveryRequest": "GET /aixe/associates/update-business-login/?",
      "usageContract": "/aixe/associates/update-business-login/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/save-product",
      "path": "/aixe/associates/save-product",
      "title": "Save Business Product",
      "description": "Creates or updates one product or service for a business assigned to the authenticated associate.",
      "purpose": "Creates or updates one product or service for a business assigned to the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1814,
      "discoveryRequest": "GET /aixe/associates/save-product/?",
      "usageContract": "/aixe/associates/save-product/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/upload-product-image",
      "path": "/aixe/associates/upload-product-image",
      "title": "Upload Product Image",
      "description": "Uploads one image directly to an existing product or service belonging to a business assigned to the authenticated associate.",
      "purpose": "Uploads one image directly to an existing product or service belonging to a business assigned to the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1815,
      "discoveryRequest": "GET /aixe/associates/upload-product-image/?",
      "usageContract": "/aixe/associates/upload-product-image/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/web-parts/get-web-part",
      "path": "/aixe/web-parts/get-web-part",
      "title": "Get Web Part",
      "description": "Returns one active reusable HTML and JavaScript Web Part after replacing approved business tokens and optional linked-product tokens.",
      "purpose": "Returns one active reusable HTML and JavaScript Web Part after replacing approved business tokens and optional linked-product tokens.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Web Parts",
      "audience": "Customer",
      "sortOrder": 1900,
      "discoveryRequest": "GET /aixe/web-parts/get-web-part/?",
      "usageContract": "/aixe/web-parts/get-web-part/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/list-new",
      "path": "/aixe/sales-leads/list-new",
      "title": "List New Sales Leads",
      "description": "Returns the first 100 New sales leads in database order for the named call queue.",
      "purpose": "Returns the first 100 New sales leads in database order for the named call queue.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1901,
      "discoveryRequest": "GET /aixe/sales-leads/list-new/?",
      "usageContract": "/aixe/sales-leads/list-new/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/search",
      "path": "/aixe/sales-leads/search",
      "title": "Search Sales Leads",
      "description": "Searches active sales leads within the named call queue across useful business and contact fields and returns at most 100 summaries. Terminal dispositions are excluded.",
      "purpose": "Searches active sales leads within the named call queue across useful business and contact fields and returns at most 100 summaries. Terminal dispositions are excluded.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1902,
      "discoveryRequest": "GET /aixe/sales-leads/search/?",
      "usageContract": "/aixe/sales-leads/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/get",
      "path": "/aixe/sales-leads/get",
      "title": "Get Sales Lead",
      "description": "Returns one complete sales lead dossier selected by public SalesLeadKey without claiming it.",
      "purpose": "Returns one complete sales lead dossier selected by public SalesLeadKey without claiming it.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1903,
      "discoveryRequest": "GET /aixe/sales-leads/get/?",
      "usageContract": "/aixe/sales-leads/get/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/update",
      "path": "/aixe/sales-leads/update",
      "title": "Update Sales Lead",
      "description": "Enriches supplied dossier fields on one sales lead; omitted fields remain unchanged.",
      "purpose": "Enriches supplied dossier fields on one sales lead; omitted fields remain unchanged.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1904,
      "discoveryRequest": "GET /aixe/sales-leads/update/?",
      "usageContract": "/aixe/sales-leads/update/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/claim",
      "path": "/aixe/sales-leads/claim",
      "title": "Claim Sales Lead",
      "description": "Atomically changes an eligible New lead to Claimed and preserves the authenticated Sales Associate as claimant.",
      "purpose": "Atomically changes an eligible New lead to Claimed and preserves the authenticated Sales Associate as claimant.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1905,
      "discoveryRequest": "GET /aixe/sales-leads/claim/?",
      "usageContract": "/aixe/sales-leads/claim/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/change-status",
      "path": "/aixe/sales-leads/change-status",
      "title": "Change Sales Lead Status",
      "description": "Changes one sales lead to a supported workflow status. Follow Up requires a date and contact time for today or later.",
      "purpose": "Changes one sales lead to a supported workflow status. Follow Up requires a date and contact time for today or later.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1906,
      "discoveryRequest": "GET /aixe/sales-leads/change-status/?",
      "usageContract": "/aixe/sales-leads/change-status/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/get-notes",
      "path": "/aixe/sales-leads/get-notes",
      "title": "Get Sales Lead Notes",
      "description": "Returns up to 100 newest historical notes with author and creation time for one sales lead.",
      "purpose": "Returns up to 100 newest historical notes with author and creation time for one sales lead.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1907,
      "discoveryRequest": "GET /aixe/sales-leads/get-notes/?",
      "usageContract": "/aixe/sales-leads/get-notes/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/add-note",
      "path": "/aixe/sales-leads/add-note",
      "title": "Add Sales Lead Note",
      "description": "Adds a historical note to one sales lead and preserves the authenticated Sales Associate as its author.",
      "purpose": "Adds a historical note to one sales lead and preserves the authenticated Sales Associate as its author.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1908,
      "discoveryRequest": "GET /aixe/sales-leads/add-note/?",
      "usageContract": "/aixe/sales-leads/add-note/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/customers/create-profile",
      "path": "/aixe/customers/create-profile",
      "title": "Create Profile",
      "description": "Create a customer profile and password within the selected business after the human approves registration. Existing contacts must use forgot-password to establish credentials by email.",
      "purpose": "Create a customer profile and password within the selected business after the human approves registration. Existing contacts must use forgot-password to establish credentials by email.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer",
      "sortOrder": 2000,
      "discoveryRequest": "GET /aixe/customers/create-profile/?",
      "usageContract": "/aixe/customers/create-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/login",
      "path": "/aixe/account/login",
      "title": "Login",
      "description": "Sign in with a Person login email and password. Automatically select the only owned active business, or return instructions to list and select a business when several are available. Return a short-lived PersonAuthenticationToken. Customer logins additionally require BusinessKey and retain their customer scope.",
      "purpose": "Sign in with a Person login email and password. Automatically select the only owned active business, or return instructions to list and select a business when several are available. Return a short-lived PersonAuthenticationToken. Customer logins additionally require BusinessKey and retain their customer scope.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2001,
      "discoveryRequest": "GET /aixe/account/login/?",
      "usageContract": "/aixe/account/login/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/logout",
      "path": "/aixe/account/logout",
      "title": "Logout",
      "description": "Invalidate the submitted PersonAuthenticationToken to end the current AIXE session.",
      "purpose": "Invalidate the submitted PersonAuthenticationToken to end the current AIXE session.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2002,
      "discoveryRequest": "GET /aixe/account/logout/?",
      "usageContract": "/aixe/account/logout/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/get-profile",
      "path": "/aixe/account/get-profile",
      "title": "Get Profile",
      "description": "Return the authenticated person\u0027s contact information, public keys and current role without returning credentials.",
      "purpose": "Return the authenticated person\u0027s contact information, public keys and current role without returning credentials.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2003,
      "discoveryRequest": "GET /aixe/account/get-profile/?",
      "usageContract": "/aixe/account/get-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/update-profile",
      "path": "/aixe/account/update-profile",
      "title": "Update Profile",
      "description": "Update only the authenticated person\u0027s supplied contact and address fields. Omitted fields remain unchanged.",
      "purpose": "Update only the authenticated person\u0027s supplied contact and address fields. Omitted fields remain unchanged.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2004,
      "discoveryRequest": "GET /aixe/account/update-profile/?",
      "usageContract": "/aixe/account/update-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/change-password",
      "path": "/aixe/account/change-password",
      "title": "Change Password",
      "description": "Change the authenticated person\u0027s password without requiring the old password again and invalidate their AIXE token.",
      "purpose": "Change the authenticated person\u0027s password without requiring the old password again and invalidate their AIXE token.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2005,
      "discoveryRequest": "GET /aixe/account/change-password/?",
      "usageContract": "/aixe/account/change-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/forgot-password",
      "path": "/aixe/account/forgot-password",
      "title": "Forgot Password",
      "description": "Email a 30-minute reset link for a Person login. For customers, additionally supply BusinessKey to request their business-scoped password reset. Do not disclose whether an account exists.",
      "purpose": "Email a 30-minute reset link for a Person login. For customers, additionally supply BusinessKey to request their business-scoped password reset. Do not disclose whether an account exists.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2006,
      "discoveryRequest": "GET /aixe/account/forgot-password/?",
      "usageContract": "/aixe/account/forgot-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/reset-password",
      "path": "/aixe/account/reset-password",
      "title": "Reset Password",
      "description": "Set a new password using the unexpired, one-use ResetToken from the emailed password-reset link. This also invalidates the AIXE token.",
      "purpose": "Set a new password using the unexpired, one-use ResetToken from the emailed password-reset link. This also invalidates the AIXE token.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2007,
      "discoveryRequest": "GET /aixe/account/reset-password/?",
      "usageContract": "/aixe/account/reset-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/create-profile",
      "path": "/aixe/businesses/create-profile",
      "title": "Create Profile",
      "description": "Create a business, associate it with a new or authenticated existing Person as BusinessOwner, and immediately return that Person\u0027s token with the new business selected.",
      "purpose": "Create a business, associate it with a new or authenticated existing Person as BusinessOwner, and immediately return that Person\u0027s token with the new business selected.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "BusinessOwner",
      "sortOrder": 2010,
      "discoveryRequest": "GET /aixe/businesses/create-profile/?",
      "usageContract": "/aixe/businesses/create-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/naics/search",
      "path": "/aixe/naics/search",
      "title": "Search NAICS Industries",
      "description": "Find valid six-digit NAICS industries by activity keywords or code so an AI can categorize a business before creating or updating its profile.",
      "purpose": "Find valid six-digit NAICS industries by activity keywords or code so an AI can categorize a business before creating or updating its profile.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Classification",
      "audience": "BusinessOwner",
      "sortOrder": 2020,
      "discoveryRequest": "GET /aixe/naics/search/?",
      "usageContract": "/aixe/naics/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-business-information",
      "path": "/haixe/{businessKey}/create-business-information",
      "title": "Create Business Information",
      "description": "Save business information with a required valid NAICS industry code.",
      "purpose": "Save business information with a required valid NAICS industry code.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Classification",
      "audience": "BusinessOwner",
      "sortOrder": 2021,
      "discoveryRequest": "GET /haixe/{businessKey}/create-business-information/?",
      "usageContract": "/haixe/{businessKey}/create-business-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-information",
      "path": "/haixe/{businessKey}/update-business-information",
      "title": "Update Business Information",
      "description": "Save business information with a required valid NAICS industry code.",
      "purpose": "Save business information with a required valid NAICS industry code.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Classification",
      "audience": "BusinessOwner",
      "sortOrder": 2021,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-information/?",
      "usageContract": "/haixe/{businessKey}/update-business-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-hours",
      "path": "/haixe/{businessKey}/update-business-hours",
      "title": "Update Business Hours",
      "description": "Replaces the selected business\u0027s complete regular weekly opening and closing schedule.",
      "purpose": "Replaces the selected business\u0027s complete regular weekly opening and closing schedule.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Information",
      "audience": "BusinessOwner",
      "sortOrder": 2022,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-hours/?",
      "usageContract": "/haixe/{businessKey}/update-business-hours/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/upload-business-image",
      "path": "/haixe/{businessKey}/upload-business-image",
      "title": "Upload Business Image",
      "description": "Uploads any requested photo to this business, subject only to the maximum file size.",
      "purpose": "Uploads any requested photo to this business, subject only to the maximum file size.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Images",
      "audience": "SalesAssociate",
      "sortOrder": 2025,
      "discoveryRequest": "GET /haixe/{businessKey}/upload-business-image/?",
      "usageContract": "/haixe/{businessKey}/upload-business-image/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/upload-product-image",
      "path": "/haixe/{businessKey}/upload-product-image",
      "title": "Upload Product Image",
      "description": "Uploads one or more approved images and attaches them to a product or service owned by the selected business.",
      "purpose": "Uploads one or more approved images and attaches them to a product or service owned by the selected business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Products And Services",
      "audience": "BusinessOwner",
      "sortOrder": 2026,
      "discoveryRequest": "GET /haixe/{businessKey}/upload-product-image/?",
      "usageContract": "/haixe/{businessKey}/upload-product-image/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/upload-business-logo",
      "path": "/haixe/{businessKey}/upload-business-logo",
      "title": "Upload Business Logo",
      "description": "Uploads and replaces this business\u0027s single managed logo and saves its HTTPS URL.",
      "purpose": "Uploads and replaces this business\u0027s single managed logo and saves its HTTPS URL.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Images",
      "audience": "Business Owner",
      "sortOrder": 2027,
      "discoveryRequest": "GET /haixe/{businessKey}/upload-business-logo/?",
      "usageContract": "/haixe/{businessKey}/upload-business-logo/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-remote-menu",
      "path": "/haixe/{businessKey}/update-business-remote-menu",
      "title": "Update Business Remote Menu",
      "description": "Replaces or clears the HTML used as this business\u0027s remote menu and branded portal header.",
      "purpose": "Replaces or clears the HTML used as this business\u0027s remote menu and branded portal header.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Business Owner",
      "sortOrder": 2028,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-remote-menu/?",
      "usageContract": "/haixe/{businessKey}/update-business-remote-menu/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/create-contact-request",
      "path": "/aixe/businesses/create-contact-request",
      "title": "Create Contact Request",
      "description": "Creates one contact request for an active Internet of Doing business and alerts the business at its configured alert email address.",
      "purpose": "Creates one contact request for an active Internet of Doing business and alerts the business at its configured alert email address.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Businesses",
      "audience": "Customer",
      "sortOrder": 2030,
      "discoveryRequest": "GET /aixe/businesses/create-contact-request/?",
      "usageContract": "/aixe/businesses/create-contact-request/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/naics/validate-naics-code",
      "path": "/aixe/naics/validate-naics-code",
      "title": "Validate NAICS Code",
      "description": "Check a likely NAICS code recalled by an AI against the site\u0027s 2022 six-digit industries before using it in a business search.",
      "purpose": "Check a likely NAICS code recalled by an AI against the site\u0027s 2022 six-digit industries before using it in a business search.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2030,
      "discoveryRequest": "GET /aixe/naics/validate-naics-code/?",
      "usageContract": "/aixe/naics/validate-naics-code/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/search-businesses",
      "path": "/aixe/businesses/search-businesses",
      "title": "Search Businesses",
      "description": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "purpose": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2040,
      "discoveryRequest": "GET /aixe/businesses/search-businesses/?",
      "usageContract": "/aixe/businesses/search-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/search-businesses",
      "path": "/aixe/businesses/search-businesses",
      "title": "Search Businesses",
      "description": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "purpose": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2040,
      "discoveryRequest": "GET /aixe/businesses/search-businesses/?",
      "usageContract": "/aixe/businesses/search-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/review-business",
      "path": "/aixe/businesses/review-business",
      "title": "Review Business",
      "description": "Submit a written review for an active Internet of Doing business and immediately notify the business owner by email and text message.",
      "purpose": "Submit a written review for an active Internet of Doing business and immediately notify the business owner by email and text message.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2050,
      "discoveryRequest": "GET /aixe/businesses/review-business/?",
      "usageContract": "/aixe/businesses/review-business/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/redirector-urls/create-redirector-url",
      "path": "/aixe/redirector-urls/create-redirector-url",
      "title": "Create Redirector URL",
      "description": "Create a custom public redirect link for the signed-in business owner, optionally notifying an email recipient, phone recipient, or both whenever the link is hit. The owner can manage it in the business dashboard.",
      "purpose": "Create a custom public redirect link for the signed-in business owner, optionally notifying an email recipient, phone recipient, or both whenever the link is hit. The owner can manage it in the business dashboard.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Redirector URLs",
      "audience": "BusinessOwner",
      "sortOrder": 2100,
      "discoveryRequest": "GET /aixe/redirector-urls/create-redirector-url/?",
      "usageContract": "/aixe/redirector-urls/create-redirector-url/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/redirector-urls/check-redirector-prefix",
      "path": "/aixe/redirector-urls/check-redirector-prefix",
      "title": "Check Redirector Prefix",
      "description": "Check whether a custom redirector prefix already exists anywhere on Internet of Doing before choosing it for a new redirect link.",
      "purpose": "Check whether a custom redirector prefix already exists anywhere on Internet of Doing before choosing it for a new redirect link.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Redirector URLs",
      "audience": "BusinessOwner",
      "sortOrder": 2110,
      "discoveryRequest": "GET /aixe/redirector-urls/check-redirector-prefix/?",
      "usageContract": "/aixe/redirector-urls/check-redirector-prefix/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/create-pairing-token",
      "path": "/aixe/fulfillment-stations/create-pairing-token",
      "title": "Create Pairing Token",
      "description": "Lets an authenticated business owner provision one fulfillment tablet using a short-lived QR URL, without sharing owner credentials.",
      "purpose": "Lets an authenticated business owner provision one fulfillment tablet using a short-lived QR URL, without sharing owner credentials.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "BusinessOwner",
      "sortOrder": 2200,
      "discoveryRequest": "GET /aixe/fulfillment-stations/create-pairing-token/?",
      "usageContract": "/aixe/fulfillment-stations/create-pairing-token/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/activate",
      "path": "/aixe/fulfillment-stations/activate",
      "title": "Activate",
      "description": "Consumes one unused, unexpired pairing token and names a dedicated business fulfillment station. Returns its unique station credential or sets the secure browser cookie.",
      "purpose": "Consumes one unused, unexpired pairing token and names a dedicated business fulfillment station. Returns its unique station credential or sets the secure browser cookie.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2201,
      "discoveryRequest": "GET /aixe/fulfillment-stations/activate/?",
      "usageContract": "/aixe/fulfillment-stations/activate/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/poll",
      "path": "/aixe/fulfillment-stations/poll",
      "title": "Poll",
      "description": "Authenticates a fulfillment station, records its successful heartbeat, and reports incoming New or Pending orders so every station can sound and flash until the business moves those orders forward.",
      "purpose": "Authenticates a fulfillment station, records its successful heartbeat, and reports incoming New or Pending orders so every station can sound and flash until the business moves those orders forward.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2202,
      "discoveryRequest": "GET /aixe/fulfillment-stations/poll/?",
      "usageContract": "/aixe/fulfillment-stations/poll/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/get-order",
      "path": "/aixe/fulfillment-stations/get-order",
      "title": "Get Order",
      "description": "Returns the selected business-owned order\u0027s captured customer, item, name-on-cup, instructions, schedule, address, totals and invoice payment information needed for fulfillment.",
      "purpose": "Returns the selected business-owned order\u0027s captured customer, item, name-on-cup, instructions, schedule, address, totals and invoice payment information needed for fulfillment.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2203,
      "discoveryRequest": "GET /aixe/fulfillment-stations/get-order/?",
      "usageContract": "/aixe/fulfillment-stations/get-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/accept-order",
      "path": "/aixe/fulfillment-stations/accept-order",
      "title": "Accept Order",
      "description": "Atomically moves a New or Pending order to the existing In Progress status and records the accepting station and UTC timestamp. Other stations stop alerting when their polls see the changed status.",
      "purpose": "Atomically moves a New or Pending order to the existing In Progress status and records the accepting station and UTC timestamp. Other stations stop alerting when their polls see the changed status.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2204,
      "discoveryRequest": "GET /aixe/fulfillment-stations/accept-order/?",
      "usageContract": "/aixe/fulfillment-stations/accept-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/list-stations",
      "path": "/aixe/fulfillment-stations/list-stations",
      "title": "List Stations",
      "description": "Shows the authenticated business owner up to 200 active registered stations, each location, last successful heartbeat and derived online/offline status.",
      "purpose": "Shows the authenticated business owner up to 200 active registered stations, each location, last successful heartbeat and derived online/offline status.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "BusinessOwner",
      "sortOrder": 2205,
      "discoveryRequest": "GET /aixe/fulfillment-stations/list-stations/?",
      "usageContract": "/aixe/fulfillment-stations/list-stations/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/revoke-station",
      "path": "/aixe/fulfillment-stations/revoke-station",
      "title": "Revoke Station",
      "description": "Lets a business owner immediately revoke one registered fulfillment station without changing business login credentials or affecting other stations.",
      "purpose": "Lets a business owner immediately revoke one registered fulfillment station without changing business login credentials or affecting other stations.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "BusinessOwner",
      "sortOrder": 2206,
      "discoveryRequest": "GET /aixe/fulfillment-stations/revoke-station/?",
      "usageContract": "/aixe/fulfillment-stations/revoke-station/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/shop/get-shop-info",
      "path": "/haixe/{businessKey}/shop/get-shop-info",
      "title": "Get Shop Info",
      "description": "Returns the selected business\u0027s public business information.",
      "purpose": "Returns the selected business\u0027s public business information.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3000,
      "discoveryRequest": "GET /haixe/{businessKey}/shop/get-shop-info/?",
      "usageContract": "/haixe/{businessKey}/shop/get-shop-info/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/list-products-and-services",
      "path": "/haixe/{businessKey}/list-products-and-services",
      "title": "List Products And Services",
      "description": "Returns the selected business\u0027s active products and services as a bounded JSON list.",
      "purpose": "Returns the selected business\u0027s active products and services as a bounded JSON list.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3001,
      "discoveryRequest": "GET /haixe/{businessKey}/list-products-and-services/?",
      "usageContract": "/haixe/{businessKey}/list-products-and-services/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-product-categories",
      "path": "/haixe/{businessKey}/get-product-categories",
      "title": "Get Product Categories",
      "description": "Returns every product category used by an active product or service for the selected business.",
      "purpose": "Returns every product category used by an active product or service for the selected business.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3002,
      "discoveryRequest": "GET /haixe/{businessKey}/get-product-categories/?",
      "usageContract": "/haixe/{businessKey}/get-product-categories/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/{businessKey}/products/search",
      "path": "/haixe/quick-order/{businessKey}/products/search",
      "title": "Search Products",
      "description": "Search Products through the public, no-login quick-order flow.",
      "purpose": "Search Products through the public, no-login quick-order flow.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 3002,
      "discoveryRequest": "GET /haixe/quick-order/{businessKey}/products/search/?",
      "usageContract": "/haixe/quick-order/{businessKey}/products/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/{businessKey}/products/search",
      "path": "/haixe/quick-order/{businessKey}/products/search",
      "title": "Search Products",
      "description": "Search Products through the public, no-login quick-order flow.",
      "purpose": "Search Products through the public, no-login quick-order flow.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 3002,
      "discoveryRequest": "GET /haixe/quick-order/{businessKey}/products/search/?",
      "usageContract": "/haixe/quick-order/{businessKey}/products/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/tour",
      "path": "/haixe/{businessKey}/tour",
      "title": "Tour",
      "description": "Welcome the visitor to their persistent, tenant-isolated the selected business HAIXE business and guide them as they build and operate it.",
      "purpose": "Welcome the visitor to their persistent, tenant-isolated the selected business HAIXE business and guide them as they build and operate it.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3003,
      "discoveryRequest": "GET /haixe/{businessKey}/tour/?",
      "usageContract": "/haixe/{businessKey}/tour/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/customer/create-customer",
      "path": "/haixe/{businessKey}/customer/create-customer",
      "title": "Create Customer",
      "description": "Creates a customer linked to the selected business when the email does not already exist for this business.",
      "purpose": "Creates a customer linked to the selected business when the email does not already exist for this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3004,
      "discoveryRequest": "GET /haixe/{businessKey}/customer/create-customer/?",
      "usageContract": "/haixe/{businessKey}/customer/create-customer/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/customer/check-customer-key",
      "path": "/haixe/{businessKey}/customer/check-customer-key",
      "title": "Check Customer Key",
      "description": "Checks whether CustomerKey identifies an active customer linked to the selected business.",
      "purpose": "Checks whether CustomerKey identifies an active customer linked to the selected business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3005,
      "discoveryRequest": "GET /haixe/{businessKey}/customer/check-customer-key/?",
      "usageContract": "/haixe/{businessKey}/customer/check-customer-key/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/customer/recover-customer-key",
      "path": "/haixe/{businessKey}/customer/recover-customer-key",
      "title": "Recover Customer Key",
      "description": "Accepts a customer email address and, when it matches an active customer linked to the selected business, emails that customer their business-scoped CustomerKey.",
      "purpose": "Accepts a customer email address and, when it matches an active customer linked to the selected business, emails that customer their business-scoped CustomerKey.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3006,
      "discoveryRequest": "GET /haixe/{businessKey}/customer/recover-customer-key/?",
      "usageContract": "/haixe/{businessKey}/customer/recover-customer-key/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/orders/create-order-request",
      "path": "/haixe/{businessKey}/orders/create-order-request",
      "title": "Create Order Request",
      "description": "Creates an order request and invoice for the selected business from existing business-scoped customer and product keys.",
      "purpose": "Creates an order request and invoice for the selected business from existing business-scoped customer and product keys.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3007,
      "discoveryRequest": "GET /haixe/{businessKey}/orders/create-order-request/?",
      "usageContract": "/haixe/{businessKey}/orders/create-order-request/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/orders/get-full-order-information",
      "path": "/haixe/{businessKey}/orders/get-full-order-information",
      "title": "Get Full Order Information",
      "description": "Returns one complete order owned by the submitted customer and linked to the selected business.",
      "purpose": "Returns one complete order owned by the submitted customer and linked to the selected business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3008,
      "discoveryRequest": "GET /haixe/{businessKey}/orders/get-full-order-information/?",
      "usageContract": "/haixe/{businessKey}/orders/get-full-order-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/orders/modify-order",
      "path": "/haixe/{businessKey}/orders/modify-order",
      "title": "Modify Order",
      "description": "Replaces the items on one editable customer-owned order linked to the selected business and recalculates inventory, order totals, and invoice totals.",
      "purpose": "Replaces the items on one editable customer-owned order linked to the selected business and recalculates inventory, order totals, and invoice totals.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3009,
      "discoveryRequest": "GET /haixe/{businessKey}/orders/modify-order/?",
      "usageContract": "/haixe/{businessKey}/orders/modify-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/orders/cancel-order",
      "path": "/haixe/{businessKey}/orders/cancel-order",
      "title": "Cancel Order",
      "description": "Cancels one customer-owned order linked to the selected business when the order is not terminal.",
      "purpose": "Cancels one customer-owned order linked to the selected business when the order is not terminal.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3010,
      "discoveryRequest": "GET /haixe/{businessKey}/orders/cancel-order/?",
      "usageContract": "/haixe/{businessKey}/orders/cancel-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/invoices/list-customer-invoices",
      "path": "/haixe/{businessKey}/invoices/list-customer-invoices",
      "title": "List Customer Invoices",
      "description": "Returns bounded invoice and linked order header history for a customer linked to the selected business.",
      "purpose": "Returns bounded invoice and linked order header history for a customer linked to the selected business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3011,
      "discoveryRequest": "GET /haixe/{businessKey}/invoices/list-customer-invoices/?",
      "usageContract": "/haixe/{businessKey}/invoices/list-customer-invoices/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-business-information",
      "path": "/haixe/{businessKey}/get-business-information",
      "title": "Get Business Information",
      "description": "Returns this business\u0027s complete public business information.",
      "purpose": "Returns this business\u0027s complete public business information.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3012,
      "discoveryRequest": "GET /haixe/{businessKey}/get-business-information/?",
      "usageContract": "/haixe/{businessKey}/get-business-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-account-password",
      "path": "/haixe/{businessKey}/update-business-account-password",
      "title": "Update Business Account Password",
      "description": "Updates the authenticated Person credentials after current-password verification; applies across all managed businesses.",
      "purpose": "Updates the authenticated Person credentials after current-password verification; applies across all managed businesses.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3013,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-account-password/?",
      "usageContract": "/haixe/{businessKey}/update-business-account-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-login-credentials",
      "path": "/haixe/{businessKey}/update-business-login-credentials",
      "title": "Update Business Login Credentials",
      "description": "Updates the authenticated Person credentials after current-password verification; applies across all managed businesses.",
      "purpose": "Updates the authenticated Person credentials after current-password verification; applies across all managed businesses.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3014,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-login-credentials/?",
      "usageContract": "/haixe/{businessKey}/update-business-login-credentials/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-works",
      "path": "/haixe/{businessKey}/get-works",
      "title": "Get Works",
      "description": "Returns this business\u0027s identity and current resource counts.",
      "purpose": "Returns this business\u0027s identity and current resource counts.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3015,
      "discoveryRequest": "GET /haixe/{businessKey}/get-works/?",
      "usageContract": "/haixe/{businessKey}/get-works/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-customers",
      "path": "/haixe/{businessKey}/search-customers",
      "title": "Search Customers",
      "description": "Searches customers linked to this business.",
      "purpose": "Searches customers linked to this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3016,
      "discoveryRequest": "GET /haixe/{businessKey}/search-customers/?",
      "usageContract": "/haixe/{businessKey}/search-customers/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-customer",
      "path": "/haixe/{businessKey}/get-customer",
      "title": "Get Customer",
      "description": "Returns one business-owned customer.",
      "purpose": "Returns one business-owned customer.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3017,
      "discoveryRequest": "GET /haixe/{businessKey}/get-customer/?",
      "usageContract": "/haixe/{businessKey}/get-customer/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-customer",
      "path": "/haixe/{businessKey}/update-customer",
      "title": "Update Customer",
      "description": "Updates supplied fields on one business-owned customer.",
      "purpose": "Updates supplied fields on one business-owned customer.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3018,
      "discoveryRequest": "GET /haixe/{businessKey}/update-customer/?",
      "usageContract": "/haixe/{businessKey}/update-customer/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-customer",
      "path": "/haixe/{businessKey}/delete-customer",
      "title": "Delete Customer",
      "description": "Deletes an unreferenced business-owned customer after explicit confirmation.",
      "purpose": "Deletes an unreferenced business-owned customer after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3019,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-customer/?",
      "usageContract": "/haixe/{businessKey}/delete-customer/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-products-and-services",
      "path": "/haixe/{businessKey}/search-products-and-services",
      "title": "Search Products And Services",
      "description": "Searches this business\u0027s products and services with inventory and reorder information.",
      "purpose": "Searches this business\u0027s products and services with inventory and reorder information.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3020,
      "discoveryRequest": "GET /haixe/{businessKey}/search-products-and-services/?",
      "usageContract": "/haixe/{businessKey}/search-products-and-services/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-product-or-service",
      "path": "/haixe/{businessKey}/get-product-or-service",
      "title": "Get Product Or Service",
      "description": "Returns one business-owned product or service.",
      "purpose": "Returns one business-owned product or service.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3021,
      "discoveryRequest": "GET /haixe/{businessKey}/get-product-or-service/?",
      "usageContract": "/haixe/{businessKey}/get-product-or-service/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-product-or-service",
      "path": "/haixe/{businessKey}/create-product-or-service",
      "title": "Create Product Or Service",
      "description": "Creates one product or service for this business.",
      "purpose": "Creates one product or service for this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3022,
      "discoveryRequest": "GET /haixe/{businessKey}/create-product-or-service/?",
      "usageContract": "/haixe/{businessKey}/create-product-or-service/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-product-or-service",
      "path": "/haixe/{businessKey}/update-product-or-service",
      "title": "Update Product Or Service",
      "description": "Updates supplied fields on one business-owned product or service.",
      "purpose": "Updates supplied fields on one business-owned product or service.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3023,
      "discoveryRequest": "GET /haixe/{businessKey}/update-product-or-service/?",
      "usageContract": "/haixe/{businessKey}/update-product-or-service/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-product-or-service",
      "path": "/haixe/{businessKey}/delete-product-or-service",
      "title": "Delete Product Or Service",
      "description": "Deletes an unreferenced product or service after explicit confirmation.",
      "purpose": "Deletes an unreferenced product or service after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3024,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-product-or-service/?",
      "usageContract": "/haixe/{businessKey}/delete-product-or-service/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/download-price-list",
      "path": "/haixe/{businessKey}/download-price-list",
      "title": "Download Price List",
      "description": "Downloads this business\u0027s complete product and service price list as CSV.",
      "purpose": "Downloads this business\u0027s complete product and service price list as CSV.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3025,
      "discoveryRequest": "GET /haixe/{businessKey}/download-price-list/?",
      "usageContract": "/haixe/{businessKey}/download-price-list/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/import-price-list",
      "path": "/haixe/{businessKey}/import-price-list",
      "title": "Import Price List",
      "description": "Validates and creates or updates submitted product and service CSV rows by ProductOrServiceCode.",
      "purpose": "Validates and creates or updates submitted product and service CSV rows by ProductOrServiceCode.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3026,
      "discoveryRequest": "GET /haixe/{businessKey}/import-price-list/?",
      "usageContract": "/haixe/{businessKey}/import-price-list/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/check-product-inventory",
      "path": "/haixe/{businessKey}/check-product-inventory",
      "title": "Check Product Inventory",
      "description": "Checks current inventory and whether a requested quantity can be fulfilled.",
      "purpose": "Checks current inventory and whether a requested quantity can be fulfilled.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3027,
      "discoveryRequest": "GET /haixe/{businessKey}/check-product-inventory/?",
      "usageContract": "/haixe/{businessKey}/check-product-inventory/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/adjust-product-inventory",
      "path": "/haixe/{businessKey}/adjust-product-inventory",
      "title": "Adjust Product Inventory",
      "description": "Atomically adjusts one product\u0027s quantity on hand.",
      "purpose": "Atomically adjusts one product\u0027s quantity on hand.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3028,
      "discoveryRequest": "GET /haixe/{businessKey}/adjust-product-inventory/?",
      "usageContract": "/haixe/{businessKey}/adjust-product-inventory/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-invoice",
      "path": "/haixe/{businessKey}/get-invoice",
      "title": "Get Invoice",
      "description": "Returns one business-owned invoice with customer and detail lines.",
      "purpose": "Returns one business-owned invoice with customer and detail lines.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3029,
      "discoveryRequest": "GET /haixe/{businessKey}/get-invoice/?",
      "usageContract": "/haixe/{businessKey}/get-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-invoice",
      "path": "/haixe/{businessKey}/create-invoice",
      "title": "Create Invoice",
      "description": "Creates an invoice header for a business-owned customer.",
      "purpose": "Creates an invoice header for a business-owned customer.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3030,
      "discoveryRequest": "GET /haixe/{businessKey}/create-invoice/?",
      "usageContract": "/haixe/{businessKey}/create-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-invoice",
      "path": "/haixe/{businessKey}/update-invoice",
      "title": "Update Invoice",
      "description": "Updates invoice dates, status, address, notes, or tax without changing payment history.",
      "purpose": "Updates invoice dates, status, address, notes, or tax without changing payment history.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3031,
      "discoveryRequest": "GET /haixe/{businessKey}/update-invoice/?",
      "usageContract": "/haixe/{businessKey}/update-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-invoice",
      "path": "/haixe/{businessKey}/delete-invoice",
      "title": "Delete Invoice",
      "description": "Deletes an invoice with no payment history, its lines, and appointments after explicit confirmation.",
      "purpose": "Deletes an invoice with no payment history, its lines, and appointments after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3032,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-invoice/?",
      "usageContract": "/haixe/{businessKey}/delete-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/add-payment-to-invoice",
      "path": "/haixe/{businessKey}/add-payment-to-invoice",
      "title": "Add Payment To Invoice",
      "description": "Adds one immutable positive payment or negative payment adjustment to a business-owned invoice and recalculates its paid balance.",
      "purpose": "Adds one immutable positive payment or negative payment adjustment to a business-owned invoice and recalculates its paid balance.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3033,
      "discoveryRequest": "GET /haixe/{businessKey}/add-payment-to-invoice/?",
      "usageContract": "/haixe/{businessKey}/add-payment-to-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-invoice-payment",
      "path": "/haixe/{businessKey}/get-invoice-payment",
      "title": "Get Invoice Payment",
      "description": "Returns one immutable business-owned invoice payment.",
      "purpose": "Returns one immutable business-owned invoice payment.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3034,
      "discoveryRequest": "GET /haixe/{businessKey}/get-invoice-payment/?",
      "usageContract": "/haixe/{businessKey}/get-invoice-payment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-all-invoice-payments",
      "path": "/haixe/{businessKey}/get-all-invoice-payments",
      "title": "Get All Invoice Payments",
      "description": "Returns a bounded newest-first collection of all invoice payments owned by this business.",
      "purpose": "Returns a bounded newest-first collection of all invoice payments owned by this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3035,
      "discoveryRequest": "GET /haixe/{businessKey}/get-all-invoice-payments/?",
      "usageContract": "/haixe/{businessKey}/get-all-invoice-payments/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-invoice-payments",
      "path": "/haixe/{businessKey}/search-invoice-payments",
      "title": "Search Invoice Payments",
      "description": "Returns bounded newest-first payment history for one business-owned invoice.",
      "purpose": "Returns bounded newest-first payment history for one business-owned invoice.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3036,
      "discoveryRequest": "GET /haixe/{businessKey}/search-invoice-payments/?",
      "usageContract": "/haixe/{businessKey}/search-invoice-payments/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-invoice-detail",
      "path": "/haixe/{businessKey}/get-invoice-detail",
      "title": "Get Invoice Detail",
      "description": "Returns one invoice detail line.",
      "purpose": "Returns one invoice detail line.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3037,
      "discoveryRequest": "GET /haixe/{businessKey}/get-invoice-detail/?",
      "usageContract": "/haixe/{businessKey}/get-invoice-detail/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-invoice-detail",
      "path": "/haixe/{businessKey}/create-invoice-detail",
      "title": "Create Invoice Detail",
      "description": "Adds a product or service line and recalculates invoice totals.",
      "purpose": "Adds a product or service line and recalculates invoice totals.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3038,
      "discoveryRequest": "GET /haixe/{businessKey}/create-invoice-detail/?",
      "usageContract": "/haixe/{businessKey}/create-invoice-detail/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-invoice-detail",
      "path": "/haixe/{businessKey}/update-invoice-detail",
      "title": "Update Invoice Detail",
      "description": "Updates an invoice line and recalculates totals and inventory.",
      "purpose": "Updates an invoice line and recalculates totals and inventory.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3039,
      "discoveryRequest": "GET /haixe/{businessKey}/update-invoice-detail/?",
      "usageContract": "/haixe/{businessKey}/update-invoice-detail/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-invoice-detail",
      "path": "/haixe/{businessKey}/delete-invoice-detail",
      "title": "Delete Invoice Detail",
      "description": "Deletes an invoice line and its appointment after explicit confirmation.",
      "purpose": "Deletes an invoice line and its appointment after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3040,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-invoice-detail/?",
      "usageContract": "/haixe/{businessKey}/delete-invoice-detail/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-service-schedule",
      "path": "/haixe/{businessKey}/search-service-schedule",
      "title": "Search Service Schedule",
      "description": "Searches confirmed service appointments for this business.",
      "purpose": "Searches confirmed service appointments for this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3041,
      "discoveryRequest": "GET /haixe/{businessKey}/search-service-schedule/?",
      "usageContract": "/haixe/{businessKey}/search-service-schedule/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-service-appointment",
      "path": "/haixe/{businessKey}/get-service-appointment",
      "title": "Get Service Appointment",
      "description": "Returns one confirmed service appointment.",
      "purpose": "Returns one confirmed service appointment.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3042,
      "discoveryRequest": "GET /haixe/{businessKey}/get-service-appointment/?",
      "usageContract": "/haixe/{businessKey}/get-service-appointment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-service-appointment",
      "path": "/haixe/{businessKey}/create-service-appointment",
      "title": "Create Service Appointment",
      "description": "Creates a confirmed appointment for a schedulable invoice detail.",
      "purpose": "Creates a confirmed appointment for a schedulable invoice detail.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3043,
      "discoveryRequest": "GET /haixe/{businessKey}/create-service-appointment/?",
      "usageContract": "/haixe/{businessKey}/create-service-appointment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-service-appointment",
      "path": "/haixe/{businessKey}/update-service-appointment",
      "title": "Update Service Appointment",
      "description": "Updates a confirmed service appointment.",
      "purpose": "Updates a confirmed service appointment.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3044,
      "discoveryRequest": "GET /haixe/{businessKey}/update-service-appointment/?",
      "usageContract": "/haixe/{businessKey}/update-service-appointment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-service-appointment",
      "path": "/haixe/{businessKey}/delete-service-appointment",
      "title": "Delete Service Appointment",
      "description": "Deletes a confirmed service appointment after explicit confirmation.",
      "purpose": "Deletes a confirmed service appointment after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3045,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-service-appointment/?",
      "usageContract": "/haixe/{businessKey}/delete-service-appointment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-sales",
      "path": "/haixe/{businessKey}/search-sales",
      "title": "Search Sales",
      "description": "Returns bounded invoice records with full-set sales, payment, and balance totals.",
      "purpose": "Returns bounded invoice records with full-set sales, payment, and balance totals.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3046,
      "discoveryRequest": "GET /haixe/{businessKey}/search-sales/?",
      "usageContract": "/haixe/{businessKey}/search-sales/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-accounts-receivable",
      "path": "/haixe/{businessKey}/get-accounts-receivable",
      "title": "Get Accounts Receivable",
      "description": "Returns outstanding and overdue receivables for this business.",
      "purpose": "Returns outstanding and overdue receivables for this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3047,
      "discoveryRequest": "GET /haixe/{businessKey}/get-accounts-receivable/?",
      "usageContract": "/haixe/{businessKey}/get-accounts-receivable/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-business-overview",
      "path": "/haixe/{businessKey}/get-business-overview",
      "title": "Get Business Overview",
      "description": "Returns a compact business briefing with sales, collections, receivables, schedule, reorder items, and top customers.",
      "purpose": "Returns a compact business briefing with sales, collections, receivables, schedule, reorder items, and top customers.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3048,
      "discoveryRequest": "GET /haixe/{businessKey}/get-business-overview/?",
      "usageContract": "/haixe/{businessKey}/get-business-overview/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/send-email",
      "path": "/haixe/{businessKey}/send-email",
      "title": "Send Email",
      "description": "Sends one business-scoped result, report, briefing, or work assignment by email.",
      "purpose": "Sends one business-scoped result, report, briefing, or work assignment by email.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3049,
      "discoveryRequest": "GET /haixe/{businessKey}/send-email/?",
      "usageContract": "/haixe/{businessKey}/send-email/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/aixe.ai",
      "path": "/haixe/{businessKey}/aixe.ai",
      "title": "Aixe.Ai",
      "description": "Read the selected business\u0027s hosted manifest, current public business identity, and active registered capabilities.",
      "purpose": "Read the selected business\u0027s hosted manifest, current public business identity, and active registered capabilities.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 3050,
      "discoveryRequest": "GET /haixe/{businessKey}/aixe.ai/?",
      "usageContract": "/haixe/{businessKey}/aixe.ai/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-business-notification-settings",
      "path": "/haixe/{businessKey}/get-business-notification-settings",
      "title": "Get Business Notification Settings",
      "description": "Returns the selected business\u0027s current private order and business-alert notification destinations so the owner can review them during onboarding or later management.",
      "purpose": "Returns the selected business\u0027s current private order and business-alert notification destinations so the owner can review them during onboarding or later management.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3051,
      "discoveryRequest": "GET /haixe/{businessKey}/get-business-notification-settings/?",
      "usageContract": "/haixe/{businessKey}/get-business-notification-settings/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-notification-settings",
      "path": "/haixe/{businessKey}/update-business-notification-settings",
      "title": "Update Business Notification Settings",
      "description": "Updates the selected business\u0027s private order and business-alert notification destinations after the owner reviews each destination independently.",
      "purpose": "Updates the selected business\u0027s private order and business-alert notification destinations after the owner reviews each destination independently.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3052,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-notification-settings/?",
      "usageContract": "/haixe/{businessKey}/update-business-notification-settings/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/create-request-for-quote",
      "path": "/aixe/rfqs/create-request-for-quote",
      "title": "Create RFQ Draft",
      "description": "Collect a customer\u0027s product or service requirements through an adaptive conversation, then save an editable RFQ draft. Use submit-request-for-quote after customer confirmation to invite nearby businesses.",
      "purpose": "Collect a customer\u0027s product or service requirements through an adaptive conversation, then save an editable RFQ draft. Use submit-request-for-quote after customer confirmation to invite nearby businesses.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8000,
      "discoveryRequest": "GET /aixe/rfqs/create-request-for-quote/?",
      "usageContract": "/aixe/rfqs/create-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/update-request-for-quote",
      "path": "/aixe/rfqs/update-request-for-quote",
      "title": "Update RFQ Draft",
      "description": "Correct or refine the customer\u0027s RFQ while it is a Draft. Published requirements are immutable; create a new draft for different requirements.",
      "purpose": "Correct or refine the customer\u0027s RFQ while it is a Draft. Published requirements are immutable; create a new draft for different requirements.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8001,
      "discoveryRequest": "GET /aixe/rfqs/update-request-for-quote/?",
      "usageContract": "/aixe/rfqs/update-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/submit-request-for-quote",
      "path": "/aixe/rfqs/submit-request-for-quote",
      "title": "Submit RFQ",
      "description": "Publish a confirmed customer RFQ, find active businesses matching any requested NAICS code within the ZIP-based radius, create one assigned quote opportunity per business, and email invitations. Submission permanently locks the request.",
      "purpose": "Publish a confirmed customer RFQ, find active businesses matching any requested NAICS code within the ZIP-based radius, create one assigned quote opportunity per business, and email invitations. Submission permanently locks the request.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8002,
      "discoveryRequest": "GET /aixe/rfqs/submit-request-for-quote/?",
      "usageContract": "/aixe/rfqs/submit-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/cancel-request-for-quote",
      "path": "/aixe/rfqs/cancel-request-for-quote",
      "title": "Cancel RFQ",
      "description": "Stop a Draft or Open RFQ. Businesses previously invited receive closure emails, and outstanding quotes become Not Accepted. Records remain available in history.",
      "purpose": "Stop a Draft or Open RFQ. Businesses previously invited receive closure emails, and outstanding quotes become Not Accepted. Records remain available in history.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8003,
      "discoveryRequest": "GET /aixe/rfqs/cancel-request-for-quote/?",
      "usageContract": "/aixe/rfqs/cancel-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/search-request-for-quotes",
      "path": "/aixe/rfqs/search-request-for-quotes",
      "title": "Search RFQs",
      "description": "Find the signed-in customer\u0027s RFQs, or a business\u0027s assigned RFQ opportunities. Returns a bounded summary page, newest first. Use this before loading a selected RFQ.",
      "purpose": "Find the signed-in customer\u0027s RFQs, or a business\u0027s assigned RFQ opportunities. Returns a bounded summary page, newest first. Use this before loading a selected RFQ.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8004,
      "discoveryRequest": "GET /aixe/rfqs/search-request-for-quotes/?",
      "usageContract": "/aixe/rfqs/search-request-for-quotes/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/get-request-for-quote",
      "path": "/aixe/rfqs/get-request-for-quote",
      "title": "Get RFQ",
      "description": "Read the full requirements and state of one accessible RFQ before preparing a quote, editing a draft, or discussing offers with the customer.",
      "purpose": "Read the full requirements and state of one accessible RFQ before preparing a quote, editing a draft, or discussing offers with the customer.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8005,
      "discoveryRequest": "GET /aixe/rfqs/get-request-for-quote/?",
      "usageContract": "/aixe/rfqs/get-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/search-business-quotes",
      "path": "/aixe/rfqs/search-business-quotes",
      "title": "Search Business Quotes",
      "description": "Read a bounded list of quotes for a selected accessible RFQ. Customers see submitted quotes; a business sees only its own assigned quote. Competitor proposals are private.",
      "purpose": "Read a bounded list of quotes for a selected accessible RFQ. Customers see submitted quotes; a business sees only its own assigned quote. Competitor proposals are private.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8006,
      "discoveryRequest": "GET /aixe/rfqs/search-business-quotes/?",
      "usageContract": "/aixe/rfqs/search-business-quotes/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/get-business-quote",
      "path": "/aixe/rfqs/get-business-quote",
      "title": "Get Business Quote",
      "description": "Read one accessible business quote, its RFQ, proposal details, status, and allowed actions. Customers do not receive unpublished proposal contents.",
      "purpose": "Read one accessible business quote, its RFQ, proposal details, status, and allowed actions. Customers do not receive unpublished proposal contents.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8007,
      "discoveryRequest": "GET /aixe/rfqs/get-business-quote/?",
      "usageContract": "/aixe/rfqs/get-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/save-business-quote",
      "path": "/aixe/rfqs/save-business-quote",
      "title": "Save Business Quote",
      "description": "Save the assigned business\u0027s proposal. An unsubmitted proposal stays private. Changes to an already submitted Pending or Maybe quote become visible immediately; a lower amount triggers an email with both old and new pricing bases.",
      "purpose": "Save the assigned business\u0027s proposal. An unsubmitted proposal stays private. Changes to an already submitted Pending or Maybe quote become visible immediately; a lower amount triggers an email with both old and new pricing bases.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "BusinessOwner",
      "sortOrder": 8008,
      "discoveryRequest": "GET /aixe/rfqs/save-business-quote/?",
      "usageContract": "/aixe/rfqs/save-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/submit-business-quote",
      "path": "/aixe/rfqs/submit-business-quote",
      "title": "Submit Business Quote",
      "description": "Submit the assigned business\u0027s price and scope, or revise its active submitted quote. First submission emails the customer. A subsequent amount reduction emails the customer; quote shortlisting is preserved.",
      "purpose": "Submit the assigned business\u0027s price and scope, or revise its active submitted quote. First submission emails the customer. A subsequent amount reduction emails the customer; quote shortlisting is preserved.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "BusinessOwner",
      "sortOrder": 8009,
      "discoveryRequest": "GET /aixe/rfqs/submit-business-quote/?",
      "usageContract": "/aixe/rfqs/submit-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/decline-business-quote",
      "path": "/aixe/rfqs/decline-business-quote",
      "title": "Decline RFQ Opportunity",
      "description": "Decline an assigned opportunity and remove it from the business\u0027s default active view. The permanent record remains in history and cannot be edited or messaged after decline.",
      "purpose": "Decline an assigned opportunity and remove it from the business\u0027s default active view. The permanent record remains in history and cannot be edited or messaged after decline.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "BusinessOwner",
      "sortOrder": 8010,
      "discoveryRequest": "GET /aixe/rfqs/decline-business-quote/?",
      "usageContract": "/aixe/rfqs/decline-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/update-business-quote-status",
      "path": "/aixe/rfqs/update-business-quote-status",
      "title": "Decide On Business Quote",
      "description": "Record the RFQ customer\u0027s decision on a submitted quote and email the business when that decision changes. Accepting one quote closes the RFQ, marks other outstanding quotes Not Accepted, and emails every other invited business that the RFQ is closed.",
      "purpose": "Record the RFQ customer\u0027s decision on a submitted quote and email the business when that decision changes. Accepting one quote closes the RFQ, marks other outstanding quotes Not Accepted, and emails every other invited business that the RFQ is closed.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8011,
      "discoveryRequest": "GET /aixe/rfqs/update-business-quote-status/?",
      "usageContract": "/aixe/rfqs/update-business-quote-status/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/get-messages",
      "path": "/aixe/rfqs/get-messages",
      "title": "Get Quote Messages",
      "description": "Retrieve one bounded page of the private customer-business conversation for an accessible quote, oldest first. Messages are permanent and contain no attachments or read receipts.",
      "purpose": "Retrieve one bounded page of the private customer-business conversation for an accessible quote, oldest first. Messages are permanent and contain no attachments or read receipts.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8012,
      "discoveryRequest": "GET /aixe/rfqs/get-messages/?",
      "usageContract": "/aixe/rfqs/get-messages/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/send-message",
      "path": "/aixe/rfqs/send-message",
      "title": "Send Quote Message",
      "description": "Send an intentional message in the selected quote\u0027s private conversation and email the other party. Sender identity is determined by authentication. Automatic status and closure emails do not become conversation messages.",
      "purpose": "Send an intentional message in the selected quote\u0027s private conversation and email the other party. Sender identity is determined by authentication. Automatic status and closure emails do not become conversation messages.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8013,
      "discoveryRequest": "GET /aixe/rfqs/send-message/?",
      "usageContract": "/aixe/rfqs/send-message/?",
      "documentationSource": "AIXEEndpointRegistry"
    }
  ],
  "publicPages": [
    {
      "path": "/",
      "url": "https://www.internetofdoing.com/",
      "title": "Home",
      "description": "Overview of InternetOfDoing.com and AI-ready business workflows."
    },
    {
      "path": "/how-it-works",
      "url": "https://www.internetofdoing.com/how-it-works",
      "title": "How It Works",
      "description": "How AI intent becomes a business-ready request."
    },
    {
      "path": "/why-ai-matters",
      "url": "https://www.internetofdoing.com/why-ai-matters",
      "title": "Why AI Matters",
      "description": "Why AI-ready websites matter, how AIXE connects discovery to action, and the customer and business-owner capabilities available through Internet of Doing."
    },
    {
      "path": "/pricing",
      "url": "https://www.internetofdoing.com/pricing",
      "title": "Pricing",
      "description": "Starter workflow and custom implementation options."
    },
    {
      "path": "/contact",
      "url": "https://www.internetofdoing.com/contact",
      "title": "Contact",
      "description": "Start planning an AI-ready workflow."
    },
    {
      "path": "/haixe",
      "url": "https://www.internetofdoing.com/haixe",
      "title": "Create Your HAIXE Business",
      "description": "Create a persistent, tenant-isolated HAIXE business by supplying one business name."
    },
    {
      "path": "/app",
      "url": "https://www.internetofdoing.com/app",
      "title": "App",
      "description": "Application overview."
    },
    {
      "path": "/business/signup",
      "url": "https://www.internetofdoing.com/business/signup",
      "title": "Sign Up",
      "description": "Create a business account."
    },
    {
      "path": "/business/login",
      "url": "https://www.internetofdoing.com/business/login",
      "title": "Log In",
      "description": "Access a business dashboard."
    },
    {
      "path": "/get-your-business-found-by-ai",
      "url": "https://www.internetofdoing.com/get-your-business-found-by-ai",
      "title": "Get Your Business Found By AI",
      "description": "Make your products, services, and business information discoverable through the IOD directory, with human-readable listings and AIXE access for AI assistants."
    },
    {
      "path": "/free-business-listing",
      "url": "https://www.internetofdoing.com/free-business-listing",
      "title": "Free Business Listing With Products And Services",
      "description": "List your business with all your products and services for free. Use IOD business management through the web or AIXE, with optional paid ordering."
    },
    {
      "path": "/accept-orders-through-ai",
      "url": "https://www.internetofdoing.com/accept-orders-through-ai",
      "title": "Accept Customer Orders Through AI Assistants",
      "description": "Receive customer orders from humans and AI assistants through IOD. Review and accept orders by email, in the web portal, or in the web alert app."
    },
    {
      "path": "/manage-your-business-with-chatgpt",
      "url": "https://www.internetofdoing.com/manage-your-business-with-chatgpt",
      "title": "Manage Your Business With ChatGPT",
      "description": "Use your connected AI to manage IOD products, services, customers, orders, invoices, and scheduling through the same business system as the web portal."
    },
    {
      "path": "/menu-to-online-catalog",
      "url": "https://www.internetofdoing.com/menu-to-online-catalog",
      "title": "Turn Your Menu Or Price List Into an Online Catalog",
      "description": "Use AI-assisted onboarding to turn photos of product pricing, menus, or service lists into an IOD catalog, or import a full inventory export."
    },
    {
      "path": "/ai-service-appointment-requests",
      "url": "https://www.internetofdoing.com/ai-service-appointment-requests",
      "title": "Receive Service And Appointment Requests Through AI",
      "description": "Let customers and AI assistants request services and preferred appointment times through IOD. Your business reviews the request and confirms the time."
    },
    {
      "path": "/publish-business-specials",
      "url": "https://www.internetofdoing.com/publish-business-specials",
      "title": "Publish Your Business Specials And Offers",
      "description": "Publish current specials on the IOD website and through AI-connected endpoints, with expiration dates controlled by your business."
    },
    {
      "path": "/ai-ordering-for-restaurants",
      "url": "https://www.internetofdoing.com/ai-ordering-for-restaurants",
      "title": "AI Ordering For Restaurants",
      "description": "Publish a restaurant menu for people and AI assistants, receive IOD orders, and review fulfillment details before accepting them."
    },
    {
      "path": "/ai-ordering-for-coffee-shops",
      "url": "https://www.internetofdoing.com/ai-ordering-for-coffee-shops",
      "title": "AI Ordering For Coffee Shops",
      "description": "Make your coffee menu accessible to AI assistants and people, with clear sizes, options, prices, and an IOD order flow your team can accept."
    },
    {
      "path": "/ai-tools-for-lawn-care",
      "url": "https://www.internetofdoing.com/ai-tools-for-lawn-care",
      "title": "AI Business Tools For Lawn Care Companies",
      "description": "Publish lawn care services, collect property and job details, and manage customer requests and scheduling through the web or your connected AI."
    },
    {
      "path": "/ai-tools-for-cleaning-companies",
      "url": "https://www.internetofdoing.com/ai-tools-for-cleaning-companies",
      "title": "AI Business Tools For Cleaning Companies",
      "description": "List cleaning services, collect the details needed to scope a job, and confirm appointments while managing customers and work through IOD."
    },
    {
      "path": "/ai-ordering-for-bakeries",
      "url": "https://www.internetofdoing.com/ai-ordering-for-bakeries",
      "title": "AI Ordering And Business Tools For Bakeries",
      "description": "Publish bakery products and prices, receive customer orders, and collect the details needed for custom cakes, quantities, and requested dates."
    },
    {
      "path": "/ai-tools-for-real-estate-photographers",
      "url": "https://www.internetofdoing.com/ai-tools-for-real-estate-photographers",
      "title": "AI Booking And Business Tools For Real Estate Photographers",
      "description": "Publish photography packages, receive property-specific appointment requests, and manage customers, orders, and scheduling with IOD."
    },
    {
      "path": "/solutions",
      "url": "https://www.internetofdoing.com/solutions",
      "title": "Business Solutions",
      "description": "Explore capabilities and industry workflows."
    },
    {
      "path": "/website-build",
      "url": "https://www.internetofdoing.com/website-build",
      "title": "AI-Ready Websites For Small Businesses",
      "description": "Website building with IOD business management and 1,000 action credits."
    }
  ],
  "capabilities": [
    {
      "endpoint": "/haixe/quick-order/cancel-order",
      "path": "/haixe/quick-order/cancel-order",
      "title": "Cancel Order",
      "description": "Cancel Order through the public, no-login quick-order flow.",
      "purpose": "Cancel Order through the public, no-login quick-order flow.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 0,
      "discoveryRequest": "GET /haixe/quick-order/cancel-order/?",
      "usageContract": "/haixe/quick-order/cancel-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/customer-check",
      "path": "/haixe/quick-order/customer-check",
      "title": "Customer Check",
      "description": "Customer Check through the public, no-login quick-order flow.",
      "purpose": "Customer Check through the public, no-login quick-order flow.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 450,
      "discoveryRequest": "GET /haixe/quick-order/customer-check/?",
      "usageContract": "/haixe/quick-order/customer-check/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/place-order",
      "path": "/haixe/quick-order/place-order",
      "title": "Place Order",
      "description": "Resolves or creates a customer and places selected products or scheduled services in one quick order with customer and business notifications.",
      "purpose": "Resolves or creates a customer and places selected products or scheduled services in one quick order with customer and business notifications.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 460,
      "discoveryRequest": "GET /haixe/quick-order/place-order/?",
      "usageContract": "/haixe/quick-order/place-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/list-businesses",
      "path": "/aixe/account/list-businesses",
      "title": "List Businesses",
      "description": "List the authenticated Person\u0027s active owned businesses so the human can choose which business to manage or switch to. Returns up to 100 business key/name summaries per page.",
      "purpose": "List the authenticated Person\u0027s active owned businesses so the human can choose which business to manage or switch to. Returns up to 100 business key/name summaries per page.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "BusinessOwner",
      "sortOrder": 1202,
      "discoveryRequest": "GET /aixe/account/list-businesses/?",
      "usageContract": "/aixe/account/list-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/select-business",
      "path": "/aixe/account/select-business",
      "title": "Select Business",
      "description": "Open a business selected by the human from list-businesses after verifying that the authenticated Person owns it. Keep the same token and its existing expiration, and use the selected business for subsequent business operations.",
      "purpose": "Open a business selected by the human from list-businesses after verifying that the authenticated Person owns it. Keep the same token and its existing expiration, and use the selected business for subsequent business operations.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "BusinessOwner",
      "sortOrder": 1203,
      "discoveryRequest": "GET /aixe/account/select-business/?",
      "usageContract": "/aixe/account/select-business/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/login",
      "path": "/aixe/associates/login",
      "title": "Sales Associate Login",
      "description": "Authenticates a Person authorized by a SalesAssociate Linker role and returns a private 15-minute token for Sales Associate AIXE actions.",
      "purpose": "Authenticates a Person authorized by a SalesAssociate Linker role and returns a private 15-minute token for Sales Associate AIXE actions.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1800,
      "discoveryRequest": "GET /aixe/associates/login/?",
      "usageContract": "/aixe/associates/login/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/logout",
      "path": "/aixe/associates/logout",
      "title": "Associate Logout",
      "description": "Invalidates the submitted associate authentication token.",
      "purpose": "Invalidates the submitted associate authentication token.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1801,
      "discoveryRequest": "GET /aixe/associates/logout/?",
      "usageContract": "/aixe/associates/logout/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/get-profile",
      "path": "/aixe/associates/get-profile",
      "title": "Get Associate Profile",
      "description": "Returns the authenticated associate\u0027s current profile and contact information.",
      "purpose": "Returns the authenticated associate\u0027s current profile and contact information.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1802,
      "discoveryRequest": "GET /aixe/associates/get-profile/?",
      "usageContract": "/aixe/associates/get-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-profile",
      "path": "/aixe/associates/update-profile",
      "title": "Update Associate Profile",
      "description": "Updates submitted fields on the authenticated associate\u0027s own Person record.",
      "purpose": "Updates submitted fields on the authenticated associate\u0027s own Person record.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1803,
      "discoveryRequest": "GET /aixe/associates/update-profile/?",
      "usageContract": "/aixe/associates/update-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/search-businesses",
      "path": "/aixe/associates/search-businesses",
      "title": "Search Assigned Businesses",
      "description": "Searches only businesses linked to the authenticated associate and returns bounded summaries.",
      "purpose": "Searches only businesses linked to the authenticated associate and returns bounded summaries.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1804,
      "discoveryRequest": "GET /aixe/associates/search-businesses/?",
      "usageContract": "/aixe/associates/search-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/get-day-report",
      "path": "/aixe/associates/get-day-report",
      "title": "Get Associate Day Report",
      "description": "Returns bounded visit, onboarding, completion, and activity results for the authenticated associate and date range.",
      "purpose": "Returns bounded visit, onboarding, completion, and activity results for the authenticated associate and date range.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1805,
      "discoveryRequest": "GET /aixe/associates/get-day-report/?",
      "usageContract": "/aixe/associates/get-day-report/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/search-activities",
      "path": "/aixe/associates/search-activities",
      "title": "Search Associate Activities",
      "description": "Searches the authenticated associate\u0027s activities using optional text, type, and date filters.",
      "purpose": "Searches the authenticated associate\u0027s activities using optional text, type, and date filters.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1806,
      "discoveryRequest": "GET /aixe/associates/search-activities/?",
      "usageContract": "/aixe/associates/search-activities/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/save-activity",
      "path": "/aixe/associates/save-activity",
      "title": "Save Associate Activity",
      "description": "Creates or updates one activity owned by the authenticated associate.",
      "purpose": "Creates or updates one activity owned by the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1807,
      "discoveryRequest": "GET /aixe/associates/save-activity/?",
      "usageContract": "/aixe/associates/save-activity/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/delete-activity",
      "path": "/aixe/associates/delete-activity",
      "title": "Delete Associate Activity",
      "description": "Deletes one activity owned by the authenticated associate.",
      "purpose": "Deletes one activity owned by the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1808,
      "discoveryRequest": "GET /aixe/associates/delete-activity/?",
      "usageContract": "/aixe/associates/delete-activity/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/get-business",
      "path": "/aixe/associates/get-business",
      "title": "Get Assigned Business",
      "description": "Returns one business assigned to the authenticated associate, including a bounded inventory summary.",
      "purpose": "Returns one business assigned to the authenticated associate, including a bounded inventory summary.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1809,
      "discoveryRequest": "GET /aixe/associates/get-business/?",
      "usageContract": "/aixe/associates/get-business/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-business-information",
      "path": "/aixe/associates/update-business-information",
      "title": "Update Business Information",
      "description": "Updates one assigned business\u0027s core identity, address, and contact fields.",
      "purpose": "Updates one assigned business\u0027s core identity, address, and contact fields.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1810,
      "discoveryRequest": "GET /aixe/associates/update-business-information/?",
      "usageContract": "/aixe/associates/update-business-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-owner-information",
      "path": "/aixe/associates/update-owner-information",
      "title": "Update Business Owner Information",
      "description": "Updates owner identity and contact fields for one assigned business.",
      "purpose": "Updates owner identity and contact fields for one assigned business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1811,
      "discoveryRequest": "GET /aixe/associates/update-owner-information/?",
      "usageContract": "/aixe/associates/update-owner-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-notification-information",
      "path": "/aixe/associates/update-notification-information",
      "title": "Update Business Notification Information",
      "description": "Updates email and phone notification destinations for one assigned business.",
      "purpose": "Updates email and phone notification destinations for one assigned business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1812,
      "discoveryRequest": "GET /aixe/associates/update-notification-information/?",
      "usageContract": "/aixe/associates/update-notification-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/update-business-login",
      "path": "/aixe/associates/update-business-login",
      "title": "Update Business Owner Login",
      "description": "Create or authenticate a Person using LoginEmail and NewPassword, then attach that Person as BusinessOwner to an assigned business. For an existing Person, NewPassword must contain their current password and does not replace it. New accounts use the business owner\u0027s contact details. Returns PersonKey, PersonLoginEmail, BusinessKey and OwnerAttached=true. Incorrect existing credentials return UNAUTHORIZED with Field NewPassword; ask for the current password.",
      "purpose": "Create or authenticate a Person using LoginEmail and NewPassword, then attach that Person as BusinessOwner to an assigned business. For an existing Person, NewPassword must contain their current password and does not replace it. New accounts use the business owner\u0027s contact details. Returns PersonKey, PersonLoginEmail, BusinessKey and OwnerAttached=true. Incorrect existing credentials return UNAUTHORIZED with Field NewPassword; ask for the current password.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1813,
      "discoveryRequest": "GET /aixe/associates/update-business-login/?",
      "usageContract": "/aixe/associates/update-business-login/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/save-product",
      "path": "/aixe/associates/save-product",
      "title": "Save Business Product",
      "description": "Creates or updates one product or service for a business assigned to the authenticated associate.",
      "purpose": "Creates or updates one product or service for a business assigned to the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1814,
      "discoveryRequest": "GET /aixe/associates/save-product/?",
      "usageContract": "/aixe/associates/save-product/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/associates/upload-product-image",
      "path": "/aixe/associates/upload-product-image",
      "title": "Upload Product Image",
      "description": "Uploads one image directly to an existing product or service belonging to a business assigned to the authenticated associate.",
      "purpose": "Uploads one image directly to an existing product or service belonging to a business assigned to the authenticated associate.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Associate Sales",
      "audience": "SalesAssociate",
      "sortOrder": 1815,
      "discoveryRequest": "GET /aixe/associates/upload-product-image/?",
      "usageContract": "/aixe/associates/upload-product-image/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/web-parts/get-web-part",
      "path": "/aixe/web-parts/get-web-part",
      "title": "Get Web Part",
      "description": "Returns one active reusable HTML and JavaScript Web Part after replacing approved business tokens and optional linked-product tokens.",
      "purpose": "Returns one active reusable HTML and JavaScript Web Part after replacing approved business tokens and optional linked-product tokens.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Web Parts",
      "audience": "Customer",
      "sortOrder": 1900,
      "discoveryRequest": "GET /aixe/web-parts/get-web-part/?",
      "usageContract": "/aixe/web-parts/get-web-part/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/list-new",
      "path": "/aixe/sales-leads/list-new",
      "title": "List New Sales Leads",
      "description": "Returns the first 100 New sales leads in database order for the named call queue.",
      "purpose": "Returns the first 100 New sales leads in database order for the named call queue.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1901,
      "discoveryRequest": "GET /aixe/sales-leads/list-new/?",
      "usageContract": "/aixe/sales-leads/list-new/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/search",
      "path": "/aixe/sales-leads/search",
      "title": "Search Sales Leads",
      "description": "Searches active sales leads within the named call queue across useful business and contact fields and returns at most 100 summaries. Terminal dispositions are excluded.",
      "purpose": "Searches active sales leads within the named call queue across useful business and contact fields and returns at most 100 summaries. Terminal dispositions are excluded.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1902,
      "discoveryRequest": "GET /aixe/sales-leads/search/?",
      "usageContract": "/aixe/sales-leads/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/get",
      "path": "/aixe/sales-leads/get",
      "title": "Get Sales Lead",
      "description": "Returns one complete sales lead dossier selected by public SalesLeadKey without claiming it.",
      "purpose": "Returns one complete sales lead dossier selected by public SalesLeadKey without claiming it.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1903,
      "discoveryRequest": "GET /aixe/sales-leads/get/?",
      "usageContract": "/aixe/sales-leads/get/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/update",
      "path": "/aixe/sales-leads/update",
      "title": "Update Sales Lead",
      "description": "Enriches supplied dossier fields on one sales lead; omitted fields remain unchanged.",
      "purpose": "Enriches supplied dossier fields on one sales lead; omitted fields remain unchanged.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1904,
      "discoveryRequest": "GET /aixe/sales-leads/update/?",
      "usageContract": "/aixe/sales-leads/update/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/claim",
      "path": "/aixe/sales-leads/claim",
      "title": "Claim Sales Lead",
      "description": "Atomically changes an eligible New lead to Claimed and preserves the authenticated Sales Associate as claimant.",
      "purpose": "Atomically changes an eligible New lead to Claimed and preserves the authenticated Sales Associate as claimant.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1905,
      "discoveryRequest": "GET /aixe/sales-leads/claim/?",
      "usageContract": "/aixe/sales-leads/claim/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/change-status",
      "path": "/aixe/sales-leads/change-status",
      "title": "Change Sales Lead Status",
      "description": "Changes one sales lead to a supported workflow status. Follow Up requires a date and contact time for today or later.",
      "purpose": "Changes one sales lead to a supported workflow status. Follow Up requires a date and contact time for today or later.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1906,
      "discoveryRequest": "GET /aixe/sales-leads/change-status/?",
      "usageContract": "/aixe/sales-leads/change-status/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/get-notes",
      "path": "/aixe/sales-leads/get-notes",
      "title": "Get Sales Lead Notes",
      "description": "Returns up to 100 newest historical notes with author and creation time for one sales lead.",
      "purpose": "Returns up to 100 newest historical notes with author and creation time for one sales lead.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1907,
      "discoveryRequest": "GET /aixe/sales-leads/get-notes/?",
      "usageContract": "/aixe/sales-leads/get-notes/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/sales-leads/add-note",
      "path": "/aixe/sales-leads/add-note",
      "title": "Add Sales Lead Note",
      "description": "Adds a historical note to one sales lead and preserves the authenticated Sales Associate as its author.",
      "purpose": "Adds a historical note to one sales lead and preserves the authenticated Sales Associate as its author.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Sales Leads",
      "audience": "SalesAssociate",
      "sortOrder": 1908,
      "discoveryRequest": "GET /aixe/sales-leads/add-note/?",
      "usageContract": "/aixe/sales-leads/add-note/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/customers/create-profile",
      "path": "/aixe/customers/create-profile",
      "title": "Create Profile",
      "description": "Create a customer profile and password within the selected business after the human approves registration. Existing contacts must use forgot-password to establish credentials by email.",
      "purpose": "Create a customer profile and password within the selected business after the human approves registration. Existing contacts must use forgot-password to establish credentials by email.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer",
      "sortOrder": 2000,
      "discoveryRequest": "GET /aixe/customers/create-profile/?",
      "usageContract": "/aixe/customers/create-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/login",
      "path": "/aixe/account/login",
      "title": "Login",
      "description": "Sign in with a Person login email and password. Automatically select the only owned active business, or return instructions to list and select a business when several are available. Return a short-lived PersonAuthenticationToken. Customer logins additionally require BusinessKey and retain their customer scope.",
      "purpose": "Sign in with a Person login email and password. Automatically select the only owned active business, or return instructions to list and select a business when several are available. Return a short-lived PersonAuthenticationToken. Customer logins additionally require BusinessKey and retain their customer scope.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2001,
      "discoveryRequest": "GET /aixe/account/login/?",
      "usageContract": "/aixe/account/login/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/logout",
      "path": "/aixe/account/logout",
      "title": "Logout",
      "description": "Invalidate the submitted PersonAuthenticationToken to end the current AIXE session.",
      "purpose": "Invalidate the submitted PersonAuthenticationToken to end the current AIXE session.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2002,
      "discoveryRequest": "GET /aixe/account/logout/?",
      "usageContract": "/aixe/account/logout/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/get-profile",
      "path": "/aixe/account/get-profile",
      "title": "Get Profile",
      "description": "Return the authenticated person\u0027s contact information, public keys and current role without returning credentials.",
      "purpose": "Return the authenticated person\u0027s contact information, public keys and current role without returning credentials.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2003,
      "discoveryRequest": "GET /aixe/account/get-profile/?",
      "usageContract": "/aixe/account/get-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/update-profile",
      "path": "/aixe/account/update-profile",
      "title": "Update Profile",
      "description": "Update only the authenticated person\u0027s supplied contact and address fields. Omitted fields remain unchanged.",
      "purpose": "Update only the authenticated person\u0027s supplied contact and address fields. Omitted fields remain unchanged.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2004,
      "discoveryRequest": "GET /aixe/account/update-profile/?",
      "usageContract": "/aixe/account/update-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/change-password",
      "path": "/aixe/account/change-password",
      "title": "Change Password",
      "description": "Change the authenticated person\u0027s password without requiring the old password again and invalidate their AIXE token.",
      "purpose": "Change the authenticated person\u0027s password without requiring the old password again and invalidate their AIXE token.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2005,
      "discoveryRequest": "GET /aixe/account/change-password/?",
      "usageContract": "/aixe/account/change-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/forgot-password",
      "path": "/aixe/account/forgot-password",
      "title": "Forgot Password",
      "description": "Email a 30-minute reset link for a Person login. For customers, additionally supply BusinessKey to request their business-scoped password reset. Do not disclose whether an account exists.",
      "purpose": "Email a 30-minute reset link for a Person login. For customers, additionally supply BusinessKey to request their business-scoped password reset. Do not disclose whether an account exists.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2006,
      "discoveryRequest": "GET /aixe/account/forgot-password/?",
      "usageContract": "/aixe/account/forgot-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/account/reset-password",
      "path": "/aixe/account/reset-password",
      "title": "Reset Password",
      "description": "Set a new password using the unexpired, one-use ResetToken from the emailed password-reset link. This also invalidates the AIXE token.",
      "purpose": "Set a new password using the unexpired, one-use ResetToken from the emailed password-reset link. This also invalidates the AIXE token.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 2007,
      "discoveryRequest": "GET /aixe/account/reset-password/?",
      "usageContract": "/aixe/account/reset-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/create-profile",
      "path": "/aixe/businesses/create-profile",
      "title": "Create Profile",
      "description": "Create a business, associate it with a new or authenticated existing Person as BusinessOwner, and immediately return that Person\u0027s token with the new business selected.",
      "purpose": "Create a business, associate it with a new or authenticated existing Person as BusinessOwner, and immediately return that Person\u0027s token with the new business selected.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Authentication",
      "audience": "BusinessOwner",
      "sortOrder": 2010,
      "discoveryRequest": "GET /aixe/businesses/create-profile/?",
      "usageContract": "/aixe/businesses/create-profile/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/naics/search",
      "path": "/aixe/naics/search",
      "title": "Search NAICS Industries",
      "description": "Find valid six-digit NAICS industries by activity keywords or code so an AI can categorize a business before creating or updating its profile.",
      "purpose": "Find valid six-digit NAICS industries by activity keywords or code so an AI can categorize a business before creating or updating its profile.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Classification",
      "audience": "BusinessOwner",
      "sortOrder": 2020,
      "discoveryRequest": "GET /aixe/naics/search/?",
      "usageContract": "/aixe/naics/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-business-information",
      "path": "/haixe/{businessKey}/create-business-information",
      "title": "Create Business Information",
      "description": "Save business information with a required valid NAICS industry code.",
      "purpose": "Save business information with a required valid NAICS industry code.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Classification",
      "audience": "BusinessOwner",
      "sortOrder": 2021,
      "discoveryRequest": "GET /haixe/{businessKey}/create-business-information/?",
      "usageContract": "/haixe/{businessKey}/create-business-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-information",
      "path": "/haixe/{businessKey}/update-business-information",
      "title": "Update Business Information",
      "description": "Save business information with a required valid NAICS industry code.",
      "purpose": "Save business information with a required valid NAICS industry code.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Classification",
      "audience": "BusinessOwner",
      "sortOrder": 2021,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-information/?",
      "usageContract": "/haixe/{businessKey}/update-business-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-hours",
      "path": "/haixe/{businessKey}/update-business-hours",
      "title": "Update Business Hours",
      "description": "Replaces the selected business\u0027s complete regular weekly opening and closing schedule.",
      "purpose": "Replaces the selected business\u0027s complete regular weekly opening and closing schedule.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Information",
      "audience": "BusinessOwner",
      "sortOrder": 2022,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-hours/?",
      "usageContract": "/haixe/{businessKey}/update-business-hours/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/upload-business-image",
      "path": "/haixe/{businessKey}/upload-business-image",
      "title": "Upload Business Image",
      "description": "Uploads any requested photo to this business, subject only to the maximum file size.",
      "purpose": "Uploads any requested photo to this business, subject only to the maximum file size.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Images",
      "audience": "SalesAssociate",
      "sortOrder": 2025,
      "discoveryRequest": "GET /haixe/{businessKey}/upload-business-image/?",
      "usageContract": "/haixe/{businessKey}/upload-business-image/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/upload-product-image",
      "path": "/haixe/{businessKey}/upload-product-image",
      "title": "Upload Product Image",
      "description": "Uploads one or more approved images and attaches them to a product or service owned by the selected business.",
      "purpose": "Uploads one or more approved images and attaches them to a product or service owned by the selected business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Products And Services",
      "audience": "BusinessOwner",
      "sortOrder": 2026,
      "discoveryRequest": "GET /haixe/{businessKey}/upload-product-image/?",
      "usageContract": "/haixe/{businessKey}/upload-product-image/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/upload-business-logo",
      "path": "/haixe/{businessKey}/upload-business-logo",
      "title": "Upload Business Logo",
      "description": "Uploads and replaces this business\u0027s single managed logo and saves its HTTPS URL.",
      "purpose": "Uploads and replaces this business\u0027s single managed logo and saves its HTTPS URL.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Images",
      "audience": "Business Owner",
      "sortOrder": 2027,
      "discoveryRequest": "GET /haixe/{businessKey}/upload-business-logo/?",
      "usageContract": "/haixe/{businessKey}/upload-business-logo/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-remote-menu",
      "path": "/haixe/{businessKey}/update-business-remote-menu",
      "title": "Update Business Remote Menu",
      "description": "Replaces or clears the HTML used as this business\u0027s remote menu and branded portal header.",
      "purpose": "Replaces or clears the HTML used as this business\u0027s remote menu and branded portal header.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Business Owner",
      "sortOrder": 2028,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-remote-menu/?",
      "usageContract": "/haixe/{businessKey}/update-business-remote-menu/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/create-contact-request",
      "path": "/aixe/businesses/create-contact-request",
      "title": "Create Contact Request",
      "description": "Creates one contact request for an active Internet of Doing business and alerts the business at its configured alert email address.",
      "purpose": "Creates one contact request for an active Internet of Doing business and alerts the business at its configured alert email address.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Businesses",
      "audience": "Customer",
      "sortOrder": 2030,
      "discoveryRequest": "GET /aixe/businesses/create-contact-request/?",
      "usageContract": "/aixe/businesses/create-contact-request/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/naics/validate-naics-code",
      "path": "/aixe/naics/validate-naics-code",
      "title": "Validate NAICS Code",
      "description": "Check a likely NAICS code recalled by an AI against the site\u0027s 2022 six-digit industries before using it in a business search.",
      "purpose": "Check a likely NAICS code recalled by an AI against the site\u0027s 2022 six-digit industries before using it in a business search.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2030,
      "discoveryRequest": "GET /aixe/naics/validate-naics-code/?",
      "usageContract": "/aixe/naics/validate-naics-code/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/search-businesses",
      "path": "/aixe/businesses/search-businesses",
      "title": "Search Businesses",
      "description": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "purpose": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2040,
      "discoveryRequest": "GET /aixe/businesses/search-businesses/?",
      "usageContract": "/aixe/businesses/search-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/search-businesses",
      "path": "/aixe/businesses/search-businesses",
      "title": "Search Businesses",
      "description": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "purpose": "Find active IOD businesses near a ZIP code using up to 10 comma-separated keywords first, then a validated NAICS industry code only if the keyword search returns no matches.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2040,
      "discoveryRequest": "GET /aixe/businesses/search-businesses/?",
      "usageContract": "/aixe/businesses/search-businesses/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/businesses/review-business",
      "path": "/aixe/businesses/review-business",
      "title": "Review Business",
      "description": "Submit a written review for an active Internet of Doing business and immediately notify the business owner by email and text message.",
      "purpose": "Submit a written review for an active Internet of Doing business and immediately notify the business owner by email and text message.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Business Directory",
      "audience": "Customer",
      "sortOrder": 2050,
      "discoveryRequest": "GET /aixe/businesses/review-business/?",
      "usageContract": "/aixe/businesses/review-business/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/redirector-urls/create-redirector-url",
      "path": "/aixe/redirector-urls/create-redirector-url",
      "title": "Create Redirector URL",
      "description": "Create a custom public redirect link for the signed-in business owner, optionally notifying an email recipient, phone recipient, or both whenever the link is hit. The owner can manage it in the business dashboard.",
      "purpose": "Create a custom public redirect link for the signed-in business owner, optionally notifying an email recipient, phone recipient, or both whenever the link is hit. The owner can manage it in the business dashboard.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Redirector URLs",
      "audience": "BusinessOwner",
      "sortOrder": 2100,
      "discoveryRequest": "GET /aixe/redirector-urls/create-redirector-url/?",
      "usageContract": "/aixe/redirector-urls/create-redirector-url/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/redirector-urls/check-redirector-prefix",
      "path": "/aixe/redirector-urls/check-redirector-prefix",
      "title": "Check Redirector Prefix",
      "description": "Check whether a custom redirector prefix already exists anywhere on Internet of Doing before choosing it for a new redirect link.",
      "purpose": "Check whether a custom redirector prefix already exists anywhere on Internet of Doing before choosing it for a new redirect link.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Redirector URLs",
      "audience": "BusinessOwner",
      "sortOrder": 2110,
      "discoveryRequest": "GET /aixe/redirector-urls/check-redirector-prefix/?",
      "usageContract": "/aixe/redirector-urls/check-redirector-prefix/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/create-pairing-token",
      "path": "/aixe/fulfillment-stations/create-pairing-token",
      "title": "Create Pairing Token",
      "description": "Lets an authenticated business owner provision one fulfillment tablet using a short-lived QR URL, without sharing owner credentials.",
      "purpose": "Lets an authenticated business owner provision one fulfillment tablet using a short-lived QR URL, without sharing owner credentials.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "BusinessOwner",
      "sortOrder": 2200,
      "discoveryRequest": "GET /aixe/fulfillment-stations/create-pairing-token/?",
      "usageContract": "/aixe/fulfillment-stations/create-pairing-token/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/activate",
      "path": "/aixe/fulfillment-stations/activate",
      "title": "Activate",
      "description": "Consumes one unused, unexpired pairing token and names a dedicated business fulfillment station. Returns its unique station credential or sets the secure browser cookie.",
      "purpose": "Consumes one unused, unexpired pairing token and names a dedicated business fulfillment station. Returns its unique station credential or sets the secure browser cookie.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2201,
      "discoveryRequest": "GET /aixe/fulfillment-stations/activate/?",
      "usageContract": "/aixe/fulfillment-stations/activate/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/poll",
      "path": "/aixe/fulfillment-stations/poll",
      "title": "Poll",
      "description": "Authenticates a fulfillment station, records its successful heartbeat, and reports incoming New or Pending orders so every station can sound and flash until the business moves those orders forward.",
      "purpose": "Authenticates a fulfillment station, records its successful heartbeat, and reports incoming New or Pending orders so every station can sound and flash until the business moves those orders forward.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2202,
      "discoveryRequest": "GET /aixe/fulfillment-stations/poll/?",
      "usageContract": "/aixe/fulfillment-stations/poll/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/get-order",
      "path": "/aixe/fulfillment-stations/get-order",
      "title": "Get Order",
      "description": "Returns the selected business-owned order\u0027s captured customer, item, name-on-cup, instructions, schedule, address, totals and invoice payment information needed for fulfillment.",
      "purpose": "Returns the selected business-owned order\u0027s captured customer, item, name-on-cup, instructions, schedule, address, totals and invoice payment information needed for fulfillment.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2203,
      "discoveryRequest": "GET /aixe/fulfillment-stations/get-order/?",
      "usageContract": "/aixe/fulfillment-stations/get-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/accept-order",
      "path": "/aixe/fulfillment-stations/accept-order",
      "title": "Accept Order",
      "description": "Atomically moves a New or Pending order to the existing In Progress status and records the accepting station and UTC timestamp. Other stations stop alerting when their polls see the changed status.",
      "purpose": "Atomically moves a New or Pending order to the existing In Progress status and records the accepting station and UTC timestamp. Other stations stop alerting when their polls see the changed status.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "Associate",
      "sortOrder": 2204,
      "discoveryRequest": "GET /aixe/fulfillment-stations/accept-order/?",
      "usageContract": "/aixe/fulfillment-stations/accept-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/list-stations",
      "path": "/aixe/fulfillment-stations/list-stations",
      "title": "List Stations",
      "description": "Shows the authenticated business owner up to 200 active registered stations, each location, last successful heartbeat and derived online/offline status.",
      "purpose": "Shows the authenticated business owner up to 200 active registered stations, each location, last successful heartbeat and derived online/offline status.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "BusinessOwner",
      "sortOrder": 2205,
      "discoveryRequest": "GET /aixe/fulfillment-stations/list-stations/?",
      "usageContract": "/aixe/fulfillment-stations/list-stations/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/fulfillment-stations/revoke-station",
      "path": "/aixe/fulfillment-stations/revoke-station",
      "title": "Revoke Station",
      "description": "Lets a business owner immediately revoke one registered fulfillment station without changing business login credentials or affecting other stations.",
      "purpose": "Lets a business owner immediately revoke one registered fulfillment station without changing business login credentials or affecting other stations.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Fulfillment Stations",
      "audience": "BusinessOwner",
      "sortOrder": 2206,
      "discoveryRequest": "GET /aixe/fulfillment-stations/revoke-station/?",
      "usageContract": "/aixe/fulfillment-stations/revoke-station/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/shop/get-shop-info",
      "path": "/haixe/{businessKey}/shop/get-shop-info",
      "title": "Get Shop Info",
      "description": "Returns the selected business\u0027s public business information.",
      "purpose": "Returns the selected business\u0027s public business information.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3000,
      "discoveryRequest": "GET /haixe/{businessKey}/shop/get-shop-info/?",
      "usageContract": "/haixe/{businessKey}/shop/get-shop-info/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/list-products-and-services",
      "path": "/haixe/{businessKey}/list-products-and-services",
      "title": "List Products And Services",
      "description": "Returns the selected business\u0027s active products and services as a bounded JSON list.",
      "purpose": "Returns the selected business\u0027s active products and services as a bounded JSON list.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3001,
      "discoveryRequest": "GET /haixe/{businessKey}/list-products-and-services/?",
      "usageContract": "/haixe/{businessKey}/list-products-and-services/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-product-categories",
      "path": "/haixe/{businessKey}/get-product-categories",
      "title": "Get Product Categories",
      "description": "Returns every product category used by an active product or service for the selected business.",
      "purpose": "Returns every product category used by an active product or service for the selected business.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3002,
      "discoveryRequest": "GET /haixe/{businessKey}/get-product-categories/?",
      "usageContract": "/haixe/{businessKey}/get-product-categories/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/{businessKey}/products/search",
      "path": "/haixe/quick-order/{businessKey}/products/search",
      "title": "Search Products",
      "description": "Search Products through the public, no-login quick-order flow.",
      "purpose": "Search Products through the public, no-login quick-order flow.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 3002,
      "discoveryRequest": "GET /haixe/quick-order/{businessKey}/products/search/?",
      "usageContract": "/haixe/quick-order/{businessKey}/products/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/quick-order/{businessKey}/products/search",
      "path": "/haixe/quick-order/{businessKey}/products/search",
      "title": "Search Products",
      "description": "Search Products through the public, no-login quick-order flow.",
      "purpose": "Search Products through the public, no-login quick-order flow.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Quick Order",
      "audience": "Customer",
      "sortOrder": 3002,
      "discoveryRequest": "GET /haixe/quick-order/{businessKey}/products/search/?",
      "usageContract": "/haixe/quick-order/{businessKey}/products/search/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/tour",
      "path": "/haixe/{businessKey}/tour",
      "title": "Tour",
      "description": "Welcome the visitor to their persistent, tenant-isolated the selected business HAIXE business and guide them as they build and operate it.",
      "purpose": "Welcome the visitor to their persistent, tenant-isolated the selected business HAIXE business and guide them as they build and operate it.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3003,
      "discoveryRequest": "GET /haixe/{businessKey}/tour/?",
      "usageContract": "/haixe/{businessKey}/tour/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/customer/create-customer",
      "path": "/haixe/{businessKey}/customer/create-customer",
      "title": "Create Customer",
      "description": "Creates a customer linked to the selected business when the email does not already exist for this business.",
      "purpose": "Creates a customer linked to the selected business when the email does not already exist for this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3004,
      "discoveryRequest": "GET /haixe/{businessKey}/customer/create-customer/?",
      "usageContract": "/haixe/{businessKey}/customer/create-customer/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/customer/check-customer-key",
      "path": "/haixe/{businessKey}/customer/check-customer-key",
      "title": "Check Customer Key",
      "description": "Checks whether CustomerKey identifies an active customer linked to the selected business.",
      "purpose": "Checks whether CustomerKey identifies an active customer linked to the selected business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3005,
      "discoveryRequest": "GET /haixe/{businessKey}/customer/check-customer-key/?",
      "usageContract": "/haixe/{businessKey}/customer/check-customer-key/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/customer/recover-customer-key",
      "path": "/haixe/{businessKey}/customer/recover-customer-key",
      "title": "Recover Customer Key",
      "description": "Accepts a customer email address and, when it matches an active customer linked to the selected business, emails that customer their business-scoped CustomerKey.",
      "purpose": "Accepts a customer email address and, when it matches an active customer linked to the selected business, emails that customer their business-scoped CustomerKey.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3006,
      "discoveryRequest": "GET /haixe/{businessKey}/customer/recover-customer-key/?",
      "usageContract": "/haixe/{businessKey}/customer/recover-customer-key/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/orders/create-order-request",
      "path": "/haixe/{businessKey}/orders/create-order-request",
      "title": "Create Order Request",
      "description": "Creates an order request and invoice for the selected business from existing business-scoped customer and product keys.",
      "purpose": "Creates an order request and invoice for the selected business from existing business-scoped customer and product keys.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3007,
      "discoveryRequest": "GET /haixe/{businessKey}/orders/create-order-request/?",
      "usageContract": "/haixe/{businessKey}/orders/create-order-request/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/orders/get-full-order-information",
      "path": "/haixe/{businessKey}/orders/get-full-order-information",
      "title": "Get Full Order Information",
      "description": "Returns one complete order owned by the submitted customer and linked to the selected business.",
      "purpose": "Returns one complete order owned by the submitted customer and linked to the selected business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3008,
      "discoveryRequest": "GET /haixe/{businessKey}/orders/get-full-order-information/?",
      "usageContract": "/haixe/{businessKey}/orders/get-full-order-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/orders/modify-order",
      "path": "/haixe/{businessKey}/orders/modify-order",
      "title": "Modify Order",
      "description": "Replaces the items on one editable customer-owned order linked to the selected business and recalculates inventory, order totals, and invoice totals.",
      "purpose": "Replaces the items on one editable customer-owned order linked to the selected business and recalculates inventory, order totals, and invoice totals.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3009,
      "discoveryRequest": "GET /haixe/{businessKey}/orders/modify-order/?",
      "usageContract": "/haixe/{businessKey}/orders/modify-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/orders/cancel-order",
      "path": "/haixe/{businessKey}/orders/cancel-order",
      "title": "Cancel Order",
      "description": "Cancels one customer-owned order linked to the selected business when the order is not terminal.",
      "purpose": "Cancels one customer-owned order linked to the selected business when the order is not terminal.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3010,
      "discoveryRequest": "GET /haixe/{businessKey}/orders/cancel-order/?",
      "usageContract": "/haixe/{businessKey}/orders/cancel-order/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/invoices/list-customer-invoices",
      "path": "/haixe/{businessKey}/invoices/list-customer-invoices",
      "title": "List Customer Invoices",
      "description": "Returns bounded invoice and linked order header history for a customer linked to the selected business.",
      "purpose": "Returns bounded invoice and linked order header history for a customer linked to the selected business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer",
      "sortOrder": 3011,
      "discoveryRequest": "GET /haixe/{businessKey}/invoices/list-customer-invoices/?",
      "usageContract": "/haixe/{businessKey}/invoices/list-customer-invoices/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-business-information",
      "path": "/haixe/{businessKey}/get-business-information",
      "title": "Get Business Information",
      "description": "Returns this business\u0027s complete public business information.",
      "purpose": "Returns this business\u0027s complete public business information.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3012,
      "discoveryRequest": "GET /haixe/{businessKey}/get-business-information/?",
      "usageContract": "/haixe/{businessKey}/get-business-information/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-account-password",
      "path": "/haixe/{businessKey}/update-business-account-password",
      "title": "Update Business Account Password",
      "description": "Updates the authenticated Person credentials after current-password verification; applies across all managed businesses.",
      "purpose": "Updates the authenticated Person credentials after current-password verification; applies across all managed businesses.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3013,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-account-password/?",
      "usageContract": "/haixe/{businessKey}/update-business-account-password/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-login-credentials",
      "path": "/haixe/{businessKey}/update-business-login-credentials",
      "title": "Update Business Login Credentials",
      "description": "Updates the authenticated Person credentials after current-password verification; applies across all managed businesses.",
      "purpose": "Updates the authenticated Person credentials after current-password verification; applies across all managed businesses.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3014,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-login-credentials/?",
      "usageContract": "/haixe/{businessKey}/update-business-login-credentials/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-works",
      "path": "/haixe/{businessKey}/get-works",
      "title": "Get Works",
      "description": "Returns this business\u0027s identity and current resource counts.",
      "purpose": "Returns this business\u0027s identity and current resource counts.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3015,
      "discoveryRequest": "GET /haixe/{businessKey}/get-works/?",
      "usageContract": "/haixe/{businessKey}/get-works/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-customers",
      "path": "/haixe/{businessKey}/search-customers",
      "title": "Search Customers",
      "description": "Searches customers linked to this business.",
      "purpose": "Searches customers linked to this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3016,
      "discoveryRequest": "GET /haixe/{businessKey}/search-customers/?",
      "usageContract": "/haixe/{businessKey}/search-customers/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-customer",
      "path": "/haixe/{businessKey}/get-customer",
      "title": "Get Customer",
      "description": "Returns one business-owned customer.",
      "purpose": "Returns one business-owned customer.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3017,
      "discoveryRequest": "GET /haixe/{businessKey}/get-customer/?",
      "usageContract": "/haixe/{businessKey}/get-customer/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-customer",
      "path": "/haixe/{businessKey}/update-customer",
      "title": "Update Customer",
      "description": "Updates supplied fields on one business-owned customer.",
      "purpose": "Updates supplied fields on one business-owned customer.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3018,
      "discoveryRequest": "GET /haixe/{businessKey}/update-customer/?",
      "usageContract": "/haixe/{businessKey}/update-customer/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-customer",
      "path": "/haixe/{businessKey}/delete-customer",
      "title": "Delete Customer",
      "description": "Deletes an unreferenced business-owned customer after explicit confirmation.",
      "purpose": "Deletes an unreferenced business-owned customer after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3019,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-customer/?",
      "usageContract": "/haixe/{businessKey}/delete-customer/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-products-and-services",
      "path": "/haixe/{businessKey}/search-products-and-services",
      "title": "Search Products And Services",
      "description": "Searches this business\u0027s products and services with inventory and reorder information.",
      "purpose": "Searches this business\u0027s products and services with inventory and reorder information.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3020,
      "discoveryRequest": "GET /haixe/{businessKey}/search-products-and-services/?",
      "usageContract": "/haixe/{businessKey}/search-products-and-services/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-product-or-service",
      "path": "/haixe/{businessKey}/get-product-or-service",
      "title": "Get Product Or Service",
      "description": "Returns one business-owned product or service.",
      "purpose": "Returns one business-owned product or service.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3021,
      "discoveryRequest": "GET /haixe/{businessKey}/get-product-or-service/?",
      "usageContract": "/haixe/{businessKey}/get-product-or-service/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-product-or-service",
      "path": "/haixe/{businessKey}/create-product-or-service",
      "title": "Create Product Or Service",
      "description": "Creates one product or service for this business.",
      "purpose": "Creates one product or service for this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3022,
      "discoveryRequest": "GET /haixe/{businessKey}/create-product-or-service/?",
      "usageContract": "/haixe/{businessKey}/create-product-or-service/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-product-or-service",
      "path": "/haixe/{businessKey}/update-product-or-service",
      "title": "Update Product Or Service",
      "description": "Updates supplied fields on one business-owned product or service.",
      "purpose": "Updates supplied fields on one business-owned product or service.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3023,
      "discoveryRequest": "GET /haixe/{businessKey}/update-product-or-service/?",
      "usageContract": "/haixe/{businessKey}/update-product-or-service/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-product-or-service",
      "path": "/haixe/{businessKey}/delete-product-or-service",
      "title": "Delete Product Or Service",
      "description": "Deletes an unreferenced product or service after explicit confirmation.",
      "purpose": "Deletes an unreferenced product or service after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3024,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-product-or-service/?",
      "usageContract": "/haixe/{businessKey}/delete-product-or-service/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/download-price-list",
      "path": "/haixe/{businessKey}/download-price-list",
      "title": "Download Price List",
      "description": "Downloads this business\u0027s complete product and service price list as CSV.",
      "purpose": "Downloads this business\u0027s complete product and service price list as CSV.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3025,
      "discoveryRequest": "GET /haixe/{businessKey}/download-price-list/?",
      "usageContract": "/haixe/{businessKey}/download-price-list/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/import-price-list",
      "path": "/haixe/{businessKey}/import-price-list",
      "title": "Import Price List",
      "description": "Validates and creates or updates submitted product and service CSV rows by ProductOrServiceCode.",
      "purpose": "Validates and creates or updates submitted product and service CSV rows by ProductOrServiceCode.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3026,
      "discoveryRequest": "GET /haixe/{businessKey}/import-price-list/?",
      "usageContract": "/haixe/{businessKey}/import-price-list/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/check-product-inventory",
      "path": "/haixe/{businessKey}/check-product-inventory",
      "title": "Check Product Inventory",
      "description": "Checks current inventory and whether a requested quantity can be fulfilled.",
      "purpose": "Checks current inventory and whether a requested quantity can be fulfilled.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3027,
      "discoveryRequest": "GET /haixe/{businessKey}/check-product-inventory/?",
      "usageContract": "/haixe/{businessKey}/check-product-inventory/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/adjust-product-inventory",
      "path": "/haixe/{businessKey}/adjust-product-inventory",
      "title": "Adjust Product Inventory",
      "description": "Atomically adjusts one product\u0027s quantity on hand.",
      "purpose": "Atomically adjusts one product\u0027s quantity on hand.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3028,
      "discoveryRequest": "GET /haixe/{businessKey}/adjust-product-inventory/?",
      "usageContract": "/haixe/{businessKey}/adjust-product-inventory/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-invoice",
      "path": "/haixe/{businessKey}/get-invoice",
      "title": "Get Invoice",
      "description": "Returns one business-owned invoice with customer and detail lines.",
      "purpose": "Returns one business-owned invoice with customer and detail lines.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3029,
      "discoveryRequest": "GET /haixe/{businessKey}/get-invoice/?",
      "usageContract": "/haixe/{businessKey}/get-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-invoice",
      "path": "/haixe/{businessKey}/create-invoice",
      "title": "Create Invoice",
      "description": "Creates an invoice header for a business-owned customer.",
      "purpose": "Creates an invoice header for a business-owned customer.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3030,
      "discoveryRequest": "GET /haixe/{businessKey}/create-invoice/?",
      "usageContract": "/haixe/{businessKey}/create-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-invoice",
      "path": "/haixe/{businessKey}/update-invoice",
      "title": "Update Invoice",
      "description": "Updates invoice dates, status, address, notes, or tax without changing payment history.",
      "purpose": "Updates invoice dates, status, address, notes, or tax without changing payment history.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3031,
      "discoveryRequest": "GET /haixe/{businessKey}/update-invoice/?",
      "usageContract": "/haixe/{businessKey}/update-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-invoice",
      "path": "/haixe/{businessKey}/delete-invoice",
      "title": "Delete Invoice",
      "description": "Deletes an invoice with no payment history, its lines, and appointments after explicit confirmation.",
      "purpose": "Deletes an invoice with no payment history, its lines, and appointments after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3032,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-invoice/?",
      "usageContract": "/haixe/{businessKey}/delete-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/add-payment-to-invoice",
      "path": "/haixe/{businessKey}/add-payment-to-invoice",
      "title": "Add Payment To Invoice",
      "description": "Adds one immutable positive payment or negative payment adjustment to a business-owned invoice and recalculates its paid balance.",
      "purpose": "Adds one immutable positive payment or negative payment adjustment to a business-owned invoice and recalculates its paid balance.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3033,
      "discoveryRequest": "GET /haixe/{businessKey}/add-payment-to-invoice/?",
      "usageContract": "/haixe/{businessKey}/add-payment-to-invoice/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-invoice-payment",
      "path": "/haixe/{businessKey}/get-invoice-payment",
      "title": "Get Invoice Payment",
      "description": "Returns one immutable business-owned invoice payment.",
      "purpose": "Returns one immutable business-owned invoice payment.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3034,
      "discoveryRequest": "GET /haixe/{businessKey}/get-invoice-payment/?",
      "usageContract": "/haixe/{businessKey}/get-invoice-payment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-all-invoice-payments",
      "path": "/haixe/{businessKey}/get-all-invoice-payments",
      "title": "Get All Invoice Payments",
      "description": "Returns a bounded newest-first collection of all invoice payments owned by this business.",
      "purpose": "Returns a bounded newest-first collection of all invoice payments owned by this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3035,
      "discoveryRequest": "GET /haixe/{businessKey}/get-all-invoice-payments/?",
      "usageContract": "/haixe/{businessKey}/get-all-invoice-payments/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-invoice-payments",
      "path": "/haixe/{businessKey}/search-invoice-payments",
      "title": "Search Invoice Payments",
      "description": "Returns bounded newest-first payment history for one business-owned invoice.",
      "purpose": "Returns bounded newest-first payment history for one business-owned invoice.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3036,
      "discoveryRequest": "GET /haixe/{businessKey}/search-invoice-payments/?",
      "usageContract": "/haixe/{businessKey}/search-invoice-payments/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-invoice-detail",
      "path": "/haixe/{businessKey}/get-invoice-detail",
      "title": "Get Invoice Detail",
      "description": "Returns one invoice detail line.",
      "purpose": "Returns one invoice detail line.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3037,
      "discoveryRequest": "GET /haixe/{businessKey}/get-invoice-detail/?",
      "usageContract": "/haixe/{businessKey}/get-invoice-detail/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-invoice-detail",
      "path": "/haixe/{businessKey}/create-invoice-detail",
      "title": "Create Invoice Detail",
      "description": "Adds a product or service line and recalculates invoice totals.",
      "purpose": "Adds a product or service line and recalculates invoice totals.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3038,
      "discoveryRequest": "GET /haixe/{businessKey}/create-invoice-detail/?",
      "usageContract": "/haixe/{businessKey}/create-invoice-detail/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-invoice-detail",
      "path": "/haixe/{businessKey}/update-invoice-detail",
      "title": "Update Invoice Detail",
      "description": "Updates an invoice line and recalculates totals and inventory.",
      "purpose": "Updates an invoice line and recalculates totals and inventory.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3039,
      "discoveryRequest": "GET /haixe/{businessKey}/update-invoice-detail/?",
      "usageContract": "/haixe/{businessKey}/update-invoice-detail/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-invoice-detail",
      "path": "/haixe/{businessKey}/delete-invoice-detail",
      "title": "Delete Invoice Detail",
      "description": "Deletes an invoice line and its appointment after explicit confirmation.",
      "purpose": "Deletes an invoice line and its appointment after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3040,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-invoice-detail/?",
      "usageContract": "/haixe/{businessKey}/delete-invoice-detail/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-service-schedule",
      "path": "/haixe/{businessKey}/search-service-schedule",
      "title": "Search Service Schedule",
      "description": "Searches confirmed service appointments for this business.",
      "purpose": "Searches confirmed service appointments for this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3041,
      "discoveryRequest": "GET /haixe/{businessKey}/search-service-schedule/?",
      "usageContract": "/haixe/{businessKey}/search-service-schedule/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-service-appointment",
      "path": "/haixe/{businessKey}/get-service-appointment",
      "title": "Get Service Appointment",
      "description": "Returns one confirmed service appointment.",
      "purpose": "Returns one confirmed service appointment.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3042,
      "discoveryRequest": "GET /haixe/{businessKey}/get-service-appointment/?",
      "usageContract": "/haixe/{businessKey}/get-service-appointment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/create-service-appointment",
      "path": "/haixe/{businessKey}/create-service-appointment",
      "title": "Create Service Appointment",
      "description": "Creates a confirmed appointment for a schedulable invoice detail.",
      "purpose": "Creates a confirmed appointment for a schedulable invoice detail.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3043,
      "discoveryRequest": "GET /haixe/{businessKey}/create-service-appointment/?",
      "usageContract": "/haixe/{businessKey}/create-service-appointment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-service-appointment",
      "path": "/haixe/{businessKey}/update-service-appointment",
      "title": "Update Service Appointment",
      "description": "Updates a confirmed service appointment.",
      "purpose": "Updates a confirmed service appointment.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3044,
      "discoveryRequest": "GET /haixe/{businessKey}/update-service-appointment/?",
      "usageContract": "/haixe/{businessKey}/update-service-appointment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/delete-service-appointment",
      "path": "/haixe/{businessKey}/delete-service-appointment",
      "title": "Delete Service Appointment",
      "description": "Deletes a confirmed service appointment after explicit confirmation.",
      "purpose": "Deletes a confirmed service appointment after explicit confirmation.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3045,
      "discoveryRequest": "GET /haixe/{businessKey}/delete-service-appointment/?",
      "usageContract": "/haixe/{businessKey}/delete-service-appointment/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/search-sales",
      "path": "/haixe/{businessKey}/search-sales",
      "title": "Search Sales",
      "description": "Returns bounded invoice records with full-set sales, payment, and balance totals.",
      "purpose": "Returns bounded invoice records with full-set sales, payment, and balance totals.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3046,
      "discoveryRequest": "GET /haixe/{businessKey}/search-sales/?",
      "usageContract": "/haixe/{businessKey}/search-sales/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-accounts-receivable",
      "path": "/haixe/{businessKey}/get-accounts-receivable",
      "title": "Get Accounts Receivable",
      "description": "Returns outstanding and overdue receivables for this business.",
      "purpose": "Returns outstanding and overdue receivables for this business.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3047,
      "discoveryRequest": "GET /haixe/{businessKey}/get-accounts-receivable/?",
      "usageContract": "/haixe/{businessKey}/get-accounts-receivable/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-business-overview",
      "path": "/haixe/{businessKey}/get-business-overview",
      "title": "Get Business Overview",
      "description": "Returns a compact business briefing with sales, collections, receivables, schedule, reorder items, and top customers.",
      "purpose": "Returns a compact business briefing with sales, collections, receivables, schedule, reorder items, and top customers.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3048,
      "discoveryRequest": "GET /haixe/{businessKey}/get-business-overview/?",
      "usageContract": "/haixe/{businessKey}/get-business-overview/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/send-email",
      "path": "/haixe/{businessKey}/send-email",
      "title": "Send Email",
      "description": "Sends one business-scoped result, report, briefing, or work assignment by email.",
      "purpose": "Sends one business-scoped result, report, briefing, or work assignment by email.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3049,
      "discoveryRequest": "GET /haixe/{businessKey}/send-email/?",
      "usageContract": "/haixe/{businessKey}/send-email/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/aixe.ai",
      "path": "/haixe/{businessKey}/aixe.ai",
      "title": "Aixe.Ai",
      "description": "Read the selected business\u0027s hosted manifest, current public business identity, and active registered capabilities.",
      "purpose": "Read the selected business\u0027s hosted manifest, current public business identity, and active registered capabilities.",
      "method": "GET",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 3050,
      "discoveryRequest": "GET /haixe/{businessKey}/aixe.ai/?",
      "usageContract": "/haixe/{businessKey}/aixe.ai/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/get-business-notification-settings",
      "path": "/haixe/{businessKey}/get-business-notification-settings",
      "title": "Get Business Notification Settings",
      "description": "Returns the selected business\u0027s current private order and business-alert notification destinations so the owner can review them during onboarding or later management.",
      "purpose": "Returns the selected business\u0027s current private order and business-alert notification destinations so the owner can review them during onboarding or later management.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3051,
      "discoveryRequest": "GET /haixe/{businessKey}/get-business-notification-settings/?",
      "usageContract": "/haixe/{businessKey}/get-business-notification-settings/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/haixe/{businessKey}/update-business-notification-settings",
      "path": "/haixe/{businessKey}/update-business-notification-settings",
      "title": "Update Business Notification Settings",
      "description": "Updates the selected business\u0027s private order and business-alert notification destinations after the owner reviews each destination independently.",
      "purpose": "Updates the selected business\u0027s private order and business-alert notification destinations after the owner reviews each destination independently.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "Hosted Business",
      "audience": "BusinessOwner",
      "sortOrder": 3052,
      "discoveryRequest": "GET /haixe/{businessKey}/update-business-notification-settings/?",
      "usageContract": "/haixe/{businessKey}/update-business-notification-settings/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/create-request-for-quote",
      "path": "/aixe/rfqs/create-request-for-quote",
      "title": "Create RFQ Draft",
      "description": "Collect a customer\u0027s product or service requirements through an adaptive conversation, then save an editable RFQ draft. Use submit-request-for-quote after customer confirmation to invite nearby businesses.",
      "purpose": "Collect a customer\u0027s product or service requirements through an adaptive conversation, then save an editable RFQ draft. Use submit-request-for-quote after customer confirmation to invite nearby businesses.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8000,
      "discoveryRequest": "GET /aixe/rfqs/create-request-for-quote/?",
      "usageContract": "/aixe/rfqs/create-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/update-request-for-quote",
      "path": "/aixe/rfqs/update-request-for-quote",
      "title": "Update RFQ Draft",
      "description": "Correct or refine the customer\u0027s RFQ while it is a Draft. Published requirements are immutable; create a new draft for different requirements.",
      "purpose": "Correct or refine the customer\u0027s RFQ while it is a Draft. Published requirements are immutable; create a new draft for different requirements.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8001,
      "discoveryRequest": "GET /aixe/rfqs/update-request-for-quote/?",
      "usageContract": "/aixe/rfqs/update-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/submit-request-for-quote",
      "path": "/aixe/rfqs/submit-request-for-quote",
      "title": "Submit RFQ",
      "description": "Publish a confirmed customer RFQ, find active businesses matching any requested NAICS code within the ZIP-based radius, create one assigned quote opportunity per business, and email invitations. Submission permanently locks the request.",
      "purpose": "Publish a confirmed customer RFQ, find active businesses matching any requested NAICS code within the ZIP-based radius, create one assigned quote opportunity per business, and email invitations. Submission permanently locks the request.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8002,
      "discoveryRequest": "GET /aixe/rfqs/submit-request-for-quote/?",
      "usageContract": "/aixe/rfqs/submit-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/cancel-request-for-quote",
      "path": "/aixe/rfqs/cancel-request-for-quote",
      "title": "Cancel RFQ",
      "description": "Stop a Draft or Open RFQ. Businesses previously invited receive closure emails, and outstanding quotes become Not Accepted. Records remain available in history.",
      "purpose": "Stop a Draft or Open RFQ. Businesses previously invited receive closure emails, and outstanding quotes become Not Accepted. Records remain available in history.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8003,
      "discoveryRequest": "GET /aixe/rfqs/cancel-request-for-quote/?",
      "usageContract": "/aixe/rfqs/cancel-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/search-request-for-quotes",
      "path": "/aixe/rfqs/search-request-for-quotes",
      "title": "Search RFQs",
      "description": "Find the signed-in customer\u0027s RFQs, or a business\u0027s assigned RFQ opportunities. Returns a bounded summary page, newest first. Use this before loading a selected RFQ.",
      "purpose": "Find the signed-in customer\u0027s RFQs, or a business\u0027s assigned RFQ opportunities. Returns a bounded summary page, newest first. Use this before loading a selected RFQ.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8004,
      "discoveryRequest": "GET /aixe/rfqs/search-request-for-quotes/?",
      "usageContract": "/aixe/rfqs/search-request-for-quotes/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/get-request-for-quote",
      "path": "/aixe/rfqs/get-request-for-quote",
      "title": "Get RFQ",
      "description": "Read the full requirements and state of one accessible RFQ before preparing a quote, editing a draft, or discussing offers with the customer.",
      "purpose": "Read the full requirements and state of one accessible RFQ before preparing a quote, editing a draft, or discussing offers with the customer.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8005,
      "discoveryRequest": "GET /aixe/rfqs/get-request-for-quote/?",
      "usageContract": "/aixe/rfqs/get-request-for-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/search-business-quotes",
      "path": "/aixe/rfqs/search-business-quotes",
      "title": "Search Business Quotes",
      "description": "Read a bounded list of quotes for a selected accessible RFQ. Customers see submitted quotes; a business sees only its own assigned quote. Competitor proposals are private.",
      "purpose": "Read a bounded list of quotes for a selected accessible RFQ. Customers see submitted quotes; a business sees only its own assigned quote. Competitor proposals are private.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8006,
      "discoveryRequest": "GET /aixe/rfqs/search-business-quotes/?",
      "usageContract": "/aixe/rfqs/search-business-quotes/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/get-business-quote",
      "path": "/aixe/rfqs/get-business-quote",
      "title": "Get Business Quote",
      "description": "Read one accessible business quote, its RFQ, proposal details, status, and allowed actions. Customers do not receive unpublished proposal contents.",
      "purpose": "Read one accessible business quote, its RFQ, proposal details, status, and allowed actions. Customers do not receive unpublished proposal contents.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8007,
      "discoveryRequest": "GET /aixe/rfqs/get-business-quote/?",
      "usageContract": "/aixe/rfqs/get-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/save-business-quote",
      "path": "/aixe/rfqs/save-business-quote",
      "title": "Save Business Quote",
      "description": "Save the assigned business\u0027s proposal. An unsubmitted proposal stays private. Changes to an already submitted Pending or Maybe quote become visible immediately; a lower amount triggers an email with both old and new pricing bases.",
      "purpose": "Save the assigned business\u0027s proposal. An unsubmitted proposal stays private. Changes to an already submitted Pending or Maybe quote become visible immediately; a lower amount triggers an email with both old and new pricing bases.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "BusinessOwner",
      "sortOrder": 8008,
      "discoveryRequest": "GET /aixe/rfqs/save-business-quote/?",
      "usageContract": "/aixe/rfqs/save-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/submit-business-quote",
      "path": "/aixe/rfqs/submit-business-quote",
      "title": "Submit Business Quote",
      "description": "Submit the assigned business\u0027s price and scope, or revise its active submitted quote. First submission emails the customer. A subsequent amount reduction emails the customer; quote shortlisting is preserved.",
      "purpose": "Submit the assigned business\u0027s price and scope, or revise its active submitted quote. First submission emails the customer. A subsequent amount reduction emails the customer; quote shortlisting is preserved.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "BusinessOwner",
      "sortOrder": 8009,
      "discoveryRequest": "GET /aixe/rfqs/submit-business-quote/?",
      "usageContract": "/aixe/rfqs/submit-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/decline-business-quote",
      "path": "/aixe/rfqs/decline-business-quote",
      "title": "Decline RFQ Opportunity",
      "description": "Decline an assigned opportunity and remove it from the business\u0027s default active view. The permanent record remains in history and cannot be edited or messaged after decline.",
      "purpose": "Decline an assigned opportunity and remove it from the business\u0027s default active view. The permanent record remains in history and cannot be edited or messaged after decline.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "BusinessOwner",
      "sortOrder": 8010,
      "discoveryRequest": "GET /aixe/rfqs/decline-business-quote/?",
      "usageContract": "/aixe/rfqs/decline-business-quote/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/update-business-quote-status",
      "path": "/aixe/rfqs/update-business-quote-status",
      "title": "Decide On Business Quote",
      "description": "Record the RFQ customer\u0027s decision on a submitted quote and email the business when that decision changes. Accepting one quote closes the RFQ, marks other outstanding quotes Not Accepted, and emails every other invited business that the RFQ is closed.",
      "purpose": "Record the RFQ customer\u0027s decision on a submitted quote and email the business when that decision changes. Accepting one quote closes the RFQ, marks other outstanding quotes Not Accepted, and emails every other invited business that the RFQ is closed.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer",
      "sortOrder": 8011,
      "discoveryRequest": "GET /aixe/rfqs/update-business-quote-status/?",
      "usageContract": "/aixe/rfqs/update-business-quote-status/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/get-messages",
      "path": "/aixe/rfqs/get-messages",
      "title": "Get Quote Messages",
      "description": "Retrieve one bounded page of the private customer-business conversation for an accessible quote, oldest first. Messages are permanent and contain no attachments or read receipts.",
      "purpose": "Retrieve one bounded page of the private customer-business conversation for an accessible quote, oldest first. Messages are permanent and contain no attachments or read receipts.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8012,
      "discoveryRequest": "GET /aixe/rfqs/get-messages/?",
      "usageContract": "/aixe/rfqs/get-messages/?",
      "documentationSource": "AIXEEndpointRegistry"
    },
    {
      "endpoint": "/aixe/rfqs/send-message",
      "path": "/aixe/rfqs/send-message",
      "title": "Send Quote Message",
      "description": "Send an intentional message in the selected quote\u0027s private conversation and email the other party. Sender identity is determined by authentication. Automatic status and closure emails do not become conversation messages.",
      "purpose": "Send an intentional message in the selected quote\u0027s private conversation and email the other party. Sender identity is determined by authentication. Automatic status and closure emails do not become conversation messages.",
      "method": "POST",
      "accessType": "Public",
      "groupName": "RFQs And Quotes",
      "audience": "Customer, BusinessOwner",
      "sortOrder": 8013,
      "discoveryRequest": "GET /aixe/rfqs/send-message/?",
      "usageContract": "/aixe/rfqs/send-message/?",
      "documentationSource": "AIXEEndpointRegistry"
    }
  ],
  "endpointSelfDescription": {
    "whatThisEndpointIs": "This endpoint is InternetOfDoing.com\u0027s native AIXE declaration.",
    "whatThisEndpointIsNot": "This root endpoint is not itself a business operation and should not be treated as permission to access private app data.",
    "recommendedAssistantBehavior": "Use this endpoint to understand InternetOfDoing.com. When an active BusinessKey is supplied, enter that business\u0027s hosted workflow through /haixe/{BusinessKey}/aixe.ai."
  },
  "updated": "2026-08-30"
}