-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add the start of the swagger documentation for the HELICS REST API #2289
Changes from all commits
21337ca
b1540b6
682ec5b
519bbd9
3530b3e
db3774f
51a31f9
068d71c
11c52d2
c3d0696
ded62ea
ea6a411
773ee3e
b16359d
1206f35
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# REST Queries API | ||
|
||
The latest generated REST Queries API docs can be found at [https://docs.helics.org/en/latest/references/api-reference/rest_queries_api.html](https://docs.helics.org/en/latest/references/api-reference/rest_queries_api.html) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# HELICS-api | ||
|
||
The Documentation for the REST API and JSON interfaces for HELICS |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
title: BrokerCreation | ||
type: object | ||
properties: | ||
type: | ||
type: string | ||
description: the HELICS core type to use when creating a broker | ||
CoreType: | ||
type: string | ||
description: same as type | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't know what "same as type" means. |
||
core_type: | ||
type: string | ||
description: same as type | ||
args: | ||
type: string | ||
description: extra command line arguments for the broker | ||
num_feds: | ||
type: number | ||
num_brokers: | ||
type: number | ||
port: | ||
type: string | ||
host: | ||
type: string | ||
interface: | ||
type: string | ||
description: same as host | ||
log_level: | ||
type: string | ||
description: helics logging level to use on the broker | ||
uuid: | ||
type: string | ||
description: the uuid to use for the broker | ||
broker_uuid: | ||
type: string | ||
description: the uuid to use for the broker |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
title: CoreConfig | ||
type: object | ||
properties: | ||
autobroker: | ||
type: boolean | ||
localport: | ||
type: string | ||
debugging: | ||
type: boolean | ||
observer: | ||
type: boolean | ||
json: | ||
type: boolean | ||
profiler: | ||
type: boolean | ||
brokerkey: | ||
type: string | ||
brokerinitstring: | ||
type: string | ||
description: File configuration for the CoreConfiguration |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
title: FederateConfig | ||
$ref: "" | ||
description: "" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
title: FederateInfo | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is going to be a beast, right? So many options to support or do we have a better way? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. All the specific options that are not flags are listed already. I will probably expand this later to include the flags. |
||
type: object | ||
properties: | ||
name: | ||
type: string | ||
core: | ||
type: string | ||
force_new_core: | ||
type: boolean | ||
coretype: | ||
type: string | ||
corename: | ||
type: string | ||
coreinitstring: | ||
type: string | ||
offset: | ||
type: | ||
- string | ||
- number | ||
period: | ||
type: | ||
- string | ||
- number | ||
timedelta: | ||
type: | ||
- string | ||
- number | ||
rtlag: | ||
type: | ||
- string | ||
- number | ||
rtlead: | ||
type: | ||
- string | ||
- number | ||
rttolerance: | ||
type: | ||
- string | ||
- number | ||
inputdelay: | ||
type: | ||
- string | ||
- number | ||
outputdelay: | ||
type: | ||
- string | ||
- number | ||
granttimeout: | ||
type: | ||
- string | ||
- number | ||
maxiteration: | ||
type: integer | ||
loglevel: | ||
type: string | ||
separator: | ||
type: string | ||
flags: | ||
type: string | ||
description: Properties applying to the federate and its creation |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
title: Filter | ||
description: Configuration for a Filter | ||
allOf: | ||
- type: object | ||
properties: | ||
name: | ||
type: string | ||
inputType: | ||
type: string | ||
outputType: | ||
type: string | ||
cloning: | ||
type: boolean | ||
operation: | ||
type: string | ||
delivery: | ||
type: string | ||
sourcetargets: | ||
type: | ||
- string | ||
- array | ||
items: | ||
type: string | ||
destinationtargets: | ||
type: | ||
- string | ||
- array | ||
items: | ||
type: string | ||
properties: | ||
oneOf: | ||
- type: array | ||
items: | ||
type: object | ||
properties: | ||
name: | ||
type: string | ||
value: | ||
type: | ||
- string | ||
- number | ||
required: | ||
- name | ||
- value | ||
- type: object | ||
properties: | ||
name: | ||
type: string | ||
value: | ||
type: | ||
- string | ||
- number | ||
required: | ||
- name | ||
- value | ||
- $ref: ./interfaceOptions.yaml |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
title: FilterOptions | ||
description: Configuration options for a filter | ||
anyOf: | ||
- type: object | ||
properties: | ||
flags: | ||
type: | ||
- string | ||
- array | ||
items: | ||
type: string | ||
"": | ||
type: string | ||
- $ref: ./interfaceOptions.yaml |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
title: Publication | ||
type: object | ||
properties: | ||
id: | ||
type: string | ||
description: Configuration for a HELICS publication |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
title: address_query | ||
type: string | ||
description: return the connection address for the query target |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
description: Common information shared across many responses | ||
type: object | ||
x-examples: | ||
example-1: | ||
name: string | ||
id: 1 | ||
parent: 0 | ||
properties: | ||
name: | ||
type: string | ||
minLength: 1 | ||
uuid: | ||
type: string | ||
minLength: 1 | ||
description: If the object is defined as uuid like it will contain the uuid as a field | ||
id: | ||
type: number | ||
parent: | ||
type: number | ||
description: All objects except root broker will have a parent | ||
required: | ||
- name | ||
- id | ||
examples: | ||
- name: string | ||
uuid: string | ||
id: 0 | ||
parent: 0 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
title: base_status_info | ||
type: object | ||
properties: | ||
id: | ||
type: integer | ||
"": | ||
type: string | ||
state: | ||
type: string | ||
required: | ||
- id | ||
- "" | ||
- state |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
title: brokers_query | ||
type: array | ||
description: return a list of the children brokers for a target | ||
items: | ||
type: string |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
description: return counts of the objects and interfaces under an object | ||
type: object | ||
x-examples: | ||
example-1: | ||
name: object_name | ||
parent: 1 | ||
brokers: 3 | ||
federates: 4 | ||
countable_federates: 3 | ||
interfaces: 34 | ||
examples: | ||
- name: string | ||
id: 1 | ||
parent: 0 | ||
brokers: 0 | ||
federates: 0 | ||
countable_federates: 0 | ||
interfaces: 0 | ||
title: "" | ||
properties: | ||
brokers: | ||
type: number | ||
federates: | ||
type: number | ||
countable_federates: | ||
type: number | ||
interfaces: | ||
type: number | ||
object: | ||
$ref: ./base_response.yaml | ||
required: | ||
- brokers | ||
- federates | ||
- countable_federates | ||
- interfaces | ||
- object |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
title: current_state_query | ||
type: object | ||
properties: | ||
object: | ||
$ref: ./base_response.yaml | ||
state: | ||
type: string | ||
status: | ||
type: boolean | ||
federates: | ||
type: array | ||
items: | ||
$ref: ./base_status_info.yaml | ||
cores: | ||
type: array | ||
items: | ||
$ref: ./base_status_info.yaml | ||
brokers: | ||
type: array | ||
items: | ||
$ref: ./base_status_info.yaml |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
title: current_time_query | ||
type: object | ||
properties: | ||
id: | ||
type: string |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
title: data_flow_graph_query | ||
type: object | ||
properties: | ||
object: | ||
$ref: ./base_response.yaml | ||
brokers: | ||
type: array | ||
items: | ||
$ref: ./data_flow_graph_query.yaml | ||
cores: | ||
type: array | ||
items: | ||
$ref: ./data_flow_graph_query.yaml | ||
federates: | ||
type: array | ||
items: | ||
$ref: ./data_flow_graph_query.yaml |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
title: dependencies_query | ||
type: object | ||
properties: | ||
object: | ||
$ref: ./base_response.yaml | ||
dependents: | ||
type: array | ||
items: | ||
type: integer | ||
dependencies: | ||
type: array | ||
items: | ||
type: integer |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it would be better to generate this in the "top-level"
swagger
folder, similar to how the generateddoxygen
stuff is under adoxygen
folder rather than nested under references/api-references.And then also add a directive to RTD saying to include the contents of the
swagger
folder so that all the yaml/json specs and model files are copied to the website. Using a separate top-level "swagger" folder for the generated swagger docs should also help prevent accidentally including all of the raw markdown folders in the published RTD site.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nightlark, If you think you know how to get this working, be my guest. I'm kind of guessing at how to get all the pathing right.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I need to look into the redoc settings, but I think the original pathing and generated swagger files were fine. The two issues I think for why it didn't work are:
swagger
folder with model yaml files be included in the deployed site; embed is set to True for redoc, so it stores a copy of queries.yaml in the generated api page but the stored copy has paths referring to the other yaml files which aren't included on the RTD siteI'll see if I can try to get it working later today or tonight, if it isn't already working.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll rollback to the an earlier version and try just turning
embed
off.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do think the
swagger
folder needs to end up in theapi-reference
folder but we can tweak that once we get things working.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The swagger folder doesn't need to end up in
api-reference
(we'll treat it the same as we do the doxygen folder).https://github.com/GMLC-TDC/HELICS/blob/swagger/docs/conf.py#L104
I think changing this line from:
to:
should make so that the swagger folder gets included in the deployed site.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From my (current) understanding of how redoc works, it looks like reverting the changes back to commit ded62ea, making the
html_extra_path
change, and turningembed
off could work.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, this link still returns a 404. I'll see if I come up with any other great ideas.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah -- it looks like https://docs.helics.org/en/swagger/swagger/models/Filter.yaml doesn't exist, so I think it didn't copy the folder. Might be that the absolute path to the swagger folder needs to be given instead to make RTD include it... or relative paths are to something like the repository root instead rather than the docs subfolder.
Another interesting observation from your link, it looks like turning off embed makes it look for the specs in some _specs folder. Kinda strange.