{
  "Protocol": "AIXE",
  "Version": "1.0",
  "Document": "aixe.ai",
  "DocumentType": "StarterDiscovery",
  "Purpose": "Starter discovery document for Lago Marvelous AIXE capabilities.",
  "DocumentationSource": {
    "ApplicationFlowControlName": "AIXE.Endpoint.AixeAi.GET",
    "Found": true,
    "ParseStatus": "Loaded"
  },
  "Audience": [
    "AI systems",
    "Autonomous agents",
    "Software clients",
    "Human developers inspecting the AI-facing surface"
  ],
  "ProtocolReference": {
    "ProtocolHome": "https://aixeprotocol.com/",
    "CanonicalUsageContract": "https://aixeprotocol.com/usage/?",
    "Whitepaper": "https://aixeprotocol.com/whitepaper/full-spec.html",
    "Inventor": "Gregory Oglethorpe"
  },
  "Service": "Lago Marvelous",
  "BusinessKey": "05ad7f99-c7bc-4165-95ad-3f5e2a0b5eaf",
  "CanonicalManifest": "https://lagomarvelous.com/aixe.ai",
  "CanonicalHelpTrigger": "GET /endpoint/?",
  "Instructions": [
    "Read this document first.",
    "Treat entries in EndpointGroups as business capabilities.",
    "Call GET /endpoint/? to request a capability endpoint\u0027s discovery contract.",
    "Execute business operations with the method and body format declared by the endpoint contract.",
    "Never send business variables in URL path segments or query strings.",
    "After every action, inspect SuccessCode. Only SUCCESS means success.",
    "No login endpoint is exposed. Numeric database IDs are never accepted or returned."
  ],
  "ClientKeyRecoveryInstruction": "If the client may already exist but ClientKey is unavailable, call /aixe/clients/recover-client-key-by-email. The response never reveals whether the email exists and never returns ClientKey; a matching key is disclosed only in email to the submitted address.",
  "SchedulingInstruction": "A requested scheduling date is not the official date of service. Lago Marvelous will contact the customer soon with the official service date.",
  "EndpointGroups": {
    "Public": [
      {
        "Endpoint": "/aixe/list-products-and-services",
        "DiscoveryRequest": "/aixe/list-products-and-services/?",
        "CanonicalHelpTrigger": "GET /aixe/list-products-and-services/?",
        "Method": "GET",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Lists the active Lago Marvelous products and services for any public caller.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.ListProductsAndServices.GET",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      }
    ],
    "Clients": [
      {
        "Endpoint": "/aixe/clients/create-client-profile",
        "DiscoveryRequest": "/aixe/clients/create-client-profile/?",
        "CanonicalHelpTrigger": "GET /aixe/clients/create-client-profile/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Creates a Lago Marvelous client profile and returns the new ClientKey.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Clients.CreateClientProfile.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/clients/validate-client-key",
        "DiscoveryRequest": "/aixe/clients/validate-client-key/?",
        "CanonicalHelpTrigger": "GET /aixe/clients/validate-client-key/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Validates whether a ClientKey identifies an active Lago Marvelous client.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Clients.ValidateClientKey.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/clients/recover-client-key-by-email",
        "DiscoveryRequest": "/aixe/clients/recover-client-key-by-email/?",
        "CanonicalHelpTrigger": "GET /aixe/clients/recover-client-key-by-email/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Emails an existing client their ClientKey when the submitted email matches.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Clients.RecoverClientKeyByEmail.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/clients/get-client-information",
        "DiscoveryRequest": "/aixe/clients/get-client-information/?",
        "CanonicalHelpTrigger": "GET /aixe/clients/get-client-information/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Returns the client profile information identified by ClientKey.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Clients.GetClientInformation.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/clients/update-client-information",
        "DiscoveryRequest": "/aixe/clients/update-client-information/?",
        "CanonicalHelpTrigger": "GET /aixe/clients/update-client-information/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Updates an existing client\u0027s profile and contact information.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Clients.UpdateClientInformation.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/clients/create-cleaning-request",
        "DiscoveryRequest": "/aixe/clients/create-cleaning-request/?",
        "CanonicalHelpTrigger": "GET /aixe/clients/create-cleaning-request/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Creates and submits a complete cleaning request.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Clients.CreateCleaningRequest.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/clients/list-client-cleaning-requests",
        "DiscoveryRequest": "/aixe/clients/list-client-cleaning-requests/?",
        "CanonicalHelpTrigger": "GET /aixe/clients/list-client-cleaning-requests/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Lists bounded cleaning-request history for one client.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Clients.ListClientCleaningRequests.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/clients/get-client-cleaning-request-information",
        "DiscoveryRequest": "/aixe/clients/get-client-cleaning-request-information/?",
        "CanonicalHelpTrigger": "GET /aixe/clients/get-client-cleaning-request-information/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Returns complete information for one client-owned cleaning request.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Clients.GetClientCleaningRequestInformation.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/clients/update-cleaning-request",
        "DiscoveryRequest": "/aixe/clients/update-cleaning-request/?",
        "CanonicalHelpTrigger": "GET /aixe/clients/update-cleaning-request/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Updates an unscheduled client cleaning request.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Clients.UpdateCleaningRequest.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/clients/cancel-cleaning-request",
        "DiscoveryRequest": "/aixe/clients/cancel-cleaning-request/?",
        "CanonicalHelpTrigger": "GET /aixe/clients/cancel-cleaning-request/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Cancels an unscheduled client cleaning request.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Clients.CancelCleaningRequest.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/clients/list-available-service-times",
        "DiscoveryRequest": "/aixe/clients/list-available-service-times/?",
        "CanonicalHelpTrigger": "GET /aixe/clients/list-available-service-times/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Lists valid requested start times for a cleaning and date.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Clients.ListAvailableServiceTimes.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      }
    ],
    "Management": [
      {
        "Endpoint": "/aixe/management/get-business-information",
        "DiscoveryRequest": "/aixe/management/get-business-information/?",
        "CanonicalHelpTrigger": "GET /aixe/management/get-business-information/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Returns Lago Marvelous business information, taxes, and operating hours.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.GetBusinessInformation.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/update-business-information",
        "DiscoveryRequest": "/aixe/management/update-business-information/?",
        "CanonicalHelpTrigger": "GET /aixe/management/update-business-information/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Updates Lago Marvelous business information, order email, taxes, and operating hours.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.UpdateBusinessInformation.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/search-products-and-services",
        "DiscoveryRequest": "/aixe/management/search-products-and-services/?",
        "CanonicalHelpTrigger": "GET /aixe/management/search-products-and-services/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Searches all active and inactive products and services for management.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.SearchProductsAndServices.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/create-product-or-service",
        "DiscoveryRequest": "/aixe/management/create-product-or-service/?",
        "CanonicalHelpTrigger": "GET /aixe/management/create-product-or-service/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Creates a product or service for Lago Marvelous.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.CreateProductOrService.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/update-product-or-service",
        "DiscoveryRequest": "/aixe/management/update-product-or-service/?",
        "CanonicalHelpTrigger": "GET /aixe/management/update-product-or-service/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Updates a Lago Marvelous product or service.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.UpdateProductOrService.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/deactivate-product-or-service",
        "DiscoveryRequest": "/aixe/management/deactivate-product-or-service/?",
        "CanonicalHelpTrigger": "GET /aixe/management/deactivate-product-or-service/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Removes a product or service from active offerings without deleting history.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.DeactivateProductOrService.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/search-clients",
        "DiscoveryRequest": "/aixe/management/search-clients/?",
        "CanonicalHelpTrigger": "GET /aixe/management/search-clients/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Searches Lago Marvelous client profiles.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.SearchClients.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/search-cleaning-requests",
        "DiscoveryRequest": "/aixe/management/search-cleaning-requests/?",
        "CanonicalHelpTrigger": "GET /aixe/management/search-cleaning-requests/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Searches Lago Marvelous cleaning-request summaries.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.SearchCleaningRequests.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/get-cleaning-request-information",
        "DiscoveryRequest": "/aixe/management/get-cleaning-request-information/?",
        "CanonicalHelpTrigger": "GET /aixe/management/get-cleaning-request-information/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Returns complete management information for one cleaning request.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.GetCleaningRequestInformation.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/create-cleaning-request-for-client",
        "DiscoveryRequest": "/aixe/management/create-cleaning-request-for-client/?",
        "CanonicalHelpTrigger": "GET /aixe/management/create-cleaning-request-for-client/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Creates a cleaning request for an existing client.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.CreateCleaningRequestForClient.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/update-cleaning-request-information",
        "DiscoveryRequest": "/aixe/management/update-cleaning-request-information/?",
        "CanonicalHelpTrigger": "GET /aixe/management/update-cleaning-request-information/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Updates the complete cleaning-request header and offering collection.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.UpdateCleaningRequestInformation.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/search-service-providers",
        "DiscoveryRequest": "/aixe/management/search-service-providers/?",
        "CanonicalHelpTrigger": "GET /aixe/management/search-service-providers/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Searches Lago Marvelous service providers.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.SearchServiceProviders.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/create-service-provider",
        "DiscoveryRequest": "/aixe/management/create-service-provider/?",
        "CanonicalHelpTrigger": "GET /aixe/management/create-service-provider/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Creates and links a service provider.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.CreateServiceProvider.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/update-service-provider",
        "DiscoveryRequest": "/aixe/management/update-service-provider/?",
        "CanonicalHelpTrigger": "GET /aixe/management/update-service-provider/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Updates a service provider.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.UpdateServiceProvider.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/deactivate-service-provider",
        "DiscoveryRequest": "/aixe/management/deactivate-service-provider/?",
        "CanonicalHelpTrigger": "GET /aixe/management/deactivate-service-provider/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Deactivates a Lago Marvelous service provider.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.DeactivateServiceProvider.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/assign-service-provider-to-cleaning-items",
        "DiscoveryRequest": "/aixe/management/assign-service-provider-to-cleaning-items/?",
        "CanonicalHelpTrigger": "GET /aixe/management/assign-service-provider-to-cleaning-items/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Assigns one service provider to one or more cleaning invoice items.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.AssignServiceProviderToCleaningItems.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/management/unassign-service-provider-from-cleaning-items",
        "DiscoveryRequest": "/aixe/management/unassign-service-provider-from-cleaning-items/?",
        "CanonicalHelpTrigger": "GET /aixe/management/unassign-service-provider-from-cleaning-items/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Unassigns a service provider from selected cleaning invoice items.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Management.UnassignServiceProviderFromCleaningItems.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      }
    ],
    "Associates": [
      {
        "Endpoint": "/aixe/associates/get-associate-dashboard-information",
        "DiscoveryRequest": "/aixe/associates/get-associate-dashboard-information/?",
        "CanonicalHelpTrigger": "GET /aixe/associates/get-associate-dashboard-information/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Returns the current bounded associate dashboard information.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Associates.GetAssociateDashboardInformation.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      }
    ],
    "ServiceProviders": [
      {
        "Endpoint": "/aixe/serviceproviders/list-service-provider-assignments",
        "DiscoveryRequest": "/aixe/serviceproviders/list-service-provider-assignments/?",
        "CanonicalHelpTrigger": "GET /aixe/serviceproviders/list-service-provider-assignments/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Lists bounded assignments for a service provider.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Serviceproviders.ListServiceProviderAssignments.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/serviceproviders/get-service-provider-assignment-information",
        "DiscoveryRequest": "/aixe/serviceproviders/get-service-provider-assignment-information/?",
        "CanonicalHelpTrigger": "GET /aixe/serviceproviders/get-service-provider-assignment-information/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Returns complete information for one assigned cleaning task.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Serviceproviders.GetServiceProviderAssignmentInformation.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/serviceproviders/list-available-service-provider-assignment-times",
        "DiscoveryRequest": "/aixe/serviceproviders/list-available-service-provider-assignment-times/?",
        "CanonicalHelpTrigger": "GET /aixe/serviceproviders/list-available-service-provider-assignment-times/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Lists conflict-free rescheduling times for a service-provider assignment.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Serviceproviders.ListAvailableServiceProviderAssignmentTimes.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/serviceproviders/reschedule-service-provider-assignment",
        "DiscoveryRequest": "/aixe/serviceproviders/reschedule-service-provider-assignment/?",
        "CanonicalHelpTrigger": "GET /aixe/serviceproviders/reschedule-service-provider-assignment/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Changes a service-provider assignment\u0027s scheduled start time.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Serviceproviders.RescheduleServiceProviderAssignment.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      },
      {
        "Endpoint": "/aixe/serviceproviders/update-service-provider-assignment-status",
        "DiscoveryRequest": "/aixe/serviceproviders/update-service-provider-assignment-status/?",
        "CanonicalHelpTrigger": "GET /aixe/serviceproviders/update-service-provider-assignment-status/?",
        "Method": "POST",
        "ContentType": "application/json; charset=utf-8",
        "Purpose": "Updates a service-provider assignment workflow status.",
        "DocumentationSource": {
          "ApplicationFlowControlName": "AIXE.Endpoint.Serviceproviders.UpdateServiceProviderAssignmentStatus.POST",
          "Found": true,
          "ParseStatus": "Loaded"
        }
      }
    ]
  }
}