Skip to content

Commit 79ed9ee

Browse files
authored
Add automatic generation from openapi spec (#156)
1 parent 74774ed commit 79ed9ee

File tree

4 files changed

+232
-0
lines changed

4 files changed

+232
-0
lines changed

.github/convert_gitbook.py

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import sys
2+
import yaml
3+
4+
def main():
5+
if len(sys.argv) < 3:
6+
print("Please provide a filename and version as arguments")
7+
sys.exit(1)
8+
filename = sys.argv[1]
9+
version = sys.argv[2]
10+
process_yaml(filename, version)
11+
12+
13+
def process_yaml(yaml_file, version):
14+
tags = {}
15+
with open(yaml_file, 'r') as f:
16+
data = yaml.safe_load(f)
17+
for path, methods in data['paths'].items():
18+
for method, method_object in methods.items():
19+
if method not in ['get', 'post', 'delete', 'put', 'head']:
20+
continue
21+
generated_entry = generate_gitbook(path, method, version)
22+
tag = method_object['tags'][0]
23+
if tag not in tags:
24+
tags[tag] = [generated_entry]
25+
else:
26+
tags[tag].append(generated_entry)
27+
print_all(tags)
28+
29+
def generate_gitbook(path, method, version):
30+
url = f'https://raw.githubusercontent.com/terminusdb/terminusdb/{version}/docs/openapi.yaml'
31+
return f'''
32+
{{% swagger src="{url}" path="{path}" method="{method}" %}}
33+
[{url}]({url})
34+
{{% endswagger %}}
35+
36+
'''
37+
38+
39+
def print_all(tags):
40+
print("# HTTP API\n")
41+
for tag, values in tags.items():
42+
print(f"## {tag}")
43+
for entry in values:
44+
print(entry)
45+
46+
47+
if __name__ == '__main__':
48+
main()

.github/workflows/update-from-terminusdb.yml

+3
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ jobs:
4444
npm test -- $SRC/system_schema.json $DST/system-schema.md
4545
working-directory: terminusdb-docs/.github/jsonToMDConverter
4646

47+
- name: Update GitBook files
48+
run: python3 terminusdb-docs/.github/convert_gitbook.py terminusdb/docs/openapi.yaml "${{ github.event.client_payload.sha }}" > terminusdb-docs/readme/terminusx-db/reference-guides/openapi.md
49+
4750
- name: Commit changes
4851
uses: stefanzweifel/git-auto-commit-action@v4
4952
with:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
# HTTP API
2+
3+
## Connection
4+
5+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/" method="get" %}
6+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
7+
{% endswagger %}
8+
9+
10+
11+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/info" method="get" %}
12+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
13+
{% endswagger %}
14+
15+
16+
17+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/ok" method="get" %}
18+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
19+
{% endswagger %}
20+
21+
22+
## Database
23+
24+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/db/" method="get" %}
25+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
26+
{% endswagger %}
27+
28+
29+
30+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/db/{organization}/{database}" method="get" %}
31+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
32+
{% endswagger %}
33+
34+
35+
36+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/db/{organization}/{database}" method="head" %}
37+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
38+
{% endswagger %}
39+
40+
41+
42+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/db/{organization}/{database}" method="post" %}
43+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
44+
{% endswagger %}
45+
46+
47+
48+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/db/{organization}/{database}" method="delete" %}
49+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
50+
{% endswagger %}
51+
52+
53+
54+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/db/{organization}/{database}" method="put" %}
55+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
56+
{% endswagger %}
57+
58+
59+
## Document
60+
61+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/document/{path}" method="get" %}
62+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
63+
{% endswagger %}
64+
65+
66+
67+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/document/{path}" method="post" %}
68+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
69+
{% endswagger %}
70+
71+
72+
73+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/document/{path}" method="delete" %}
74+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
75+
{% endswagger %}
76+
77+
78+
79+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/document/{path}" method="put" %}
80+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
81+
{% endswagger %}
82+
83+
84+
## Frame
85+
86+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/schema" method="get" %}
87+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
88+
{% endswagger %}
89+
90+
91+
## WOQL
92+
93+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/woql" method="post" %}
94+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
95+
{% endswagger %}
96+
97+
98+
99+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/woql/{path}" method="post" %}
100+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
101+
{% endswagger %}
102+
103+
104+
## Collaboration
105+
106+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/clone/{organization}/{database}" method="post" %}
107+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
108+
{% endswagger %}
109+
110+
111+
112+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/fetch/{path}" method="post" %}
113+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
114+
{% endswagger %}
115+
116+
117+
118+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/push/{path}" method="post" %}
119+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
120+
{% endswagger %}
121+
122+
123+
124+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/pull/{path}" method="post" %}
125+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
126+
{% endswagger %}
127+
128+
129+
## Branches
130+
131+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/branch/{path}" method="post" %}
132+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
133+
{% endswagger %}
134+
135+
136+
137+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/branch/{path}" method="delete" %}
138+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
139+
{% endswagger %}
140+
141+
142+
143+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/squash/{path}" method="get" %}
144+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
145+
{% endswagger %}
146+
147+
148+
149+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/reset/{path}" method="post" %}
150+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
151+
{% endswagger %}
152+
153+
154+
## Optimize
155+
156+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/optimize/{path}" method="post" %}
157+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
158+
{% endswagger %}
159+
160+
161+
## Prefixes
162+
163+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/prefixes/{path}" method="get" %}
164+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
165+
{% endswagger %}
166+
167+
168+
## Change management
169+
170+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/diff" method="post" %}
171+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
172+
{% endswagger %}
173+
174+
175+
176+
{% swagger src="https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml" path="/patch" method="post" %}
177+
[https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml](https://raw.githubusercontent.com/terminusdb/terminusdb/main/docs/openapi.yaml)
178+
{% endswagger %}
179+
180+

summary.md

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
* [CURL Reference](readme/terminusx-db/reference-guides/curl.md)
4040
* [Document Interface](readme/terminusx-db/reference-guides/document-interface.md)
4141
* [HTTP API Reference](readme/terminusx-db/reference-guides/http-api.md)
42+
* [OpenAPI Reference](readme/terminusx-db/reference-guides/openapi.md)
4243
* [Schema Reference](readme/terminusx-db/reference-guides/schema.md)
4344
* [TerminusDB Store](readme/terminusx-db/reference-guides/terminus-store.md)
4445
* [TerminusDB Data Types](index/terminusx-db/reference-guides/terminusdb-data-types.md)

0 commit comments

Comments
 (0)