| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| library fuchsia.castsetup; |
| |
| /// Specifies the required security for a client of the API. |
| type SecurityState = strict enum : uint32 { |
| SECURITY_STATE_NONE = 0; |
| SECURITY_STATE_ENCRYPTED = 1; |
| SECURITY_STATE_TRUSTED = 2; |
| }; |
| |
| /// Registered API that handles an incoming request. |
| protocol ApiRequestHandler { |
| /// Called to handle a request to this setup API. The request `data` is JSON. |
| /// The response `data` must be JSON. |
| HandleRequest(struct { |
| data string:<MAX, optional>; |
| }) -> (struct { |
| response_code uint32; |
| data string:<MAX, optional>; |
| }); |
| }; |
| |
| /// API operation mode to specify during registration. |
| type ApiMode = strict enum : uint32 { |
| ACCEPTS_NO_DATA = 1; |
| ACCEPTS_DATA = 2; |
| }; |
| |
| /// Registry that hosts APIs on behalf of clients. |
| @discoverable |
| protocol ApiRegistry { |
| /// Registers an API that may accept incoming data. |
| /// |
| /// `path` identifies how to access the API. If multiple registrations occur with |
| /// the same path, then the last registration is bound, and the rest are unbound. |
| /// |
| /// `accepts_data` indicates whether this API should allow callers to provide |
| /// data in the form of a JSON string. |
| /// |
| /// `security_state` indicates what level of security the caller must |
| /// adhere to. |
| RegisterApi(resource struct { |
| path string:1024; |
| api_mode ApiMode; |
| security_state SecurityState; |
| api_handler client_end:ApiRequestHandler; |
| }); |
| }; |