1. A method comprising: receiving registration data from a plurality of service endpoints at a service directory service, wherein the registration data for a service endpoint comprises at least one address for the service endpoint and descriptive data related to one or more services provided by the service endpoint; receiving a request for a manifest from a client device at the service directory, wherein the request includes client metadata associated with the client device, and the client metadata identifies at least one version number of an application used by the client device; in response to receiving the request for a manifest, generating a manifest for the client device using the client metadata and the descriptive data by the service directory service, wherein the generated manifest includes an identifier of one or more services and one or more addresses of service endpoints that provide the identified one or more services; and providing the generated manifest to the client device by the service directory service.