diff --git a/RemoteBMI.jl/.github/workflows/Docs.yml b/.github/workflows/julia-docs.yml similarity index 77% rename from RemoteBMI.jl/.github/workflows/Docs.yml rename to .github/workflows/julia-docs.yml index 85e5d84..7df0ab3 100644 --- a/RemoteBMI.jl/.github/workflows/Docs.yml +++ b/.github/workflows/julia-docs.yml @@ -1,21 +1,23 @@ -name: Docs +name: Julia docs on: push: branches: - main paths: - - "docs/**" - - "src/**" - - "*.toml" + - "RemoteBMI.jl/docs/**" + - "RemoteBMI.jl/src/**" + - "RemoteBMI.jl/*.toml" + - .github/workflows/julia-docs.yml tags: ["*"] pull_request: branches: - main paths: - - "docs/**" - - "src/**" - - "*.toml" + - "RemoteBMI.jl/docs/**" + - "RemoteBMI.jl/src/**" + - "RemoteBMI.jl/*.toml" + - .github/workflows/julia-docs.yml types: [opened, synchronize, reopened] concurrency: @@ -33,6 +35,7 @@ jobs: - uses: julia-actions/setup-julia@v2 with: version: "1" + project: './RemoteBMI.jl' - name: Use Julia cache uses: julia-actions/cache@v2 - name: Instantiate environment with development version of the package @@ -41,6 +44,7 @@ jobs: using Pkg Pkg.develop(PackageSpec(path=pwd())) Pkg.instantiate()' + working-directory: RemoteBMI.jl - name: Run doctest run: | julia --project=docs -e ' @@ -48,10 +52,11 @@ jobs: using RemoteBMI DocMeta.setdocmeta!(RemoteBMI, :DocTestSetup, :(using RemoteBMI); recursive=true) doctest(RemoteBMI)' + working-directory: RemoteBMI.jl - name: Generate and deploy documentation run: julia --project=docs docs/make.jl + working-directory: RemoteBMI.jl env: JULIA_PKG_SERVER: "" GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} GKSwstype: "100" # https://discourse.julialang.org/t/generation-of-documentation-fails-qt-qpa-xcb-could-not-connect-to-display/60988 diff --git a/.github/workflows/julia-test-on-prs.yml b/.github/workflows/julia-test-on-prs.yml index 0088175..feb7bd7 100644 --- a/.github/workflows/julia-test-on-prs.yml +++ b/.github/workflows/julia-test-on-prs.yml @@ -8,6 +8,7 @@ on: - "RemoteBMI.jl/src/**" - "RemoteBMI.jl/test/**" - "RemoteBMI.jl/*.toml" + - .github/workflows/julia-test-on-prs.yml types: [opened, synchronize, reopened] concurrency: diff --git a/README.md b/README.md index ab6a32e..7594e9a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ The [Basic Model Interface (BMI)](https://bmi.readthedocs.io/en/stable/) is a standard interface for models. The interface is available in different languages and a [language agnosting version in SIDL](https://github.com/csdms/bmi/blob/stable/bmi.sidl). -To have a consumer of the model and the provider of the model seperated you can use [grpc4bmi](), but this only works on languages that have a grpc implementation. +To have a consumer of the model and the provider of the model seperated you can use [grpc4bmi](https://grpc4bmi.readthedocs.io/), but this only works on languages that have a grpc implementation. This repo replaced the gRPC protocol with an REST API. The [REST API specification](openapi.yaml) is in the [OpenAPI](https://swagger.io/specification/) format. diff --git a/RemoteBMI.jl/README.md b/RemoteBMI.jl/README.md index 3652e53..c0b6d03 100644 --- a/RemoteBMI.jl/README.md +++ b/RemoteBMI.jl/README.md @@ -37,5 +37,18 @@ The openapi server stubs where generated using the following command: wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.9.0/openapi-generator-cli-7.9.0.jar -O openapi-generator-cli.jar java -jar ./openapi-generator-cli.jar generate -i ./openapi.yaml -g julia-server -o julia-server --additional-properties=packageName=BmiServer --additional-properties=exportModels=true java -jar ./openapi-generator-cli.jar generate -i ./openapi.yaml -g julia-client -o julia-client --additional-properties=packageName=BmiClient --additional-properties=exportModels=true -# Copy the generated files to RemoteBMI.jl/src/ +# Copy the generated src +cp -r julia-client/src/* RemoteBMI.jl/src/client/ +cp -r julia-server/src/* RemoteBMI.jl/src/server/ +# Copy the generated docs +mkdir -p RemoteBMI.jl/docs/src/client/ RemoteBMI.jl/docs/src/server/ +cp -r julia-client/docs RemoteBMI.jl/docs/src/client/docs +cp -r julia-server/docs RemoteBMI.jl/docs/src/server/ +cp julia-client/README.md RemoteBMI.jl/docs/src/client/ +cp julia-server/README.md RemoteBMI.jl/docs/src/server/ +# Correct links +touch RemoteBMI.jl/docs/src/client/docs/Int64.md +touch RemoteBMI.jl/docs/src/client/docs/Float64.md +touch RemoteBMI.jl/docs/src/server/docs/Int64.md +touch RemoteBMI.jl/docs/src/server/docs/Float64.md ``` \ No newline at end of file diff --git a/RemoteBMI.jl/docs/make.jl b/RemoteBMI.jl/docs/make.jl index 362117b..d4ad64b 100644 --- a/RemoteBMI.jl/docs/make.jl +++ b/RemoteBMI.jl/docs/make.jl @@ -12,10 +12,10 @@ const numbered_pages = [ makedocs(; modules = [RemoteBMI], authors = "", - repo = "https://github.com/eWaterCycle/RemoteBMI.jl/blob/{commit}{path}#{line}", + repo = "https://github.com/eWaterCycle/remotebmi/blob/{commit}{path}#{line}", sitename = "RemoteBMI.jl", - format = Documenter.HTML(; canonical = "https://eWaterCycle.github.io/RemoteBMI.jl"), + format = Documenter.HTML(; canonical = "https://eWaterCycle.github.io/remotebmi/RemoteBMI.jl"), pages = ["index.md"; numbered_pages], ) -deploydocs(; repo = "github.com/eWaterCycle/RemoteBMI.jl") +deploydocs(; repo = "github.com/eWaterCycle/remotebmi", dirname="RemoteBMI.jl") diff --git a/RemoteBMI.jl/docs/src/91-developer.md b/RemoteBMI.jl/docs/src/91-developer.md index c9ff3f5..cfb9612 100644 --- a/RemoteBMI.jl/docs/src/91-developer.md +++ b/RemoteBMI.jl/docs/src/91-developer.md @@ -112,6 +112,15 @@ Here is how you do it: 1. Run `julia> using LiveServer` 1. Run `julia> servedocs()` +Or + +```shell +# Once +julia --project=docs -e ' using Pkg;Pkg.develop(PackageSpec(path=pwd()));Pkg.instantiate()' +# Every time +julia --project=docs -e ' using LiveServer; servedocs()' +``` + ## Making a new release To create a new release, you can follow these simple steps: diff --git a/RemoteBMI.jl/docs/src/95-reference.md b/RemoteBMI.jl/docs/src/95-reference.md index 10df28a..1349e14 100644 --- a/RemoteBMI.jl/docs/src/95-reference.md +++ b/RemoteBMI.jl/docs/src/95-reference.md @@ -12,6 +12,26 @@ Pages = ["95-reference.md"] Pages = ["95-reference.md"] ``` +## Server + +```@autodocs +Modules = [RemoteBMI.Server] +``` + +## Server generated code + +```@autodocs +Modules = [RemoteBMI.Server.BmiServer] +``` + +## Client + +```@autodocs +Modules = [RemoteBMI.Client] +``` + +## Client generated code + ```@autodocs -Modules = [RemoteBMI] +Modules = [RemoteBMI.Client.BmiClient] ``` diff --git a/RemoteBMI.jl/docs/src/client/README.md b/RemoteBMI.jl/docs/src/client/README.md new file mode 100644 index 0000000..13b7ecd --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/README.md @@ -0,0 +1,89 @@ +# Julia API client for BmiClient + +OpenAPI specification for the Basic Modeling Interface (BMI). All functions are described on the [BMI homepage](https://bmi.readthedocs.io/). + + +## Overview +This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. + +- API version: 2.0 +- Generator version: 7.9.0 +- Build package: org.openapitools.codegen.languages.JuliaClientCodegen +For more information, please visit [https://www.ewatercycle.org/contact/](https://www.ewatercycle.org/contact/) + + +## Installation +Place the Julia files generated under the `src` folder in your Julia project. Include BmiClient.jl in the project code. +It would include the module named BmiClient. + +Documentation is generated as markdown files under the `docs` folder. You can include them in your project documentation. +Documentation is also embedded in Julia which can be used with a Julia specific documentation generator. + +## API Endpoints + +Class | Method +------------ | ------------- +*ExchangeItemsApi* | [**get_component_name**](docs/ExchangeItemsApi.md#get_component_name)
**GET** /get_component_name
+*ExchangeItemsApi* | [**get_input_item_count**](docs/ExchangeItemsApi.md#get_input_item_count)
**GET** /get_input_item_count
+*ExchangeItemsApi* | [**get_input_var_names**](docs/ExchangeItemsApi.md#get_input_var_names)
**GET** /get_input_var_names
+*ExchangeItemsApi* | [**get_output_item_count**](docs/ExchangeItemsApi.md#get_output_item_count)
**GET** /get_output_item_count
+*ExchangeItemsApi* | [**get_output_var_names**](docs/ExchangeItemsApi.md#get_output_var_names)
**GET** /get_output_var_names
+*GettersApi* | [**get_value**](docs/GettersApi.md#get_value)
**GET** /get_value/{name}
+*GettersApi* | [**get_value_at_indices**](docs/GettersApi.md#get_value_at_indices)
**POST** /get_value_at_indices/{name}
+*GridInformationApi* | [**get_grid_rank**](docs/GridInformationApi.md#get_grid_rank)
**GET** /get_grid_rank/{grid}
+*GridInformationApi* | [**get_grid_size**](docs/GridInformationApi.md#get_grid_size)
**GET** /get_grid_size/{grid}
+*GridInformationApi* | [**get_grid_type**](docs/GridInformationApi.md#get_grid_type)
**GET** /get_grid_type/{grid}
+*IRFApi* | [**finalize**](docs/IRFApi.md#finalize)
**DELETE** /finalize
+*IRFApi* | [**initialize**](docs/IRFApi.md#initialize)
**POST** /initialize
+*IRFApi* | [**update**](docs/IRFApi.md#update)
**POST** /update
+*IRFApi* | [**update_until**](docs/IRFApi.md#update_until)
**POST** /update_until
+*NURCApi* | [**get_grid_x**](docs/NURCApi.md#get_grid_x)
**GET** /get_grid_x/{grid}
+*NURCApi* | [**get_grid_y**](docs/NURCApi.md#get_grid_y)
**GET** /get_grid_y/{grid}
+*NURCApi* | [**get_grid_z**](docs/NURCApi.md#get_grid_z)
**GET** /get_grid_z/{grid}
+*SettersApi* | [**set_value**](docs/SettersApi.md#set_value)
**POST** /set_value/{name}
+*SettersApi* | [**set_value_at_indices**](docs/SettersApi.md#set_value_at_indices)
**POST** /set_value_at_indices/{name}
+*TimeInformationApi* | [**get_current_time**](docs/TimeInformationApi.md#get_current_time)
**GET** /get_current_time
+*TimeInformationApi* | [**get_end_time**](docs/TimeInformationApi.md#get_end_time)
**GET** /get_end_time
+*TimeInformationApi* | [**get_start_time**](docs/TimeInformationApi.md#get_start_time)
**GET** /get_start_time
+*TimeInformationApi* | [**get_time_step**](docs/TimeInformationApi.md#get_time_step)
**GET** /get_time_step
+*TimeInformationApi* | [**get_time_units**](docs/TimeInformationApi.md#get_time_units)
**GET** /get_time_units
+*UniformRectilinearApi* | [**get_grid_origin**](docs/UniformRectilinearApi.md#get_grid_origin)
**GET** /get_grid_origin/{grid}
+*UniformRectilinearApi* | [**get_grid_shape**](docs/UniformRectilinearApi.md#get_grid_shape)
**GET** /get_grid_shape/{grid}
+*UniformRectilinearApi* | [**get_grid_spacing**](docs/UniformRectilinearApi.md#get_grid_spacing)
**GET** /get_grid_spacing/{grid}
+*UnstructuredApi* | [**get_grid_edge_count**](docs/UnstructuredApi.md#get_grid_edge_count)
**GET** /get_grid_edge_count/{grid}
+*UnstructuredApi* | [**get_grid_edge_nodes**](docs/UnstructuredApi.md#get_grid_edge_nodes)
**GET** /get_grid_edge_nodes/{grid}
+*UnstructuredApi* | [**get_grid_face_count**](docs/UnstructuredApi.md#get_grid_face_count)
**GET** /get_grid_face_count/{grid}
+*UnstructuredApi* | [**get_grid_face_edges**](docs/UnstructuredApi.md#get_grid_face_edges)
**GET** /get_grid_face_edges/{grid}
+*UnstructuredApi* | [**get_grid_face_nodes**](docs/UnstructuredApi.md#get_grid_face_nodes)
**GET** /get_grid_face_nodes/{grid}
+*UnstructuredApi* | [**get_grid_node_count**](docs/UnstructuredApi.md#get_grid_node_count)
**GET** /get_grid_node_count/{grid}
+*UnstructuredApi* | [**get_grid_nodes_per_face**](docs/UnstructuredApi.md#get_grid_nodes_per_face)
**GET** /get_grid_nodes_per_face/{grid}
+*VariableInformationApi* | [**get_var_grid**](docs/VariableInformationApi.md#get_var_grid)
**GET** /get_var_grid/{name}
+*VariableInformationApi* | [**get_var_itemsize**](docs/VariableInformationApi.md#get_var_itemsize)
**GET** /get_var_itemsize/{name}
+*VariableInformationApi* | [**get_var_location**](docs/VariableInformationApi.md#get_var_location)
**GET** /get_var_location/{name}
+*VariableInformationApi* | [**get_var_nbytes**](docs/VariableInformationApi.md#get_var_nbytes)
**GET** /get_var_nbytes/{name}
+*VariableInformationApi* | [**get_var_type**](docs/VariableInformationApi.md#get_var_type)
**GET** /get_var_type/{name}
+*VariableInformationApi* | [**get_var_units**](docs/VariableInformationApi.md#get_var_units)
**GET** /get_var_units/{name}
+ + +## Models + + - [GetComponentNameResponse](docs/GetComponentNameResponse.md) + - [GetGridTypeResponse](docs/GetGridTypeResponse.md) + - [GetTimeUnitsResponse](docs/GetTimeUnitsResponse.md) + - [GetVarLocationResponseLocation](docs/GetVarLocationResponseLocation.md) + - [GetVarTypeResponse](docs/GetVarTypeResponse.md) + - [GetVarUnitsResponse](docs/GetVarUnitsResponse.md) + - [InitializeRequest](docs/InitializeRequest.md) + - [ProblemDetails](docs/ProblemDetails.md) + - [SetValueAtIndicesRequest](docs/SetValueAtIndicesRequest.md) + + + +## Authorization +Endpoints do not require authorization. + + +## Author + + + diff --git a/RemoteBMI.jl/docs/src/client/docs/ExchangeItemsApi.md b/RemoteBMI.jl/docs/src/client/docs/ExchangeItemsApi.md new file mode 100644 index 0000000..1579c7f --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/ExchangeItemsApi.md @@ -0,0 +1,143 @@ +# ExchangeItemsApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_component_name**](ExchangeItemsApi.md#get_component_name) | **GET** /get_component_name | +[**get_input_item_count**](ExchangeItemsApi.md#get_input_item_count) | **GET** /get_input_item_count | +[**get_input_var_names**](ExchangeItemsApi.md#get_input_var_names) | **GET** /get_input_var_names | +[**get_output_item_count**](ExchangeItemsApi.md#get_output_item_count) | **GET** /get_output_item_count | +[**get_output_var_names**](ExchangeItemsApi.md#get_output_var_names) | **GET** /get_output_var_names | + + +# **get_component_name** +> get_component_name(_api::ExchangeItemsApi; _mediaType=nothing) -> GetComponentNameResponse, OpenAPI.Clients.ApiResponse
+> get_component_name(_api::ExchangeItemsApi, response_stream::Channel; _mediaType=nothing) -> Channel{ GetComponentNameResponse }, OpenAPI.Clients.ApiResponse + + + +Get the name of the model component. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +[**GetComponentNameResponse**](GetComponentNameResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_input_item_count** +> get_input_item_count(_api::ExchangeItemsApi; _mediaType=nothing) -> Int64, OpenAPI.Clients.ApiResponse
+> get_input_item_count(_api::ExchangeItemsApi, response_stream::Channel; _mediaType=nothing) -> Channel{ Int64 }, OpenAPI.Clients.ApiResponse + + + +The number of variables the model can use from other models implementing a BMI. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_input_var_names** +> get_input_var_names(_api::ExchangeItemsApi; _mediaType=nothing) -> Vector{String}, OpenAPI.Clients.ApiResponse
+> get_input_var_names(_api::ExchangeItemsApi, response_stream::Channel; _mediaType=nothing) -> Channel{ Vector{String} }, OpenAPI.Clients.ApiResponse + + + +Gets an array of names for the variables the model can use from other models implementing a BMI. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Vector{String}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_output_item_count** +> get_output_item_count(_api::ExchangeItemsApi; _mediaType=nothing) -> Int64, OpenAPI.Clients.ApiResponse
+> get_output_item_count(_api::ExchangeItemsApi, response_stream::Channel; _mediaType=nothing) -> Channel{ Int64 }, OpenAPI.Clients.ApiResponse + + + +The number of variables the model can provide other models implementing a BMI. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_output_var_names** +> get_output_var_names(_api::ExchangeItemsApi; _mediaType=nothing) -> Vector{String}, OpenAPI.Clients.ApiResponse
+> get_output_var_names(_api::ExchangeItemsApi, response_stream::Channel; _mediaType=nothing) -> Channel{ Vector{String} }, OpenAPI.Clients.ApiResponse + + + +Gets an array of names for the variables the model can provide to other models implementing a BMI. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Vector{String}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/client/docs/Float64.md b/RemoteBMI.jl/docs/src/client/docs/Float64.md new file mode 100644 index 0000000..e69de29 diff --git a/RemoteBMI.jl/docs/src/client/docs/GetComponentNameResponse.md b/RemoteBMI.jl/docs/src/client/docs/GetComponentNameResponse.md new file mode 100644 index 0000000..f6376fc --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/GetComponentNameResponse.md @@ -0,0 +1,12 @@ +# GetComponentNameResponse + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/client/docs/GetGridTypeResponse.md b/RemoteBMI.jl/docs/src/client/docs/GetGridTypeResponse.md new file mode 100644 index 0000000..5d5c4af --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/GetGridTypeResponse.md @@ -0,0 +1,12 @@ +# GetGridTypeResponse + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **String** | | [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/client/docs/GetTimeUnitsResponse.md b/RemoteBMI.jl/docs/src/client/docs/GetTimeUnitsResponse.md new file mode 100644 index 0000000..47d7380 --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/GetTimeUnitsResponse.md @@ -0,0 +1,12 @@ +# GetTimeUnitsResponse + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**units** | **String** | | [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/client/docs/GetVarLocationResponseLocation.md b/RemoteBMI.jl/docs/src/client/docs/GetVarLocationResponseLocation.md new file mode 100644 index 0000000..8e3ea5a --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/GetVarLocationResponseLocation.md @@ -0,0 +1,12 @@ +# GetVarLocationResponseLocation + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**location** | **String** | | [default to "node"] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/client/docs/GetVarTypeResponse.md b/RemoteBMI.jl/docs/src/client/docs/GetVarTypeResponse.md new file mode 100644 index 0000000..ab3e1df --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/GetVarTypeResponse.md @@ -0,0 +1,12 @@ +# GetVarTypeResponse + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **String** | | [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/client/docs/GetVarUnitsResponse.md b/RemoteBMI.jl/docs/src/client/docs/GetVarUnitsResponse.md new file mode 100644 index 0000000..7b86ada --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/GetVarUnitsResponse.md @@ -0,0 +1,12 @@ +# GetVarUnitsResponse + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**units** | **String** | | [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/client/docs/GettersApi.md b/RemoteBMI.jl/docs/src/client/docs/GettersApi.md new file mode 100644 index 0000000..604af62 --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/GettersApi.md @@ -0,0 +1,71 @@ +# GettersApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_value**](GettersApi.md#get_value) | **GET** /get_value/{name} | +[**get_value_at_indices**](GettersApi.md#get_value_at_indices) | **POST** /get_value_at_indices/{name} | + + +# **get_value** +> get_value(_api::GettersApi, name::String; _mediaType=nothing) -> Vector{Float64}, OpenAPI.Clients.ApiResponse
+> get_value(_api::GettersApi, response_stream::Channel, name::String; _mediaType=nothing) -> Channel{ Vector{Float64} }, OpenAPI.Clients.ApiResponse + + + +Get the value of a variable. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **GettersApi** | API context | +**name** | **String**| | [default to nothing] + +### Return type + +**Vector{Float64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_value_at_indices** +> get_value_at_indices(_api::GettersApi, name::String, request_body::Vector{Int64}; _mediaType=nothing) -> Vector{Float64}, OpenAPI.Clients.ApiResponse
+> get_value_at_indices(_api::GettersApi, response_stream::Channel, name::String, request_body::Vector{Int64}; _mediaType=nothing) -> Channel{ Vector{Float64} }, OpenAPI.Clients.ApiResponse + + + +Get the value of a variable at specific indices. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **GettersApi** | API context | +**name** | **String**| | [default to nothing] +**request_body** | [**Vector{Int64}**](Int64.md)| | + +### Return type + +**Vector{Float64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/client/docs/GridInformationApi.md b/RemoteBMI.jl/docs/src/client/docs/GridInformationApi.md new file mode 100644 index 0000000..601501d --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/GridInformationApi.md @@ -0,0 +1,101 @@ +# GridInformationApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_grid_rank**](GridInformationApi.md#get_grid_rank) | **GET** /get_grid_rank/{grid} | +[**get_grid_size**](GridInformationApi.md#get_grid_size) | **GET** /get_grid_size/{grid} | +[**get_grid_type**](GridInformationApi.md#get_grid_type) | **GET** /get_grid_type/{grid} | + + +# **get_grid_rank** +> get_grid_rank(_api::GridInformationApi, grid::Int64; _mediaType=nothing) -> Int64, OpenAPI.Clients.ApiResponse
+> get_grid_rank(_api::GridInformationApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Int64 }, OpenAPI.Clients.ApiResponse + + + +Given a grid identifier, get the rank (the number of dimensions) of that grid as an integer. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **GridInformationApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_grid_size** +> get_grid_size(_api::GridInformationApi, grid::Int64; _mediaType=nothing) -> Int64, OpenAPI.Clients.ApiResponse
+> get_grid_size(_api::GridInformationApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Int64 }, OpenAPI.Clients.ApiResponse + + + +Given a grid identifier, get the total number of elements (or nodes) of that grid as an integer. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **GridInformationApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_grid_type** +> get_grid_type(_api::GridInformationApi, grid::Int64; _mediaType=nothing) -> GetGridTypeResponse, OpenAPI.Clients.ApiResponse
+> get_grid_type(_api::GridInformationApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ GetGridTypeResponse }, OpenAPI.Clients.ApiResponse + + + +Given a grid identifier, get the type of that grid as a string. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **GridInformationApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +[**GetGridTypeResponse**](GetGridTypeResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/client/docs/IRFApi.md b/RemoteBMI.jl/docs/src/client/docs/IRFApi.md new file mode 100644 index 0000000..7d1495d --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/IRFApi.md @@ -0,0 +1,124 @@ +# IRFApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**finalize**](IRFApi.md#finalize) | **DELETE** /finalize | +[**initialize**](IRFApi.md#initialize) | **POST** /initialize | +[**update**](IRFApi.md#update) | **POST** /update | +[**update_until**](IRFApi.md#update_until) | **POST** /update_until | + + +# **finalize** +> finalize(_api::IRFApi; _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse
+> finalize(_api::IRFApi, response_stream::Channel; _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse + + + +Performs all tasks that take place after exiting the model’s time loop. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +Nothing + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **initialize** +> initialize(_api::IRFApi, initialize_request::InitializeRequest; _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse
+> initialize(_api::IRFApi, response_stream::Channel, initialize_request::InitializeRequest; _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse + + + +Performs all tasks that are to take place before entering the model’s time loop. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **IRFApi** | API context | +**initialize_request** | [**InitializeRequest**](InitializeRequest.md)| | + +### Return type + +Nothing + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **update** +> update(_api::IRFApi; _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse
+> update(_api::IRFApi, response_stream::Channel; _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse + + + +Advances the model by a single time step. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +Nothing + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **update_until** +> update_until(_api::IRFApi, body::Float64; _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse
+> update_until(_api::IRFApi, response_stream::Channel, body::Float64; _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse + + + +Updates the model to a particular time + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **IRFApi** | API context | +**body** | **Float64**| | + +### Return type + +Nothing + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/client/docs/InitializeRequest.md b/RemoteBMI.jl/docs/src/client/docs/InitializeRequest.md new file mode 100644 index 0000000..5d244be --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/InitializeRequest.md @@ -0,0 +1,12 @@ +# InitializeRequest + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**config_file** | **String** | Path to the configuration file. Should resolvable by web service. | [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/client/docs/Int64.md b/RemoteBMI.jl/docs/src/client/docs/Int64.md new file mode 100644 index 0000000..e69de29 diff --git a/RemoteBMI.jl/docs/src/client/docs/NURCApi.md b/RemoteBMI.jl/docs/src/client/docs/NURCApi.md new file mode 100644 index 0000000..19540b4 --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/NURCApi.md @@ -0,0 +1,101 @@ +# NURCApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_grid_x**](NURCApi.md#get_grid_x) | **GET** /get_grid_x/{grid} | +[**get_grid_y**](NURCApi.md#get_grid_y) | **GET** /get_grid_y/{grid} | +[**get_grid_z**](NURCApi.md#get_grid_z) | **GET** /get_grid_z/{grid} | + + +# **get_grid_x** +> get_grid_x(_api::NURCApi, grid::Int64; _mediaType=nothing) -> Vector{Float64}, OpenAPI.Clients.ApiResponse
+> get_grid_x(_api::NURCApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Vector{Float64} }, OpenAPI.Clients.ApiResponse + + + +Get the locations of the grid nodes in the first coordinate direction. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **NURCApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Float64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_grid_y** +> get_grid_y(_api::NURCApi, grid::Int64; _mediaType=nothing) -> Vector{Float64}, OpenAPI.Clients.ApiResponse
+> get_grid_y(_api::NURCApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Vector{Float64} }, OpenAPI.Clients.ApiResponse + + + +Get the locations of the grid nodes in the second coordinate direction. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **NURCApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Float64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_grid_z** +> get_grid_z(_api::NURCApi, grid::Int64; _mediaType=nothing) -> Vector{Float64}, OpenAPI.Clients.ApiResponse
+> get_grid_z(_api::NURCApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Vector{Float64} }, OpenAPI.Clients.ApiResponse + + + +Get the locations of the grid nodes in the third coordinate direction. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **NURCApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Float64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/client/docs/ProblemDetails.md b/RemoteBMI.jl/docs/src/client/docs/ProblemDetails.md new file mode 100644 index 0000000..08a4b16 --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/ProblemDetails.md @@ -0,0 +1,16 @@ +# ProblemDetails + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **String** | A URI reference that identifies the problem type. | [optional] [default to nothing] +**title** | **String** | A short, human-readable summary of the problem type. | [optional] [default to nothing] +**status** | **Int64** | The HTTP status code generated by the origin server for this occurrence of the problem. | [optional] [default to nothing] +**detail** | **String** | A human-readable explanation specific to this occurrence of the problem. | [optional] [default to nothing] +**instance** | **String** | A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. | [optional] [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/client/docs/SetValueAtIndicesRequest.md b/RemoteBMI.jl/docs/src/client/docs/SetValueAtIndicesRequest.md new file mode 100644 index 0000000..6f8903d --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/SetValueAtIndicesRequest.md @@ -0,0 +1,13 @@ +# SetValueAtIndicesRequest + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**indices** | **Vector{Int64}** | | [default to nothing] +**values** | **Vector{Float64}** | | [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/client/docs/SettersApi.md b/RemoteBMI.jl/docs/src/client/docs/SettersApi.md new file mode 100644 index 0000000..731abe7 --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/SettersApi.md @@ -0,0 +1,72 @@ +# SettersApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**set_value**](SettersApi.md#set_value) | **POST** /set_value/{name} | +[**set_value_at_indices**](SettersApi.md#set_value_at_indices) | **POST** /set_value_at_indices/{name} | + + +# **set_value** +> set_value(_api::SettersApi, name::String, request_body::Vector{Float64}; _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse
+> set_value(_api::SettersApi, response_stream::Channel, name::String, request_body::Vector{Float64}; _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse + + + +Set the value of a variable. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **SettersApi** | API context | +**name** | **String**| | [default to nothing] +**request_body** | [**Vector{Float64}**](Float64.md)| | + +### Return type + +Nothing + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **set_value_at_indices** +> set_value_at_indices(_api::SettersApi, name::String, set_value_at_indices_request::SetValueAtIndicesRequest; _mediaType=nothing) -> Nothing, OpenAPI.Clients.ApiResponse
+> set_value_at_indices(_api::SettersApi, response_stream::Channel, name::String, set_value_at_indices_request::SetValueAtIndicesRequest; _mediaType=nothing) -> Channel{ Nothing }, OpenAPI.Clients.ApiResponse + + + +Set the value of a variable at specific indices. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **SettersApi** | API context | +**name** | **String**| | [default to nothing] +**set_value_at_indices_request** | [**SetValueAtIndicesRequest**](SetValueAtIndicesRequest.md)| | + +### Return type + +Nothing + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/client/docs/TimeInformationApi.md b/RemoteBMI.jl/docs/src/client/docs/TimeInformationApi.md new file mode 100644 index 0000000..6b7b009 --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/TimeInformationApi.md @@ -0,0 +1,143 @@ +# TimeInformationApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_current_time**](TimeInformationApi.md#get_current_time) | **GET** /get_current_time | +[**get_end_time**](TimeInformationApi.md#get_end_time) | **GET** /get_end_time | +[**get_start_time**](TimeInformationApi.md#get_start_time) | **GET** /get_start_time | +[**get_time_step**](TimeInformationApi.md#get_time_step) | **GET** /get_time_step | +[**get_time_units**](TimeInformationApi.md#get_time_units) | **GET** /get_time_units | + + +# **get_current_time** +> get_current_time(_api::TimeInformationApi; _mediaType=nothing) -> Float64, OpenAPI.Clients.ApiResponse
+> get_current_time(_api::TimeInformationApi, response_stream::Channel; _mediaType=nothing) -> Channel{ Float64 }, OpenAPI.Clients.ApiResponse + + + +The current model time. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Float64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_end_time** +> get_end_time(_api::TimeInformationApi; _mediaType=nothing) -> Float64, OpenAPI.Clients.ApiResponse
+> get_end_time(_api::TimeInformationApi, response_stream::Channel; _mediaType=nothing) -> Channel{ Float64 }, OpenAPI.Clients.ApiResponse + + + +The end time of the model. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Float64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_start_time** +> get_start_time(_api::TimeInformationApi; _mediaType=nothing) -> Float64, OpenAPI.Clients.ApiResponse
+> get_start_time(_api::TimeInformationApi, response_stream::Channel; _mediaType=nothing) -> Channel{ Float64 }, OpenAPI.Clients.ApiResponse + + + +The start time of the model. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Float64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_time_step** +> get_time_step(_api::TimeInformationApi; _mediaType=nothing) -> Float64, OpenAPI.Clients.ApiResponse
+> get_time_step(_api::TimeInformationApi, response_stream::Channel; _mediaType=nothing) -> Channel{ Float64 }, OpenAPI.Clients.ApiResponse + + + +Get the time step used in the model. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Float64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_time_units** +> get_time_units(_api::TimeInformationApi; _mediaType=nothing) -> GetTimeUnitsResponse, OpenAPI.Clients.ApiResponse
+> get_time_units(_api::TimeInformationApi, response_stream::Channel; _mediaType=nothing) -> Channel{ GetTimeUnitsResponse }, OpenAPI.Clients.ApiResponse + + + +Get the units of time as reported by the model’s BMI. If model has absolute start time, you can use `since` format, see [cfconventions](https://cfconventions.org/cf-conventions/cf-conventions#time-coordinate). + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +[**GetTimeUnitsResponse**](GetTimeUnitsResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/client/docs/UniformRectilinearApi.md b/RemoteBMI.jl/docs/src/client/docs/UniformRectilinearApi.md new file mode 100644 index 0000000..45dd637 --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/UniformRectilinearApi.md @@ -0,0 +1,101 @@ +# UniformRectilinearApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_grid_origin**](UniformRectilinearApi.md#get_grid_origin) | **GET** /get_grid_origin/{grid} | +[**get_grid_shape**](UniformRectilinearApi.md#get_grid_shape) | **GET** /get_grid_shape/{grid} | +[**get_grid_spacing**](UniformRectilinearApi.md#get_grid_spacing) | **GET** /get_grid_spacing/{grid} | + + +# **get_grid_origin** +> get_grid_origin(_api::UniformRectilinearApi, grid::Int64; _mediaType=nothing) -> Vector{Float64}, OpenAPI.Clients.ApiResponse
+> get_grid_origin(_api::UniformRectilinearApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Vector{Float64} }, OpenAPI.Clients.ApiResponse + + + +Get the coordinates of the lower-left corner of the model grid. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **UniformRectilinearApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Float64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_grid_shape** +> get_grid_shape(_api::UniformRectilinearApi, grid::Int64; _mediaType=nothing) -> Vector{Int64}, OpenAPI.Clients.ApiResponse
+> get_grid_shape(_api::UniformRectilinearApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Vector{Int64} }, OpenAPI.Clients.ApiResponse + + + +Get the dimensions of the model grid. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **UniformRectilinearApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Int64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_grid_spacing** +> get_grid_spacing(_api::UniformRectilinearApi, grid::Int64; _mediaType=nothing) -> Vector{Float64}, OpenAPI.Clients.ApiResponse
+> get_grid_spacing(_api::UniformRectilinearApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Vector{Float64} }, OpenAPI.Clients.ApiResponse + + + +Get the distance between the nodes of the model grid. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **UniformRectilinearApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Float64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/client/docs/UnstructuredApi.md b/RemoteBMI.jl/docs/src/client/docs/UnstructuredApi.md new file mode 100644 index 0000000..97aa4b6 --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/UnstructuredApi.md @@ -0,0 +1,225 @@ +# UnstructuredApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_grid_edge_count**](UnstructuredApi.md#get_grid_edge_count) | **GET** /get_grid_edge_count/{grid} | +[**get_grid_edge_nodes**](UnstructuredApi.md#get_grid_edge_nodes) | **GET** /get_grid_edge_nodes/{grid} | +[**get_grid_face_count**](UnstructuredApi.md#get_grid_face_count) | **GET** /get_grid_face_count/{grid} | +[**get_grid_face_edges**](UnstructuredApi.md#get_grid_face_edges) | **GET** /get_grid_face_edges/{grid} | +[**get_grid_face_nodes**](UnstructuredApi.md#get_grid_face_nodes) | **GET** /get_grid_face_nodes/{grid} | +[**get_grid_node_count**](UnstructuredApi.md#get_grid_node_count) | **GET** /get_grid_node_count/{grid} | +[**get_grid_nodes_per_face**](UnstructuredApi.md#get_grid_nodes_per_face) | **GET** /get_grid_nodes_per_face/{grid} | + + +# **get_grid_edge_count** +> get_grid_edge_count(_api::UnstructuredApi, grid::Int64; _mediaType=nothing) -> Int64, OpenAPI.Clients.ApiResponse
+> get_grid_edge_count(_api::UnstructuredApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Int64 }, OpenAPI.Clients.ApiResponse + + + +Get the number of edges in the grid. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **UnstructuredApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_grid_edge_nodes** +> get_grid_edge_nodes(_api::UnstructuredApi, grid::Int64; _mediaType=nothing) -> Vector{Int64}, OpenAPI.Clients.ApiResponse
+> get_grid_edge_nodes(_api::UnstructuredApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Vector{Int64} }, OpenAPI.Clients.ApiResponse + + + +Get the edge-node connectivity. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **UnstructuredApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Int64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_grid_face_count** +> get_grid_face_count(_api::UnstructuredApi, grid::Int64; _mediaType=nothing) -> Int64, OpenAPI.Clients.ApiResponse
+> get_grid_face_count(_api::UnstructuredApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Int64 }, OpenAPI.Clients.ApiResponse + + + +Get the face-node connectivity. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **UnstructuredApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_grid_face_edges** +> get_grid_face_edges(_api::UnstructuredApi, grid::Int64; _mediaType=nothing) -> Vector{Int64}, OpenAPI.Clients.ApiResponse
+> get_grid_face_edges(_api::UnstructuredApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Vector{Int64} }, OpenAPI.Clients.ApiResponse + + + +Get the face-edge connectivity. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **UnstructuredApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Int64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_grid_face_nodes** +> get_grid_face_nodes(_api::UnstructuredApi, grid::Int64; _mediaType=nothing) -> Vector{Int64}, OpenAPI.Clients.ApiResponse
+> get_grid_face_nodes(_api::UnstructuredApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Vector{Int64} }, OpenAPI.Clients.ApiResponse + + + +Get the face-node connectivity. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **UnstructuredApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Int64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_grid_node_count** +> get_grid_node_count(_api::UnstructuredApi, grid::Int64; _mediaType=nothing) -> Int64, OpenAPI.Clients.ApiResponse
+> get_grid_node_count(_api::UnstructuredApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Int64 }, OpenAPI.Clients.ApiResponse + + + +Get the number of nodes in the grid. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **UnstructuredApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_grid_nodes_per_face** +> get_grid_nodes_per_face(_api::UnstructuredApi, grid::Int64; _mediaType=nothing) -> Vector{Int64}, OpenAPI.Clients.ApiResponse
+> get_grid_nodes_per_face(_api::UnstructuredApi, response_stream::Channel, grid::Int64; _mediaType=nothing) -> Channel{ Vector{Int64} }, OpenAPI.Clients.ApiResponse + + + +Get the number of nodes for each face. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **UnstructuredApi** | API context | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Int64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/client/docs/VariableInformationApi.md b/RemoteBMI.jl/docs/src/client/docs/VariableInformationApi.md new file mode 100644 index 0000000..ac6eed2 --- /dev/null +++ b/RemoteBMI.jl/docs/src/client/docs/VariableInformationApi.md @@ -0,0 +1,194 @@ +# VariableInformationApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_var_grid**](VariableInformationApi.md#get_var_grid) | **GET** /get_var_grid/{name} | +[**get_var_itemsize**](VariableInformationApi.md#get_var_itemsize) | **GET** /get_var_itemsize/{name} | +[**get_var_location**](VariableInformationApi.md#get_var_location) | **GET** /get_var_location/{name} | +[**get_var_nbytes**](VariableInformationApi.md#get_var_nbytes) | **GET** /get_var_nbytes/{name} | +[**get_var_type**](VariableInformationApi.md#get_var_type) | **GET** /get_var_type/{name} | +[**get_var_units**](VariableInformationApi.md#get_var_units) | **GET** /get_var_units/{name} | + + +# **get_var_grid** +> get_var_grid(_api::VariableInformationApi, name::String; _mediaType=nothing) -> Int64, OpenAPI.Clients.ApiResponse
+> get_var_grid(_api::VariableInformationApi, response_stream::Channel, name::String; _mediaType=nothing) -> Channel{ Int64 }, OpenAPI.Clients.ApiResponse + + + +Each input and output variable is defined on a grid. This function returns the grid identifier for a given variable. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **VariableInformationApi** | API context | +**name** | **String**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_var_itemsize** +> get_var_itemsize(_api::VariableInformationApi, name::String; _mediaType=nothing) -> Int64, OpenAPI.Clients.ApiResponse
+> get_var_itemsize(_api::VariableInformationApi, response_stream::Channel, name::String; _mediaType=nothing) -> Channel{ Int64 }, OpenAPI.Clients.ApiResponse + + + +Provides the size, in bytes, of a single element of the variable. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **VariableInformationApi** | API context | +**name** | **String**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_var_location** +> get_var_location(_api::VariableInformationApi, name::String; _mediaType=nothing) -> GetVarLocationResponseLocation, OpenAPI.Clients.ApiResponse
+> get_var_location(_api::VariableInformationApi, response_stream::Channel, name::String; _mediaType=nothing) -> Channel{ GetVarLocationResponseLocation }, OpenAPI.Clients.ApiResponse + + + +Indicates on what grid element the variable is defined. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **VariableInformationApi** | API context | +**name** | **String**| | [default to nothing] + +### Return type + +[**GetVarLocationResponseLocation**](GetVarLocationResponseLocation.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_var_nbytes** +> get_var_nbytes(_api::VariableInformationApi, name::String; _mediaType=nothing) -> Int64, OpenAPI.Clients.ApiResponse
+> get_var_nbytes(_api::VariableInformationApi, response_stream::Channel, name::String; _mediaType=nothing) -> Channel{ Int64 }, OpenAPI.Clients.ApiResponse + + + +Provides the total amount of memory used to store a variable; i.e., the number of items multiplied by the size of each item. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **VariableInformationApi** | API context | +**name** | **String**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_var_type** +> get_var_type(_api::VariableInformationApi, name::String; _mediaType=nothing) -> GetVarTypeResponse, OpenAPI.Clients.ApiResponse
+> get_var_type(_api::VariableInformationApi, response_stream::Channel, name::String; _mediaType=nothing) -> Channel{ GetVarTypeResponse }, OpenAPI.Clients.ApiResponse + + + +Provides the data type of the variable. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **VariableInformationApi** | API context | +**name** | **String**| | [default to nothing] + +### Return type + +[**GetVarTypeResponse**](GetVarTypeResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + +# **get_var_units** +> get_var_units(_api::VariableInformationApi, name::String; _mediaType=nothing) -> GetVarUnitsResponse, OpenAPI.Clients.ApiResponse
+> get_var_units(_api::VariableInformationApi, response_stream::Channel, name::String; _mediaType=nothing) -> Channel{ GetVarUnitsResponse }, OpenAPI.Clients.ApiResponse + + + +Get the units of the given variable. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **_api** | **VariableInformationApi** | API context | +**name** | **String**| | [default to nothing] + +### Return type + +[**GetVarUnitsResponse**](GetVarUnitsResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/generated.md b/RemoteBMI.jl/docs/src/generated.md new file mode 100644 index 0000000..ba55184 --- /dev/null +++ b/RemoteBMI.jl/docs/src/generated.md @@ -0,0 +1,7 @@ +# OpenAPI + +Documentation generated by OpenAPI Generator. + +```@contents +Pages = ["client/README.md", "server/README.md"] +``` \ No newline at end of file diff --git a/RemoteBMI.jl/docs/src/index.md b/RemoteBMI.jl/docs/src/index.md index 33388cb..1349853 100644 --- a/RemoteBMI.jl/docs/src/index.md +++ b/RemoteBMI.jl/docs/src/index.md @@ -2,7 +2,13 @@ CurrentModule = RemoteBMI ``` -# RemoteBMI +# RemoteBMI.jl Documentation -Documentation for [RemoteBMI](https://github.com/eWaterCycle/RemoteBMI.jl). +The [Basic Model Interface (BMI)](https://bmi.readthedocs.io/en/stable/) is a standard interface for models. +To have a consumer of the model and the provider of the model seperated you can use REST API. +This package provides a BMI http client and server. + +```@autodocs +Modules = [RemoteBMI] +``` diff --git a/RemoteBMI.jl/docs/src/server/README.md b/RemoteBMI.jl/docs/src/server/README.md new file mode 100644 index 0000000..59fd1ef --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/README.md @@ -0,0 +1,107 @@ +# Julia API server for BmiServer + +OpenAPI specification for the Basic Modeling Interface (BMI). All functions are described on the [BMI homepage](https://bmi.readthedocs.io/). + + +## Overview +This API server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using the [openapi-spec](https://openapis.org) from a remote server, you can easily generate an API client. + +- API version: 2.0 +- Generator version: 7.9.0 +- Build package: org.openapitools.codegen.languages.JuliaServerCodegen +For more information, please visit [https://www.ewatercycle.org/contact/](https://www.ewatercycle.org/contact/) + + +## Installation +Place the Julia files generated under the `src` folder in your Julia project. Include BmiServer.jl in the project code. +It would include the module named BmiServer. + +Implement the server methods as listed below. They are also documented with the BmiServer module. +Launch a HTTP server with a router that has all handlers registered. A `register` method is provided in BmiServer module for convenience. + +```julia +register( + router::HTTP.Router, # Router to register handlers in + impl; # Module that implements the server methods + path_prefix::String="", # Prefix to be applied to all paths + optional_middlewares... # Optional middlewares to be applied to all handlers +) +``` + +Optional middlewares can be one or more of: +- `init`: called before the request is processed +- `pre_validation`: called after the request is parsed but before validation +- `pre_invoke`: called after validation but before the handler is invoked +- `post_invoke`: called after the handler is invoked but before the response is sent + +The order in which middlewares are invoked are: +`init |> read |> pre_validation |> validate |> pre_invoke |> invoke |> post_invoke` + + +## API Endpoints + +The following server methods must be implemented: + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*ExchangeItemsApi* | [**get_component_name**](docs/ExchangeItemsApi.md#get_component_name) | **GET** /get_component_name | +*ExchangeItemsApi* | [**get_input_item_count**](docs/ExchangeItemsApi.md#get_input_item_count) | **GET** /get_input_item_count | +*ExchangeItemsApi* | [**get_input_var_names**](docs/ExchangeItemsApi.md#get_input_var_names) | **GET** /get_input_var_names | +*ExchangeItemsApi* | [**get_output_item_count**](docs/ExchangeItemsApi.md#get_output_item_count) | **GET** /get_output_item_count | +*ExchangeItemsApi* | [**get_output_var_names**](docs/ExchangeItemsApi.md#get_output_var_names) | **GET** /get_output_var_names | +*GettersApi* | [**get_value**](docs/GettersApi.md#get_value) | **GET** /get_value/{name} | +*GettersApi* | [**get_value_at_indices**](docs/GettersApi.md#get_value_at_indices) | **POST** /get_value_at_indices/{name} | +*GridInformationApi* | [**get_grid_rank**](docs/GridInformationApi.md#get_grid_rank) | **GET** /get_grid_rank/{grid} | +*GridInformationApi* | [**get_grid_size**](docs/GridInformationApi.md#get_grid_size) | **GET** /get_grid_size/{grid} | +*GridInformationApi* | [**get_grid_type**](docs/GridInformationApi.md#get_grid_type) | **GET** /get_grid_type/{grid} | +*IRFApi* | [**finalize**](docs/IRFApi.md#finalize) | **DELETE** /finalize | +*IRFApi* | [**initialize**](docs/IRFApi.md#initialize) | **POST** /initialize | +*IRFApi* | [**update**](docs/IRFApi.md#update) | **POST** /update | +*IRFApi* | [**update_until**](docs/IRFApi.md#update_until) | **POST** /update_until | +*NURCApi* | [**get_grid_x**](docs/NURCApi.md#get_grid_x) | **GET** /get_grid_x/{grid} | +*NURCApi* | [**get_grid_y**](docs/NURCApi.md#get_grid_y) | **GET** /get_grid_y/{grid} | +*NURCApi* | [**get_grid_z**](docs/NURCApi.md#get_grid_z) | **GET** /get_grid_z/{grid} | +*SettersApi* | [**set_value**](docs/SettersApi.md#set_value) | **POST** /set_value/{name} | +*SettersApi* | [**set_value_at_indices**](docs/SettersApi.md#set_value_at_indices) | **POST** /set_value_at_indices/{name} | +*TimeInformationApi* | [**get_current_time**](docs/TimeInformationApi.md#get_current_time) | **GET** /get_current_time | +*TimeInformationApi* | [**get_end_time**](docs/TimeInformationApi.md#get_end_time) | **GET** /get_end_time | +*TimeInformationApi* | [**get_start_time**](docs/TimeInformationApi.md#get_start_time) | **GET** /get_start_time | +*TimeInformationApi* | [**get_time_step**](docs/TimeInformationApi.md#get_time_step) | **GET** /get_time_step | +*TimeInformationApi* | [**get_time_units**](docs/TimeInformationApi.md#get_time_units) | **GET** /get_time_units | +*UniformRectilinearApi* | [**get_grid_origin**](docs/UniformRectilinearApi.md#get_grid_origin) | **GET** /get_grid_origin/{grid} | +*UniformRectilinearApi* | [**get_grid_shape**](docs/UniformRectilinearApi.md#get_grid_shape) | **GET** /get_grid_shape/{grid} | +*UniformRectilinearApi* | [**get_grid_spacing**](docs/UniformRectilinearApi.md#get_grid_spacing) | **GET** /get_grid_spacing/{grid} | +*UnstructuredApi* | [**get_grid_edge_count**](docs/UnstructuredApi.md#get_grid_edge_count) | **GET** /get_grid_edge_count/{grid} | +*UnstructuredApi* | [**get_grid_edge_nodes**](docs/UnstructuredApi.md#get_grid_edge_nodes) | **GET** /get_grid_edge_nodes/{grid} | +*UnstructuredApi* | [**get_grid_face_count**](docs/UnstructuredApi.md#get_grid_face_count) | **GET** /get_grid_face_count/{grid} | +*UnstructuredApi* | [**get_grid_face_edges**](docs/UnstructuredApi.md#get_grid_face_edges) | **GET** /get_grid_face_edges/{grid} | +*UnstructuredApi* | [**get_grid_face_nodes**](docs/UnstructuredApi.md#get_grid_face_nodes) | **GET** /get_grid_face_nodes/{grid} | +*UnstructuredApi* | [**get_grid_node_count**](docs/UnstructuredApi.md#get_grid_node_count) | **GET** /get_grid_node_count/{grid} | +*UnstructuredApi* | [**get_grid_nodes_per_face**](docs/UnstructuredApi.md#get_grid_nodes_per_face) | **GET** /get_grid_nodes_per_face/{grid} | +*VariableInformationApi* | [**get_var_grid**](docs/VariableInformationApi.md#get_var_grid) | **GET** /get_var_grid/{name} | +*VariableInformationApi* | [**get_var_itemsize**](docs/VariableInformationApi.md#get_var_itemsize) | **GET** /get_var_itemsize/{name} | +*VariableInformationApi* | [**get_var_location**](docs/VariableInformationApi.md#get_var_location) | **GET** /get_var_location/{name} | +*VariableInformationApi* | [**get_var_nbytes**](docs/VariableInformationApi.md#get_var_nbytes) | **GET** /get_var_nbytes/{name} | +*VariableInformationApi* | [**get_var_type**](docs/VariableInformationApi.md#get_var_type) | **GET** /get_var_type/{name} | +*VariableInformationApi* | [**get_var_units**](docs/VariableInformationApi.md#get_var_units) | **GET** /get_var_units/{name} | + + + +## Models + + - [GetComponentNameResponse](docs/GetComponentNameResponse.md) + - [GetGridTypeResponse](docs/GetGridTypeResponse.md) + - [GetTimeUnitsResponse](docs/GetTimeUnitsResponse.md) + - [GetVarLocationResponseLocation](docs/GetVarLocationResponseLocation.md) + - [GetVarTypeResponse](docs/GetVarTypeResponse.md) + - [GetVarUnitsResponse](docs/GetVarUnitsResponse.md) + - [InitializeRequest](docs/InitializeRequest.md) + - [ProblemDetails](docs/ProblemDetails.md) + - [SetValueAtIndicesRequest](docs/SetValueAtIndicesRequest.md) + + + +## Author + + + diff --git a/RemoteBMI.jl/docs/src/server/docs/ExchangeItemsApi.md b/RemoteBMI.jl/docs/src/server/docs/ExchangeItemsApi.md new file mode 100644 index 0000000..b397bc7 --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/ExchangeItemsApi.md @@ -0,0 +1,138 @@ +# ExchangeItemsApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_component_name**](ExchangeItemsApi.md#get_component_name) | **GET** /get_component_name | +[**get_input_item_count**](ExchangeItemsApi.md#get_input_item_count) | **GET** /get_input_item_count | +[**get_input_var_names**](ExchangeItemsApi.md#get_input_var_names) | **GET** /get_input_var_names | +[**get_output_item_count**](ExchangeItemsApi.md#get_output_item_count) | **GET** /get_output_item_count | +[**get_output_var_names**](ExchangeItemsApi.md#get_output_var_names) | **GET** /get_output_var_names | + + +# **get_component_name** +> get_component_name(req::HTTP.Request;) -> GetComponentNameResponse + + + +Get the name of the model component. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +[**GetComponentNameResponse**](GetComponentNameResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_input_item_count** +> get_input_item_count(req::HTTP.Request;) -> Int64 + + + +The number of variables the model can use from other models implementing a BMI. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_input_var_names** +> get_input_var_names(req::HTTP.Request;) -> Vector{String} + + + +Gets an array of names for the variables the model can use from other models implementing a BMI. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Vector{String}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_output_item_count** +> get_output_item_count(req::HTTP.Request;) -> Int64 + + + +The number of variables the model can provide other models implementing a BMI. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_output_var_names** +> get_output_var_names(req::HTTP.Request;) -> Vector{String} + + + +Gets an array of names for the variables the model can provide to other models implementing a BMI. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Vector{String}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/server/docs/Float64.md b/RemoteBMI.jl/docs/src/server/docs/Float64.md new file mode 100644 index 0000000..e69de29 diff --git a/RemoteBMI.jl/docs/src/server/docs/GetComponentNameResponse.md b/RemoteBMI.jl/docs/src/server/docs/GetComponentNameResponse.md new file mode 100644 index 0000000..f6376fc --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/GetComponentNameResponse.md @@ -0,0 +1,12 @@ +# GetComponentNameResponse + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**name** | **String** | | [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/server/docs/GetGridTypeResponse.md b/RemoteBMI.jl/docs/src/server/docs/GetGridTypeResponse.md new file mode 100644 index 0000000..5d5c4af --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/GetGridTypeResponse.md @@ -0,0 +1,12 @@ +# GetGridTypeResponse + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **String** | | [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/server/docs/GetTimeUnitsResponse.md b/RemoteBMI.jl/docs/src/server/docs/GetTimeUnitsResponse.md new file mode 100644 index 0000000..47d7380 --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/GetTimeUnitsResponse.md @@ -0,0 +1,12 @@ +# GetTimeUnitsResponse + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**units** | **String** | | [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/server/docs/GetVarLocationResponseLocation.md b/RemoteBMI.jl/docs/src/server/docs/GetVarLocationResponseLocation.md new file mode 100644 index 0000000..8e3ea5a --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/GetVarLocationResponseLocation.md @@ -0,0 +1,12 @@ +# GetVarLocationResponseLocation + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**location** | **String** | | [default to "node"] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/server/docs/GetVarTypeResponse.md b/RemoteBMI.jl/docs/src/server/docs/GetVarTypeResponse.md new file mode 100644 index 0000000..ab3e1df --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/GetVarTypeResponse.md @@ -0,0 +1,12 @@ +# GetVarTypeResponse + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **String** | | [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/server/docs/GetVarUnitsResponse.md b/RemoteBMI.jl/docs/src/server/docs/GetVarUnitsResponse.md new file mode 100644 index 0000000..7b86ada --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/GetVarUnitsResponse.md @@ -0,0 +1,12 @@ +# GetVarUnitsResponse + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**units** | **String** | | [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/server/docs/GettersApi.md b/RemoteBMI.jl/docs/src/server/docs/GettersApi.md new file mode 100644 index 0000000..20972fb --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/GettersApi.md @@ -0,0 +1,69 @@ +# GettersApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_value**](GettersApi.md#get_value) | **GET** /get_value/{name} | +[**get_value_at_indices**](GettersApi.md#get_value_at_indices) | **POST** /get_value_at_indices/{name} | + + +# **get_value** +> get_value(req::HTTP.Request, name::String;) -> Vector{Float64} + + + +Get the value of a variable. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**name** | **String**| | [default to nothing] + +### Return type + +**Vector{Float64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_value_at_indices** +> get_value_at_indices(req::HTTP.Request, name::String, request_body::Vector{Int64};) -> Vector{Float64} + + + +Get the value of a variable at specific indices. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**name** | **String**| | [default to nothing] +**request_body** | [**Vector{Int64}**](Int64.md)| | + +### Return type + +**Vector{Float64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/server/docs/GridInformationApi.md b/RemoteBMI.jl/docs/src/server/docs/GridInformationApi.md new file mode 100644 index 0000000..e97d3ac --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/GridInformationApi.md @@ -0,0 +1,98 @@ +# GridInformationApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_grid_rank**](GridInformationApi.md#get_grid_rank) | **GET** /get_grid_rank/{grid} | +[**get_grid_size**](GridInformationApi.md#get_grid_size) | **GET** /get_grid_size/{grid} | +[**get_grid_type**](GridInformationApi.md#get_grid_type) | **GET** /get_grid_type/{grid} | + + +# **get_grid_rank** +> get_grid_rank(req::HTTP.Request, grid::Int64;) -> Int64 + + + +Given a grid identifier, get the rank (the number of dimensions) of that grid as an integer. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_grid_size** +> get_grid_size(req::HTTP.Request, grid::Int64;) -> Int64 + + + +Given a grid identifier, get the total number of elements (or nodes) of that grid as an integer. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_grid_type** +> get_grid_type(req::HTTP.Request, grid::Int64;) -> GetGridTypeResponse + + + +Given a grid identifier, get the type of that grid as a string. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +[**GetGridTypeResponse**](GetGridTypeResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/server/docs/IRFApi.md b/RemoteBMI.jl/docs/src/server/docs/IRFApi.md new file mode 100644 index 0000000..218d5aa --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/IRFApi.md @@ -0,0 +1,120 @@ +# IRFApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**finalize**](IRFApi.md#finalize) | **DELETE** /finalize | +[**initialize**](IRFApi.md#initialize) | **POST** /initialize | +[**update**](IRFApi.md#update) | **POST** /update | +[**update_until**](IRFApi.md#update_until) | **POST** /update_until | + + +# **finalize** +> finalize(req::HTTP.Request;) -> Nothing + + + +Performs all tasks that take place after exiting the model’s time loop. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +Nothing + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **initialize** +> initialize(req::HTTP.Request, initialize_request::InitializeRequest;) -> Nothing + + + +Performs all tasks that are to take place before entering the model’s time loop. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**initialize_request** | [**InitializeRequest**](InitializeRequest.md)| | + +### Return type + +Nothing + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update** +> update(req::HTTP.Request;) -> Nothing + + + +Advances the model by a single time step. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +Nothing + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **update_until** +> update_until(req::HTTP.Request, body::Float64;) -> Nothing + + + +Updates the model to a particular time + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**body** | **Float64**| | + +### Return type + +Nothing + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/server/docs/InitializeRequest.md b/RemoteBMI.jl/docs/src/server/docs/InitializeRequest.md new file mode 100644 index 0000000..5d244be --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/InitializeRequest.md @@ -0,0 +1,12 @@ +# InitializeRequest + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**config_file** | **String** | Path to the configuration file. Should resolvable by web service. | [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/server/docs/Int64.md b/RemoteBMI.jl/docs/src/server/docs/Int64.md new file mode 100644 index 0000000..e69de29 diff --git a/RemoteBMI.jl/docs/src/server/docs/NURCApi.md b/RemoteBMI.jl/docs/src/server/docs/NURCApi.md new file mode 100644 index 0000000..c380ffa --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/NURCApi.md @@ -0,0 +1,98 @@ +# NURCApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_grid_x**](NURCApi.md#get_grid_x) | **GET** /get_grid_x/{grid} | +[**get_grid_y**](NURCApi.md#get_grid_y) | **GET** /get_grid_y/{grid} | +[**get_grid_z**](NURCApi.md#get_grid_z) | **GET** /get_grid_z/{grid} | + + +# **get_grid_x** +> get_grid_x(req::HTTP.Request, grid::Int64;) -> Vector{Float64} + + + +Get the locations of the grid nodes in the first coordinate direction. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Float64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_grid_y** +> get_grid_y(req::HTTP.Request, grid::Int64;) -> Vector{Float64} + + + +Get the locations of the grid nodes in the second coordinate direction. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Float64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_grid_z** +> get_grid_z(req::HTTP.Request, grid::Int64;) -> Vector{Float64} + + + +Get the locations of the grid nodes in the third coordinate direction. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Float64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/server/docs/ProblemDetails.md b/RemoteBMI.jl/docs/src/server/docs/ProblemDetails.md new file mode 100644 index 0000000..08a4b16 --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/ProblemDetails.md @@ -0,0 +1,16 @@ +# ProblemDetails + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**type** | **String** | A URI reference that identifies the problem type. | [optional] [default to nothing] +**title** | **String** | A short, human-readable summary of the problem type. | [optional] [default to nothing] +**status** | **Int64** | The HTTP status code generated by the origin server for this occurrence of the problem. | [optional] [default to nothing] +**detail** | **String** | A human-readable explanation specific to this occurrence of the problem. | [optional] [default to nothing] +**instance** | **String** | A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. | [optional] [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/server/docs/SetValueAtIndicesRequest.md b/RemoteBMI.jl/docs/src/server/docs/SetValueAtIndicesRequest.md new file mode 100644 index 0000000..6f8903d --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/SetValueAtIndicesRequest.md @@ -0,0 +1,13 @@ +# SetValueAtIndicesRequest + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**indices** | **Vector{Int64}** | | [default to nothing] +**values** | **Vector{Float64}** | | [default to nothing] + + +[[Back to Model list]](../README.md#models) [[Back to API list]](../README.md#api-endpoints) [[Back to README]](../README.md) + + diff --git a/RemoteBMI.jl/docs/src/server/docs/SettersApi.md b/RemoteBMI.jl/docs/src/server/docs/SettersApi.md new file mode 100644 index 0000000..d5c1b71 --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/SettersApi.md @@ -0,0 +1,70 @@ +# SettersApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**set_value**](SettersApi.md#set_value) | **POST** /set_value/{name} | +[**set_value_at_indices**](SettersApi.md#set_value_at_indices) | **POST** /set_value_at_indices/{name} | + + +# **set_value** +> set_value(req::HTTP.Request, name::String, request_body::Vector{Float64};) -> Nothing + + + +Set the value of a variable. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**name** | **String**| | [default to nothing] +**request_body** | [**Vector{Float64}**](Float64.md)| | + +### Return type + +Nothing + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **set_value_at_indices** +> set_value_at_indices(req::HTTP.Request, name::String, set_value_at_indices_request::SetValueAtIndicesRequest;) -> Nothing + + + +Set the value of a variable at specific indices. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**name** | **String**| | [default to nothing] +**set_value_at_indices_request** | [**SetValueAtIndicesRequest**](SetValueAtIndicesRequest.md)| | + +### Return type + +Nothing + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/server/docs/TimeInformationApi.md b/RemoteBMI.jl/docs/src/server/docs/TimeInformationApi.md new file mode 100644 index 0000000..1a50daf --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/TimeInformationApi.md @@ -0,0 +1,138 @@ +# TimeInformationApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_current_time**](TimeInformationApi.md#get_current_time) | **GET** /get_current_time | +[**get_end_time**](TimeInformationApi.md#get_end_time) | **GET** /get_end_time | +[**get_start_time**](TimeInformationApi.md#get_start_time) | **GET** /get_start_time | +[**get_time_step**](TimeInformationApi.md#get_time_step) | **GET** /get_time_step | +[**get_time_units**](TimeInformationApi.md#get_time_units) | **GET** /get_time_units | + + +# **get_current_time** +> get_current_time(req::HTTP.Request;) -> Float64 + + + +The current model time. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Float64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_end_time** +> get_end_time(req::HTTP.Request;) -> Float64 + + + +The end time of the model. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Float64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_start_time** +> get_start_time(req::HTTP.Request;) -> Float64 + + + +The start time of the model. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Float64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_time_step** +> get_time_step(req::HTTP.Request;) -> Float64 + + + +Get the time step used in the model. + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +**Float64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_time_units** +> get_time_units(req::HTTP.Request;) -> GetTimeUnitsResponse + + + +Get the units of time as reported by the model’s BMI. If model has absolute start time, you can use `since` format, see [cfconventions](https://cfconventions.org/cf-conventions/cf-conventions#time-coordinate). + +### Required Parameters +This endpoint does not need any parameter. + +### Return type + +[**GetTimeUnitsResponse**](GetTimeUnitsResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/server/docs/UniformRectilinearApi.md b/RemoteBMI.jl/docs/src/server/docs/UniformRectilinearApi.md new file mode 100644 index 0000000..39c600a --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/UniformRectilinearApi.md @@ -0,0 +1,98 @@ +# UniformRectilinearApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_grid_origin**](UniformRectilinearApi.md#get_grid_origin) | **GET** /get_grid_origin/{grid} | +[**get_grid_shape**](UniformRectilinearApi.md#get_grid_shape) | **GET** /get_grid_shape/{grid} | +[**get_grid_spacing**](UniformRectilinearApi.md#get_grid_spacing) | **GET** /get_grid_spacing/{grid} | + + +# **get_grid_origin** +> get_grid_origin(req::HTTP.Request, grid::Int64;) -> Vector{Float64} + + + +Get the coordinates of the lower-left corner of the model grid. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Float64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_grid_shape** +> get_grid_shape(req::HTTP.Request, grid::Int64;) -> Vector{Int64} + + + +Get the dimensions of the model grid. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Int64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_grid_spacing** +> get_grid_spacing(req::HTTP.Request, grid::Int64;) -> Vector{Float64} + + + +Get the distance between the nodes of the model grid. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Float64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/server/docs/UnstructuredApi.md b/RemoteBMI.jl/docs/src/server/docs/UnstructuredApi.md new file mode 100644 index 0000000..b872731 --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/UnstructuredApi.md @@ -0,0 +1,218 @@ +# UnstructuredApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_grid_edge_count**](UnstructuredApi.md#get_grid_edge_count) | **GET** /get_grid_edge_count/{grid} | +[**get_grid_edge_nodes**](UnstructuredApi.md#get_grid_edge_nodes) | **GET** /get_grid_edge_nodes/{grid} | +[**get_grid_face_count**](UnstructuredApi.md#get_grid_face_count) | **GET** /get_grid_face_count/{grid} | +[**get_grid_face_edges**](UnstructuredApi.md#get_grid_face_edges) | **GET** /get_grid_face_edges/{grid} | +[**get_grid_face_nodes**](UnstructuredApi.md#get_grid_face_nodes) | **GET** /get_grid_face_nodes/{grid} | +[**get_grid_node_count**](UnstructuredApi.md#get_grid_node_count) | **GET** /get_grid_node_count/{grid} | +[**get_grid_nodes_per_face**](UnstructuredApi.md#get_grid_nodes_per_face) | **GET** /get_grid_nodes_per_face/{grid} | + + +# **get_grid_edge_count** +> get_grid_edge_count(req::HTTP.Request, grid::Int64;) -> Int64 + + + +Get the number of edges in the grid. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_grid_edge_nodes** +> get_grid_edge_nodes(req::HTTP.Request, grid::Int64;) -> Vector{Int64} + + + +Get the edge-node connectivity. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Int64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_grid_face_count** +> get_grid_face_count(req::HTTP.Request, grid::Int64;) -> Int64 + + + +Get the face-node connectivity. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_grid_face_edges** +> get_grid_face_edges(req::HTTP.Request, grid::Int64;) -> Vector{Int64} + + + +Get the face-edge connectivity. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Int64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_grid_face_nodes** +> get_grid_face_nodes(req::HTTP.Request, grid::Int64;) -> Vector{Int64} + + + +Get the face-node connectivity. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Int64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_grid_node_count** +> get_grid_node_count(req::HTTP.Request, grid::Int64;) -> Int64 + + + +Get the number of nodes in the grid. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_grid_nodes_per_face** +> get_grid_nodes_per_face(req::HTTP.Request, grid::Int64;) -> Vector{Int64} + + + +Get the number of nodes for each face. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**grid** | **Int64**| | [default to nothing] + +### Return type + +**Vector{Int64}** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/docs/src/server/docs/VariableInformationApi.md b/RemoteBMI.jl/docs/src/server/docs/VariableInformationApi.md new file mode 100644 index 0000000..a93ea38 --- /dev/null +++ b/RemoteBMI.jl/docs/src/server/docs/VariableInformationApi.md @@ -0,0 +1,188 @@ +# VariableInformationApi + +All URIs are relative to *http://localhost:50051* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**get_var_grid**](VariableInformationApi.md#get_var_grid) | **GET** /get_var_grid/{name} | +[**get_var_itemsize**](VariableInformationApi.md#get_var_itemsize) | **GET** /get_var_itemsize/{name} | +[**get_var_location**](VariableInformationApi.md#get_var_location) | **GET** /get_var_location/{name} | +[**get_var_nbytes**](VariableInformationApi.md#get_var_nbytes) | **GET** /get_var_nbytes/{name} | +[**get_var_type**](VariableInformationApi.md#get_var_type) | **GET** /get_var_type/{name} | +[**get_var_units**](VariableInformationApi.md#get_var_units) | **GET** /get_var_units/{name} | + + +# **get_var_grid** +> get_var_grid(req::HTTP.Request, name::String;) -> Int64 + + + +Each input and output variable is defined on a grid. This function returns the grid identifier for a given variable. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**name** | **String**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_var_itemsize** +> get_var_itemsize(req::HTTP.Request, name::String;) -> Int64 + + + +Provides the size, in bytes, of a single element of the variable. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**name** | **String**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_var_location** +> get_var_location(req::HTTP.Request, name::String;) -> GetVarLocationResponseLocation + + + +Indicates on what grid element the variable is defined. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**name** | **String**| | [default to nothing] + +### Return type + +[**GetVarLocationResponseLocation**](GetVarLocationResponseLocation.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_var_nbytes** +> get_var_nbytes(req::HTTP.Request, name::String;) -> Int64 + + + +Provides the total amount of memory used to store a variable; i.e., the number of items multiplied by the size of each item. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**name** | **String**| | [default to nothing] + +### Return type + +**Int64** + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_var_type** +> get_var_type(req::HTTP.Request, name::String;) -> GetVarTypeResponse + + + +Provides the data type of the variable. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**name** | **String**| | [default to nothing] + +### Return type + +[**GetVarTypeResponse**](GetVarTypeResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **get_var_units** +> get_var_units(req::HTTP.Request, name::String;) -> GetVarUnitsResponse + + + +Get the units of the given variable. + +### Required Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **req** | **HTTP.Request** | The HTTP Request object | +**name** | **String**| | [default to nothing] + +### Return type + +[**GetVarUnitsResponse**](GetVarUnitsResponse.md) + +### Authorization + +No authorization required + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/RemoteBMI.jl/src/Client.jl b/RemoteBMI.jl/src/Client.jl index 1daf8fd..a6832d6 100644 --- a/RemoteBMI.jl/src/Client.jl +++ b/RemoteBMI.jl/src/Client.jl @@ -9,6 +9,8 @@ using .BmiClient import BasicModelInterface as BMI +# TODO document BMIClient in doc site + Base.@kwdef mutable struct BMIClient base_url::String end diff --git a/RemoteBMI.jl/src/Server.jl b/RemoteBMI.jl/src/Server.jl index a4be26e..8220b3e 100644 --- a/RemoteBMI.jl/src/Server.jl +++ b/RemoteBMI.jl/src/Server.jl @@ -146,6 +146,7 @@ end function set_value(req::HTTP.Request, name::String, request_body::Vector{Float64};)::Nothing BMI.set_value(m, name, request_body) + return nothing end function set_value_at_indices( @@ -156,7 +157,8 @@ function set_value_at_indices( # OpenAPI request is zero-based, while Julia is one-based jindexes = set_value_at_indices_request.indices .+ 1 src = set_value_at_indices_request.values - BMI.set_value_at_indices(m, name, src, jindexes) + BMI.set_value_at_indices(m, name, jindexes, src) + return Nothing end function get_current_time(req::HTTP.Request;)::Float64 diff --git a/RemoteBMI.jl/test/fake.jl b/RemoteBMI.jl/test/fake.jl index 56ea212..e19a3a7 100644 --- a/RemoteBMI.jl/test/fake.jl +++ b/RemoteBMI.jl/test/fake.jl @@ -65,8 +65,8 @@ end function BMI.set_value_at_indices( m::Model, name::String, - src::Vector{T}, indices::Vector{Int}, + src::Vector{T}, ) where {T <: AbstractFloat} m.values[indices] .= src return nothing diff --git a/python/remotebmi/client/client.py b/python/remotebmi/client/client.py index 3355bd2..e4c4406 100644 --- a/python/remotebmi/client/client.py +++ b/python/remotebmi/client/client.py @@ -1,3 +1,5 @@ +from urllib.parse import urlparse + import numpy as np from bmipy import Bmi from httpx import Client, Limits @@ -13,7 +15,20 @@ def __init__(self, base_url, timeout=60 * 60 * 24, max_keepalive_connections=0): timeout: How long a response can take. Defaults to 1 day. Set to None to disable timeout. max_keepalive_connections: How many connections to keep alive. + + Raises: + ValueError: If the base_url is invalid. """ + parsed_url = urlparse(base_url) + if not all( + [ + parsed_url.scheme, + parsed_url.netloc, + parsed_url.scheme in ["http", "https"], + ] + ): + msg = f"Invalid base_url: {base_url}" + raise ValueError(msg) # In some Python environments the reusing connection causes `illegal status line: bytesarray(b'14')` error # So we need to disable keepalive connections to be more reliable, but less efficient limits = Limits(max_keepalive_connections=max_keepalive_connections)