From 0fc11bfd79c5cbbaa329a722c8fccf4dfdb619fa Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Fri, 22 Apr 2022 17:36:55 +0200 Subject: [PATCH] Added endpoint doc to wiki --- .gitignore | 2 + Makefile | 7 + docs/contact.md | 16 + docs/images/dia_architecture.png | Bin 0 -> 143384 bytes docs/index.md | 13 +- docs/operation/authentication.md | 2449 ++++++++++++++ docs/operation/container.md | 2902 +++++++++++++++++ docs/operation/database.md | 2320 +++++++++++++ docs/operation/identifier.md | 3623 +++++++++++++++++++++ docs/{operation.md => operation/index.md} | 7 - docs/operation/query.md | 1014 ++++++ docs/system.md | 94 + misc/api-authentication.yaml | 688 ++++ misc/api-container.yaml | 1075 ++++++ misc/api-database.yaml | 707 ++++ misc/api-identifier.yaml | 870 +++++ misc/api-query.yaml | 814 +++++ misc/diagrams.drawio | 1 + misc/env.json | 9 + mkdocs.yml | 15 +- package.json | 12 + yarn.lock | 1270 ++++++++ 22 files changed, 17889 insertions(+), 19 deletions(-) create mode 100644 docs/contact.md create mode 100644 docs/images/dia_architecture.png create mode 100644 docs/operation/authentication.md create mode 100644 docs/operation/container.md create mode 100644 docs/operation/database.md create mode 100644 docs/operation/identifier.md rename docs/{operation.md => operation/index.md} (88%) create mode 100644 docs/operation/query.md create mode 100644 misc/api-authentication.yaml create mode 100644 misc/api-container.yaml create mode 100644 misc/api-database.yaml create mode 100644 misc/api-identifier.yaml create mode 100644 misc/api-query.yaml create mode 100644 misc/diagrams.drawio create mode 100644 misc/env.json create mode 100644 package.json create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index a427659..92b71ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ ## Generated site/ +node_modules/ +*.bkp ## Core latex/pdflatex auxiliary files: *.aux diff --git a/Makefile b/Makefile index 6af6393..0ec51d0 100644 --- a/Makefile +++ b/Makefile @@ -8,5 +8,12 @@ build: run: build docker-compose up +docs: + widdershins --environment ./misc/env.json ./misc/api-authentication.yaml -o ./docs/operation/authentication.md + widdershins --environment ./misc/env.json ./misc/api-container.yaml -o ./docs/operation/container.md + widdershins --environment ./misc/env.json ./misc/api-database.yaml -o ./docs/operation/database.md + widdershins --environment ./misc/env.json ./misc/api-identifier.yaml -o ./docs/operation/identifier.md + widdershins --environment ./misc/env.json ./misc/api-query.yaml -o ./docs/operation/query.md + deploy: run sudo cp -r ./site/* /usr/share/nginx/html/ \ No newline at end of file diff --git a/docs/contact.md b/docs/contact.md new file mode 100644 index 0000000..43b9870 --- /dev/null +++ b/docs/contact.md @@ -0,0 +1,16 @@ +--- +hide: + +- navigation + +--- + +# Contact + +Ao.Univ.Prof. Dipl.-Ing. Dr.techn. Andreas Rauber<br /> +[Technische Universität Wien](https://ror.org/04d836q62)<br /> +[Information and Software Engineering Group](https://informatics.tuwien.ac.at/orgs/e194-01)<br /> +Favoritenstraße 9-11<br /> +A-1040 Vienna, Austria + +Mail: [andreas.rauber@tuwien.ac.at](mailto:andreas.rauber@tuwien.ac.at) \ No newline at end of file diff --git a/docs/images/dia_architecture.png b/docs/images/dia_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8834ca8e13f7c1a43e50885aa0f3201ea27043 GIT binary patch literal 143384 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�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 literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index f9a337f..756d9a1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -14,16 +14,17 @@ databases accessible in their collection. Challenges revolve around organizing, within databases and constitute a major technical burden as their internal representation greatly differs from static documents most digital repositories are designed for. +[Get Started](/getting-started){ .action-button .md-button .md-button--primary } + ## Application Areas We present a database repository system that allows researchers to ingest data into a central, versioned repository through common interfaces, provides efficient access to arbitrary subsets of data even when the underlying data store is evolving, allows reproducing of query results and supports findable-, accessible-, interoperable- and reusable data. -[Get Started](/getting-started){ .action-button .md-button .md-button--primary } [PDF](/pdf/document.pdf){ .action-button .md-button .md-button--secondary } - -## Demo - -Public demonstration instance [https://dbrepo.ossdip.at](https://dbrepo.ossdip.at) +## More Information - \ No newline at end of file +- This documentation can be downloaded as [PDF](/pdf/document.pdf) +- Public demonstration instance [https://dbrepo.ossdip.at](https://dbrepo.ossdip.at) +- Join our [mailing list](https://lists.univie.ac.at/mailman/listinfo/fairdata_dbrepo) to receive bi-monthly updates + about the progress, new features and events! \ No newline at end of file diff --git a/docs/operation/authentication.md b/docs/operation/authentication.md new file mode 100644 index 0000000..ffba93f --- /dev/null +++ b/docs/operation/authentication.md @@ -0,0 +1,2449 @@ +--- +title: Database Repository Authentication Service API v1.1.0-alpha +language_tabs: + - python: Python + - java: Java +toc_footers: + - <a + href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/wikis">Wiki + Documentation</a> +includes: [] +search: true +highlight_theme: darkula +headingLevel: 2 + +--- + +<!-- Generator: Widdershins v4.0.1 --> + +<h1 id="database-repository-authentication-service-api">Database Repository Authentication Service API v1.1.0-alpha</h1> + +> Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu. + +Service that manages the authentication + +Base URLs: + +* <a href="http://localhost:9097">http://localhost:9097</a> + +Email: <a href="mailto:andreas.rauber@tuwien.ac.at">Prof. Andreas Rauber</a> +License: <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a> + +# Authentication + +- HTTP Authentication, scheme: bearer + +<h1 id="database-repository-authentication-service-api-authentication-endpoint">authentication-endpoint</h1> + +## authenticateUser + +<a id="opIdauthenticateUser"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.put('http://localhost:9097/api/auth', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9097/api/auth"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("PUT"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`PUT /api/auth` + +*Validate token* + +> Example responses + +> 200 Response + +<h3 id="authenticateuser-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[UserDto](#schemauserdto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| +|417|[Expectation Failed](https://tools.ietf.org/html/rfc7231#section-6.5.14)|Expectation Failed|[ApiErrorDto](#schemaapierrordto)| + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +## authenticateUser_1 + +<a id="opIdauthenticateUser_1"></a> + +> Code samples + +```python +import requests +headers = { + 'Content-Type': 'application/json', + 'Accept': '*/*' +} + +r = requests.post('http://localhost:9097/api/auth', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9097/api/auth"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("POST"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`POST /api/auth` + +*Create token* + +> Body parameter + +```json +{ + "username": "string", + "password": "string" +} +``` + +<h3 id="authenticateuser_1-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|body|body|[LoginRequestDto](#schemaloginrequestdto)|true|none| + +> Example responses + +> 200 Response + +<h3 id="authenticateuser_1-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[JwtResponseDto](#schemajwtresponsedto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| +|417|[Expectation Failed](https://tools.ietf.org/html/rfc7231#section-6.5.14)|Expectation Failed|[ApiErrorDto](#schemaapierrordto)| + +<aside class="success"> +This operation does not require authentication +</aside> + +<h1 id="database-repository-authentication-service-api-user-endpoint">user-endpoint</h1> + +## list + +<a id="opIdlist"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.get('http://localhost:9097/api/user', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9097/api/user"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`GET /api/user` + +*List users* + +> Example responses + +> 200 Response + +<h3 id="list-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| +|417|[Expectation Failed](https://tools.ietf.org/html/rfc7231#section-6.5.14)|Expectation Failed|[ApiErrorDto](#schemaapierrordto)| + +<h3 id="list-responseschema">Response Schema</h3> + +Status Code **200** + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|*anonymous*|[[UserDto](#schemauserdto)]|false|none|none| +|» id|integer(int64)|false|none|none| +|» authorities|[[GrantedAuthorityDto](#schemagrantedauthoritydto)]|false|none|none| +|»» authority|string|false|none|none| +|» username|string|true|none|none| +|» titlesBefore|string|true|none|none| +|» titlesAfter|string|true|none|none| +|» firstname|string|true|none|none| +|» lastname|string|true|none|none| +|» containers|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|»» id|integer(int64)|true|none|none| +|»» hash|string|true|none|none| +|»» name|string|true|none|none| +|»» state|string|true|none|none| +|»» databases|[[DatabaseDto](#schemadatabasedto)]|true|none|none| +|»»» id|integer(int64)|true|none|none| +|»»» name|string|true|none|none| +|»»» description|string|true|none|none| +|»»» publisher|string|false|none|none| +|»»» license|string|false|none|none| +|»»» contact|[UserDto](#schemauserdto)|false|none|none| +|»»» tables|[[TableDto](#schematabledto)]|true|none|none| +|»»»» id|integer(int64)|true|none|none| +|»»»» name|string|true|none|none| +|»»»» topic|string|true|none|none| +|»»»» description|string|true|none|none| +|»»»» separator|string|true|none|none| +|»»»» quote|string|true|none|none| +|»»»» created|string(date-time)|false|none|none| +|»»»» columns|[[ColumnDto](#schemacolumndto)]|true|none|none| +|»»»»» id|integer(int64)|true|none|none| +|»»»»» name|string|true|none|none| +|»»»»» unique|boolean|true|none|none| +|»»»»» references|string|false|none|none| +|»»»»» internal_name|string|true|none|none| +|»»»»» date_format|[ImageDateDto](#schemaimagedatedto)|true|none|none| +|»»»»»» id|integer(int64)|true|none|none| +|»»»»»» example|string|true|none|none| +|»»»»»» database_format|string|true|none|none| +|»»»»»» unix_format|string|true|none|none| +|»»»»»» created_at|string(date-time)|false|none|none| +|»»»»» auto_generated|boolean|true|none|none| +|»»»»» is_primary_key|boolean|true|none|none| +|»»»»» column_type|string|true|none|none| +|»»»»» column_concept|[ConceptDto](#schemaconceptdto)|true|none|none| +|»»»»»» uri|string|true|none|none| +|»»»»»» name|string|true|none|none| +|»»»»»» created|string(date-time)|true|none|none| +|»»»»» decimal_digits_before|integer(int64)|false|none|none| +|»»»»» decimal_digits_after|integer(int64)|false|none|none| +|»»»»» is_null_allowed|boolean|true|none|none| +|»»»»» check_expression|string|false|none|none| +|»»»»» foreign_key|string|false|none|none| +|»»»»» enum_values|[string]|false|none|none| +|»»»» internal_name|string|true|none|none| +|»»»» null_element|string|true|none|none| +|»»»» skip_lines|integer(int64)|false|none|none| +|»»»» true_element|string|false|none|none| +|»»»» false_element|string|false|none|none| +|»»» exchange|string|true|none|none| +|»»» image|[ImageDto](#schemaimagedto)|true|none|none| +|»»»» id|integer(int64)|true|none|none| +|»»»» repository|string|true|none|none| +|»»»» tag|string|true|none|none| +|»»»» logo|string|false|none|none| +|»»»» dialect|string|true|none|none| +|»»»» hash|string|false|none|none| +|»»»» compiled|string(date-time)|false|none|none| +|»»»» size|integer|false|none|none| +|»»»» environment|[[ImageEnvItemDto](#schemaimageenvitemdto)]|true|none|none| +|»»»»» iid|integer(int64)|true|none|none| +|»»»»» key|string|true|none|none| +|»»»»» value|string|true|none|none| +|»»»»» type|string|false|none|none| +|»»»» driver_class|string|true|none|none| +|»»»» date_formats|[[ImageDateDto](#schemaimagedatedto)]|false|none|none| +|»»»» jdbc_method|string|true|none|none| +|»»»» default_port|integer(int32)|true|none|none| +|»»» container|[ContainerDto](#schemacontainerdto)|true|none|none| +|»»» created|string(date-time)|false|none|none| +|»»» deleted|string(date-time)|false|none|none| +|»»» internal_name|string|true|none|none| +|»» image|[ImageDto](#schemaimagedto)|true|none|none| +|»» port|integer(int32)|true|none|none| +|»» created|string(date-time)|true|none|none| +|»» internal_name|string|true|none|none| +|»» ip_address|string|true|none|none| +|»» is_public|boolean|true|none|none| +|» databases|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|» identifiers|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|» email|string|true|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|state|ContainerStateDto.CREATED| +|state|ContainerStateDto.RESTARTING| +|state|ContainerStateDto.RUNNING| +|state|ContainerStateDto.PAUSED| +|state|ContainerStateDto.EXITED| +|state|ContainerStateDto.DEAD| +|column_type|ColumnTypeDto.ENUM| +|column_type|ColumnTypeDto.NUMBER| +|column_type|ColumnTypeDto.DECIMAL| +|column_type|ColumnTypeDto.STRING| +|column_type|ColumnTypeDto.TEXT| +|column_type|ColumnTypeDto.BOOLEAN| +|column_type|ColumnTypeDto.DATE| +|column_type|ColumnTypeDto.BLOB| +|type|USERNAME| +|type|PASSWORD| +|type|PRIVILEGED_USERNAME| +|type|PRIVILEGED_PASSWORD| + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +## register + +<a id="opIdregister"></a> + +> Code samples + +```python +import requests +headers = { + 'Content-Type': 'application/json', + 'Accept': '*/*' +} + +r = requests.post('http://localhost:9097/api/user', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9097/api/user"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("POST"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`POST /api/user` + +*Create user* + +> Body parameter + +```json +{ + "username": "string", + "email": "string", + "password": "string" +} +``` + +<h3 id="register-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|body|body|[SignupRequestDto](#schemasignuprequestdto)|true|none| + +> Example responses + +> 200 Response + +<h3 id="register-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[UserDto](#schemauserdto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| +|417|[Expectation Failed](https://tools.ietf.org/html/rfc7231#section-6.5.14)|Expectation Failed|[ApiErrorDto](#schemaapierrordto)| + +<aside class="success"> +This operation does not require authentication +</aside> + +# Schemas + +<h2 id="tocS_ApiErrorDto">ApiErrorDto</h2> +<!-- backwards compatibility --> +<a id="schemaapierrordto"></a> +<a id="schema_ApiErrorDto"></a> +<a id="tocSapierrordto"></a> +<a id="tocsapierrordto"></a> + +```json +{ + "status": "100 CONTINUE", + "message": "string", + "code": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|status|string|true|none|none| +|message|string|true|none|none| +|code|string|true|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|status|100 CONTINUE| +|status|101 SWITCHING_PROTOCOLS| +|status|102 PROCESSING| +|status|103 CHECKPOINT| +|status|200 OK| +|status|201 CREATED| +|status|202 ACCEPTED| +|status|203 NON_AUTHORITATIVE_INFORMATION| +|status|204 NO_CONTENT| +|status|205 RESET_CONTENT| +|status|206 PARTIAL_CONTENT| +|status|207 MULTI_STATUS| +|status|208 ALREADY_REPORTED| +|status|226 IM_USED| +|status|300 MULTIPLE_CHOICES| +|status|301 MOVED_PERMANENTLY| +|status|302 FOUND| +|status|302 MOVED_TEMPORARILY| +|status|303 SEE_OTHER| +|status|304 NOT_MODIFIED| +|status|305 USE_PROXY| +|status|307 TEMPORARY_REDIRECT| +|status|308 PERMANENT_REDIRECT| +|status|400 BAD_REQUEST| +|status|401 UNAUTHORIZED| +|status|402 PAYMENT_REQUIRED| +|status|403 FORBIDDEN| +|status|404 NOT_FOUND| +|status|405 METHOD_NOT_ALLOWED| +|status|406 NOT_ACCEPTABLE| +|status|407 PROXY_AUTHENTICATION_REQUIRED| +|status|408 REQUEST_TIMEOUT| +|status|409 CONFLICT| +|status|410 GONE| +|status|411 LENGTH_REQUIRED| +|status|412 PRECONDITION_FAILED| +|status|413 PAYLOAD_TOO_LARGE| +|status|413 REQUEST_ENTITY_TOO_LARGE| +|status|414 URI_TOO_LONG| +|status|414 REQUEST_URI_TOO_LONG| +|status|415 UNSUPPORTED_MEDIA_TYPE| +|status|416 REQUESTED_RANGE_NOT_SATISFIABLE| +|status|417 EXPECTATION_FAILED| +|status|418 I_AM_A_TEAPOT| +|status|419 INSUFFICIENT_SPACE_ON_RESOURCE| +|status|420 METHOD_FAILURE| +|status|421 DESTINATION_LOCKED| +|status|422 UNPROCESSABLE_ENTITY| +|status|423 LOCKED| +|status|424 FAILED_DEPENDENCY| +|status|425 TOO_EARLY| +|status|426 UPGRADE_REQUIRED| +|status|428 PRECONDITION_REQUIRED| +|status|429 TOO_MANY_REQUESTS| +|status|431 REQUEST_HEADER_FIELDS_TOO_LARGE| +|status|451 UNAVAILABLE_FOR_LEGAL_REASONS| +|status|500 INTERNAL_SERVER_ERROR| +|status|501 NOT_IMPLEMENTED| +|status|502 BAD_GATEWAY| +|status|503 SERVICE_UNAVAILABLE| +|status|504 GATEWAY_TIMEOUT| +|status|505 HTTP_VERSION_NOT_SUPPORTED| +|status|506 VARIANT_ALSO_NEGOTIATES| +|status|507 INSUFFICIENT_STORAGE| +|status|508 LOOP_DETECTED| +|status|509 BANDWIDTH_LIMIT_EXCEEDED| +|status|510 NOT_EXTENDED| +|status|511 NETWORK_AUTHENTICATION_REQUIRED| + +<h2 id="tocS_ColumnDto">ColumnDto</h2> +<!-- backwards compatibility --> +<a id="schemacolumndto"></a> +<a id="schema_ColumnDto"></a> +<a id="tocScolumndto"></a> +<a id="tocscolumndto"></a> + +```json +{ + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|unique|boolean|true|none|none| +|references|string|false|none|none| +|internal_name|string|true|none|none| +|date_format|[ImageDateDto](#schemaimagedatedto)|true|none|none| +|auto_generated|boolean|true|none|none| +|is_primary_key|boolean|true|none|none| +|column_type|string|true|none|none| +|column_concept|[ConceptDto](#schemaconceptdto)|true|none|none| +|decimal_digits_before|integer(int64)|false|none|none| +|decimal_digits_after|integer(int64)|false|none|none| +|is_null_allowed|boolean|true|none|none| +|check_expression|string|false|none|none| +|foreign_key|string|false|none|none| +|enum_values|[string]|false|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|column_type|ColumnTypeDto.ENUM| +|column_type|ColumnTypeDto.NUMBER| +|column_type|ColumnTypeDto.DECIMAL| +|column_type|ColumnTypeDto.STRING| +|column_type|ColumnTypeDto.TEXT| +|column_type|ColumnTypeDto.BOOLEAN| +|column_type|ColumnTypeDto.DATE| +|column_type|ColumnTypeDto.BLOB| + +<h2 id="tocS_ConceptDto">ConceptDto</h2> +<!-- backwards compatibility --> +<a id="schemaconceptdto"></a> +<a id="schema_ConceptDto"></a> +<a id="tocSconceptdto"></a> +<a id="tocsconceptdto"></a> + +```json +{ + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|uri|string|true|none|none| +|name|string|true|none|none| +|created|string(date-time)|true|none|none| + +<h2 id="tocS_ContainerDto">ContainerDto</h2> +<!-- backwards compatibility --> +<a id="schemacontainerdto"></a> +<a id="schema_ContainerDto"></a> +<a id="tocScontainerdto"></a> +<a id="tocscontainerdto"></a> + +```json +{ + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + }, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|hash|string|true|none|none| +|name|string|true|none|none| +|state|string|true|none|none| +|databases|[[DatabaseDto](#schemadatabasedto)]|true|none|none| +|image|[ImageDto](#schemaimagedto)|true|none|none| +|port|integer(int32)|true|none|none| +|created|string(date-time)|true|none|none| +|internal_name|string|true|none|none| +|ip_address|string|true|none|none| +|is_public|boolean|true|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|state|ContainerStateDto.CREATED| +|state|ContainerStateDto.RESTARTING| +|state|ContainerStateDto.RUNNING| +|state|ContainerStateDto.PAUSED| +|state|ContainerStateDto.EXITED| +|state|ContainerStateDto.DEAD| + +<h2 id="tocS_DatabaseDto">DatabaseDto</h2> +<!-- backwards compatibility --> +<a id="schemadatabasedto"></a> +<a id="schema_DatabaseDto"></a> +<a id="tocSdatabasedto"></a> +<a id="tocsdatabasedto"></a> + +```json +{ + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": {}, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": {}, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": {}, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": {}, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": {}, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": {}, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + {} + ], + "databases": [ + {} + ], + "identifiers": [ + {} + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + }, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|description|string|true|none|none| +|publisher|string|false|none|none| +|license|string|false|none|none| +|contact|[UserDto](#schemauserdto)|false|none|none| +|tables|[[TableDto](#schematabledto)]|true|none|none| +|exchange|string|true|none|none| +|image|[ImageDto](#schemaimagedto)|true|none|none| +|container|[ContainerDto](#schemacontainerdto)|true|none|none| +|created|string(date-time)|false|none|none| +|deleted|string(date-time)|false|none|none| +|internal_name|string|true|none|none| + +<h2 id="tocS_GrantedAuthorityDto">GrantedAuthorityDto</h2> +<!-- backwards compatibility --> +<a id="schemagrantedauthoritydto"></a> +<a id="schema_GrantedAuthorityDto"></a> +<a id="tocSgrantedauthoritydto"></a> +<a id="tocsgrantedauthoritydto"></a> + +```json +{ + "authority": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|authority|string|false|none|none| + +<h2 id="tocS_ImageDateDto">ImageDateDto</h2> +<!-- backwards compatibility --> +<a id="schemaimagedatedto"></a> +<a id="schema_ImageDateDto"></a> +<a id="tocSimagedatedto"></a> +<a id="tocsimagedatedto"></a> + +```json +{ + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|example|string|true|none|none| +|database_format|string|true|none|none| +|unix_format|string|true|none|none| +|created_at|string(date-time)|false|none|none| + +<h2 id="tocS_ImageDto">ImageDto</h2> +<!-- backwards compatibility --> +<a id="schemaimagedto"></a> +<a id="schema_ImageDto"></a> +<a id="tocSimagedto"></a> +<a id="tocsimagedto"></a> + +```json +{ + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|repository|string|true|none|none| +|tag|string|true|none|none| +|logo|string|false|none|none| +|dialect|string|true|none|none| +|hash|string|false|none|none| +|compiled|string(date-time)|false|none|none| +|size|integer|false|none|none| +|environment|[[ImageEnvItemDto](#schemaimageenvitemdto)]|true|none|none| +|driver_class|string|true|none|none| +|date_formats|[[ImageDateDto](#schemaimagedatedto)]|false|none|none| +|jdbc_method|string|true|none|none| +|default_port|integer(int32)|true|none|none| + +<h2 id="tocS_ImageEnvItemDto">ImageEnvItemDto</h2> +<!-- backwards compatibility --> +<a id="schemaimageenvitemdto"></a> +<a id="schema_ImageEnvItemDto"></a> +<a id="tocSimageenvitemdto"></a> +<a id="tocsimageenvitemdto"></a> + +```json +{ + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|iid|integer(int64)|true|none|none| +|key|string|true|none|none| +|value|string|true|none|none| +|type|string|false|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|type|USERNAME| +|type|PASSWORD| +|type|PRIVILEGED_USERNAME| +|type|PRIVILEGED_PASSWORD| + +<h2 id="tocS_TableDto">TableDto</h2> +<!-- backwards compatibility --> +<a id="schematabledto"></a> +<a id="schema_TableDto"></a> +<a id="tocStabledto"></a> +<a id="tocstabledto"></a> + +```json +{ + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|topic|string|true|none|none| +|description|string|true|none|none| +|separator|string|true|none|none| +|quote|string|true|none|none| +|created|string(date-time)|false|none|none| +|columns|[[ColumnDto](#schemacolumndto)]|true|none|none| +|internal_name|string|true|none|none| +|null_element|string|true|none|none| +|skip_lines|integer(int64)|false|none|none| +|true_element|string|false|none|none| +|false_element|string|false|none|none| + +<h2 id="tocS_UserDto">UserDto</h2> +<!-- backwards compatibility --> +<a id="schemauserdto"></a> +<a id="schema_UserDto"></a> +<a id="tocSuserdto"></a> +<a id="tocsuserdto"></a> + +```json +{ + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [], + "databases": [ + {} + ], + "identifiers": [ + {} + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + {} + ], + "databases": [], + "identifiers": [ + {} + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + {} + ], + "databases": [ + {} + ], + "identifiers": [], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|false|none|none| +|authorities|[[GrantedAuthorityDto](#schemagrantedauthoritydto)]|false|none|none| +|username|string|true|none|none| +|titlesBefore|string|true|none|none| +|titlesAfter|string|true|none|none| +|firstname|string|true|none|none| +|lastname|string|true|none|none| +|containers|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|databases|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|identifiers|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|email|string|true|none|none| + +<h2 id="tocS_SignupRequestDto">SignupRequestDto</h2> +<!-- backwards compatibility --> +<a id="schemasignuprequestdto"></a> +<a id="schema_SignupRequestDto"></a> +<a id="tocSsignuprequestdto"></a> +<a id="tocssignuprequestdto"></a> + +```json +{ + "username": "string", + "email": "string", + "password": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|username|string|true|none|none| +|email|string|true|none|none| +|password|string|true|none|none| + +<h2 id="tocS_LoginRequestDto">LoginRequestDto</h2> +<!-- backwards compatibility --> +<a id="schemaloginrequestdto"></a> +<a id="schema_LoginRequestDto"></a> +<a id="tocSloginrequestdto"></a> +<a id="tocsloginrequestdto"></a> + +```json +{ + "username": "string", + "password": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|username|string|true|none|none| +|password|string|true|none|none| + +<h2 id="tocS_JwtResponseDto">JwtResponseDto</h2> +<!-- backwards compatibility --> +<a id="schemajwtresponsedto"></a> +<a id="schema_JwtResponseDto"></a> +<a id="tocSjwtresponsedto"></a> +<a id="tocsjwtresponsedto"></a> + +```json +{ + "token": "string", + "type": "string", + "id": 0, + "username": "string", + "email": "string", + "roles": [ + "string" + ] +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|token|string|true|none|none| +|type|string|true|none|none| +|id|integer(int64)|true|none|none| +|username|string|true|none|none| +|email|string|true|none|none| +|roles|[string]|true|none|none| + diff --git a/docs/operation/container.md b/docs/operation/container.md new file mode 100644 index 0000000..e22efa9 --- /dev/null +++ b/docs/operation/container.md @@ -0,0 +1,2902 @@ +--- +title: Database Repository Container Service API v1.1.0-alpha +language_tabs: + - python: Python + - java: Java +toc_footers: + - <a + href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/wikis">Wiki + Documentation</a> +includes: [] +search: true +highlight_theme: darkula +headingLevel: 2 + +--- + +<!-- Generator: Widdershins v4.0.1 --> + +<h1 id="database-repository-container-service-api">Database Repository Container Service API v1.1.0-alpha</h1> + +> Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu. + +Service that manages the containers + +Base URLs: + +* <a href="http://localhost:9091">http://localhost:9091</a> + +Email: <a href="mailto:andreas.rauber@tuwien.ac.at">Prof. Andreas Rauber</a> +License: <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a> + +# Authentication + +- HTTP Authentication, scheme: bearer + +<h1 id="database-repository-container-service-api-image-endpoint">image-endpoint</h1> + +## findById + +<a id="opIdfindById"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*' +} + +r = requests.get('http://localhost:9091/api/image/{id}', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9091/api/image/{id}"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`GET /api/image/{id}` + +*Find some image* + +<h3 id="findbyid-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| + +> Example responses + +> 200 Response + +<h3 id="findbyid-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ImageDto](#schemaimagedto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<aside class="success"> +This operation does not require authentication +</aside> + +## update + +<a id="opIdupdate"></a> + +> Code samples + +```python +import requests +headers = { + 'Content-Type': 'application/json', + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.put('http://localhost:9091/api/image/{id}', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9091/api/image/{id}"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("PUT"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`PUT /api/image/{id}` + +*Update some image* + +> Body parameter + +```json +{ + "defaultPort": 1024, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "logo": "string", + "dialect": "string", + "driver_class": "string", + "jdbc_method": "string" +} +``` + +<h3 id="update-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|body|body|[ImageChangeDto](#schemaimagechangedto)|true|none| + +> Example responses + +> 200 Response + +<h3 id="update-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ImageDto](#schemaimagedto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +## delete + +<a id="opIddelete"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.delete('http://localhost:9091/api/image/{id}', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9091/api/image/{id}"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("DELETE"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`DELETE /api/image/{id}` + +*Delete some image* + +<h3 id="delete-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| + +> Example responses + +> 200 Response + +<h3 id="delete-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<h3 id="delete-responseschema">Response Schema</h3> + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +## findAll + +<a id="opIdfindAll"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*' +} + +r = requests.get('http://localhost:9091/api/image', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9091/api/image"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`GET /api/image` + +*Find all images* + +> Example responses + +> 200 Response + +<h3 id="findall-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<h3 id="findall-responseschema">Response Schema</h3> + +Status Code **200** + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|*anonymous*|[[ImageBriefDto](#schemaimagebriefdto)]|false|none|none| +|» id|integer(int64)|true|none|none| +|» repository|string|true|none|none| +|» logo|string|false|none|none| +|» tag|string|true|none|none| + +<aside class="success"> +This operation does not require authentication +</aside> + +## create + +<a id="opIdcreate"></a> + +> Code samples + +```python +import requests +headers = { + 'Content-Type': 'application/json', + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.post('http://localhost:9091/api/image', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9091/api/image"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("POST"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`POST /api/image` + +*Create image* + +> Body parameter + +```json +{ + "repository": "string", + "tag": "string", + "dialect": "string", + "logo": "string", + "local": true, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "jdbc_method": "string", + "default_port": 0 +} +``` + +<h3 id="create-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|body|body|[ImageCreateDto](#schemaimagecreatedto)|true|none| + +> Example responses + +> 200 Response + +<h3 id="create-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ImageDto](#schemaimagedto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +<h1 id="database-repository-container-service-api-container-endpoint">container-endpoint</h1> + +## findById_1 + +<a id="opIdfindById_1"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*' +} + +r = requests.get('http://localhost:9091/api/container/{id}', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9091/api/container/{id}"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`GET /api/container/{id}` + +*Find some container* + +<h3 id="findbyid_1-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| + +> Example responses + +> 200 Response + +<h3 id="findbyid_1-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ContainerDto](#schemacontainerdto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<aside class="success"> +This operation does not require authentication +</aside> + +## modify + +<a id="opIdmodify"></a> + +> Code samples + +```python +import requests +headers = { + 'Content-Type': 'application/json', + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.put('http://localhost:9091/api/container/{id}', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9091/api/container/{id}"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("PUT"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`PUT /api/container/{id}` + +*Modify some container* + +> Body parameter + +```json +{ + "action": "ContainerActionTypeDto.START" +} +``` + +<h3 id="modify-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|body|body|[ContainerChangeDto](#schemacontainerchangedto)|true|none| + +> Example responses + +> 200 Response + +<h3 id="modify-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ContainerBriefDto](#schemacontainerbriefdto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +## delete_1 + +<a id="opIddelete_1"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.delete('http://localhost:9091/api/container/{id}', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9091/api/container/{id}"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("DELETE"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`DELETE /api/container/{id}` + +*Delete some container* + +<h3 id="delete_1-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| + +> Example responses + +> 200 Response + +<h3 id="delete_1-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<h3 id="delete_1-responseschema">Response Schema</h3> + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +## findAll_1 + +<a id="opIdfindAll_1"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*' +} + +r = requests.get('http://localhost:9091/api/container', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9091/api/container"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`GET /api/container` + +*Find all containers* + +> Example responses + +> 200 Response + +<h3 id="findall_1-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<h3 id="findall_1-responseschema">Response Schema</h3> + +Status Code **200** + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|*anonymous*|[[ContainerBriefDto](#schemacontainerbriefdto)]|false|none|none| +|» id|integer(int64)|true|none|none| +|» hash|string|true|none|none| +|» name|string|true|none|none| +|» internal_name|string|true|none|none| +|» is_public|boolean|true|none|none| + +<aside class="success"> +This operation does not require authentication +</aside> + +## create_1 + +<a id="opIdcreate_1"></a> + +> Code samples + +```python +import requests +headers = { + 'Content-Type': 'application/json', + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.post('http://localhost:9091/api/container', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9091/api/container"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("POST"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`POST /api/container` + +*Create container* + +> Body parameter + +```json +{ + "name": "string", + "repository": "string", + "tag": "string" +} +``` + +<h3 id="create_1-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|body|body|[ContainerCreateRequestDto](#schemacontainercreaterequestdto)|true|none| + +> Example responses + +> 200 Response + +<h3 id="create_1-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[ContainerBriefDto](#schemacontainerbriefdto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|403|[Forbidden](https://tools.ietf.org/html/rfc7231#section-6.5.3)|Forbidden|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +# Schemas + +<h2 id="tocS_ApiErrorDto">ApiErrorDto</h2> +<!-- backwards compatibility --> +<a id="schemaapierrordto"></a> +<a id="schema_ApiErrorDto"></a> +<a id="tocSapierrordto"></a> +<a id="tocsapierrordto"></a> + +```json +{ + "status": "100 CONTINUE", + "message": "string", + "code": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|status|string|true|none|none| +|message|string|true|none|none| +|code|string|true|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|status|100 CONTINUE| +|status|101 SWITCHING_PROTOCOLS| +|status|102 PROCESSING| +|status|103 CHECKPOINT| +|status|200 OK| +|status|201 CREATED| +|status|202 ACCEPTED| +|status|203 NON_AUTHORITATIVE_INFORMATION| +|status|204 NO_CONTENT| +|status|205 RESET_CONTENT| +|status|206 PARTIAL_CONTENT| +|status|207 MULTI_STATUS| +|status|208 ALREADY_REPORTED| +|status|226 IM_USED| +|status|300 MULTIPLE_CHOICES| +|status|301 MOVED_PERMANENTLY| +|status|302 FOUND| +|status|302 MOVED_TEMPORARILY| +|status|303 SEE_OTHER| +|status|304 NOT_MODIFIED| +|status|305 USE_PROXY| +|status|307 TEMPORARY_REDIRECT| +|status|308 PERMANENT_REDIRECT| +|status|400 BAD_REQUEST| +|status|401 UNAUTHORIZED| +|status|402 PAYMENT_REQUIRED| +|status|403 FORBIDDEN| +|status|404 NOT_FOUND| +|status|405 METHOD_NOT_ALLOWED| +|status|406 NOT_ACCEPTABLE| +|status|407 PROXY_AUTHENTICATION_REQUIRED| +|status|408 REQUEST_TIMEOUT| +|status|409 CONFLICT| +|status|410 GONE| +|status|411 LENGTH_REQUIRED| +|status|412 PRECONDITION_FAILED| +|status|413 PAYLOAD_TOO_LARGE| +|status|413 REQUEST_ENTITY_TOO_LARGE| +|status|414 URI_TOO_LONG| +|status|414 REQUEST_URI_TOO_LONG| +|status|415 UNSUPPORTED_MEDIA_TYPE| +|status|416 REQUESTED_RANGE_NOT_SATISFIABLE| +|status|417 EXPECTATION_FAILED| +|status|418 I_AM_A_TEAPOT| +|status|419 INSUFFICIENT_SPACE_ON_RESOURCE| +|status|420 METHOD_FAILURE| +|status|421 DESTINATION_LOCKED| +|status|422 UNPROCESSABLE_ENTITY| +|status|423 LOCKED| +|status|424 FAILED_DEPENDENCY| +|status|425 TOO_EARLY| +|status|426 UPGRADE_REQUIRED| +|status|428 PRECONDITION_REQUIRED| +|status|429 TOO_MANY_REQUESTS| +|status|431 REQUEST_HEADER_FIELDS_TOO_LARGE| +|status|451 UNAVAILABLE_FOR_LEGAL_REASONS| +|status|500 INTERNAL_SERVER_ERROR| +|status|501 NOT_IMPLEMENTED| +|status|502 BAD_GATEWAY| +|status|503 SERVICE_UNAVAILABLE| +|status|504 GATEWAY_TIMEOUT| +|status|505 HTTP_VERSION_NOT_SUPPORTED| +|status|506 VARIANT_ALSO_NEGOTIATES| +|status|507 INSUFFICIENT_STORAGE| +|status|508 LOOP_DETECTED| +|status|509 BANDWIDTH_LIMIT_EXCEEDED| +|status|510 NOT_EXTENDED| +|status|511 NETWORK_AUTHENTICATION_REQUIRED| + +<h2 id="tocS_ImageChangeDto">ImageChangeDto</h2> +<!-- backwards compatibility --> +<a id="schemaimagechangedto"></a> +<a id="schema_ImageChangeDto"></a> +<a id="tocSimagechangedto"></a> +<a id="tocsimagechangedto"></a> + +```json +{ + "defaultPort": 1024, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "logo": "string", + "dialect": "string", + "driver_class": "string", + "jdbc_method": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|defaultPort|integer(int32)|false|none|none| +|environment|[[ImageEnvItemDto](#schemaimageenvitemdto)]|false|none|none| +|logo|string|true|none|none| +|dialect|string|true|none|none| +|driver_class|string|true|none|none| +|jdbc_method|string|true|none|none| + +<h2 id="tocS_ImageEnvItemDto">ImageEnvItemDto</h2> +<!-- backwards compatibility --> +<a id="schemaimageenvitemdto"></a> +<a id="schema_ImageEnvItemDto"></a> +<a id="tocSimageenvitemdto"></a> +<a id="tocsimageenvitemdto"></a> + +```json +{ + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|iid|integer(int64)|true|none|none| +|key|string|true|none|none| +|value|string|true|none|none| +|type|string|false|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|type|USERNAME| +|type|PASSWORD| +|type|PRIVILEGED_USERNAME| +|type|PRIVILEGED_PASSWORD| + +<h2 id="tocS_ImageDateDto">ImageDateDto</h2> +<!-- backwards compatibility --> +<a id="schemaimagedatedto"></a> +<a id="schema_ImageDateDto"></a> +<a id="tocSimagedatedto"></a> +<a id="tocsimagedatedto"></a> + +```json +{ + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|example|string|true|none|none| +|database_format|string|true|none|none| +|unix_format|string|true|none|none| +|created_at|string(date-time)|false|none|none| + +<h2 id="tocS_ImageDto">ImageDto</h2> +<!-- backwards compatibility --> +<a id="schemaimagedto"></a> +<a id="schema_ImageDto"></a> +<a id="tocSimagedto"></a> +<a id="tocsimagedto"></a> + +```json +{ + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|repository|string|true|none|none| +|tag|string|true|none|none| +|logo|string|false|none|none| +|dialect|string|true|none|none| +|hash|string|false|none|none| +|compiled|string(date-time)|false|none|none| +|size|integer|false|none|none| +|environment|[[ImageEnvItemDto](#schemaimageenvitemdto)]|true|none|none| +|driver_class|string|true|none|none| +|date_formats|[[ImageDateDto](#schemaimagedatedto)]|false|none|none| +|jdbc_method|string|true|none|none| +|default_port|integer(int32)|true|none|none| + +<h2 id="tocS_ContainerChangeDto">ContainerChangeDto</h2> +<!-- backwards compatibility --> +<a id="schemacontainerchangedto"></a> +<a id="schema_ContainerChangeDto"></a> +<a id="tocScontainerchangedto"></a> +<a id="tocscontainerchangedto"></a> + +```json +{ + "action": "ContainerActionTypeDto.START" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|action|string|true|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|action|ContainerActionTypeDto.START| +|action|ContainerActionTypeDto.STOP| + +<h2 id="tocS_ContainerBriefDto">ContainerBriefDto</h2> +<!-- backwards compatibility --> +<a id="schemacontainerbriefdto"></a> +<a id="schema_ContainerBriefDto"></a> +<a id="tocScontainerbriefdto"></a> +<a id="tocscontainerbriefdto"></a> + +```json +{ + "id": 0, + "hash": "string", + "name": "string", + "internal_name": "string", + "is_public": true +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|hash|string|true|none|none| +|name|string|true|none|none| +|internal_name|string|true|none|none| +|is_public|boolean|true|none|none| + +<h2 id="tocS_ImageCreateDto">ImageCreateDto</h2> +<!-- backwards compatibility --> +<a id="schemaimagecreatedto"></a> +<a id="schema_ImageCreateDto"></a> +<a id="tocSimagecreatedto"></a> +<a id="tocsimagecreatedto"></a> + +```json +{ + "repository": "string", + "tag": "string", + "dialect": "string", + "logo": "string", + "local": true, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "jdbc_method": "string", + "default_port": 0 +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|repository|string|true|none|none| +|tag|string|true|none|none| +|dialect|string|true|none|none| +|logo|string|true|none|none| +|local|boolean|true|none|none| +|environment|[[ImageEnvItemDto](#schemaimageenvitemdto)]|false|none|none| +|driver_class|string|true|none|none| +|jdbc_method|string|true|none|none| +|default_port|integer(int32)|true|none|none| + +<h2 id="tocS_ContainerCreateRequestDto">ContainerCreateRequestDto</h2> +<!-- backwards compatibility --> +<a id="schemacontainercreaterequestdto"></a> +<a id="schema_ContainerCreateRequestDto"></a> +<a id="tocScontainercreaterequestdto"></a> +<a id="tocscontainercreaterequestdto"></a> + +```json +{ + "name": "string", + "repository": "string", + "tag": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|name|string|true|none|none| +|repository|string|true|none|none| +|tag|string|true|none|none| + +<h2 id="tocS_ImageBriefDto">ImageBriefDto</h2> +<!-- backwards compatibility --> +<a id="schemaimagebriefdto"></a> +<a id="schema_ImageBriefDto"></a> +<a id="tocSimagebriefdto"></a> +<a id="tocsimagebriefdto"></a> + +```json +{ + "id": 0, + "repository": "string", + "logo": "string", + "tag": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|repository|string|true|none|none| +|logo|string|false|none|none| +|tag|string|true|none|none| + +<h2 id="tocS_ColumnDto">ColumnDto</h2> +<!-- backwards compatibility --> +<a id="schemacolumndto"></a> +<a id="schema_ColumnDto"></a> +<a id="tocScolumndto"></a> +<a id="tocscolumndto"></a> + +```json +{ + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|unique|boolean|true|none|none| +|references|string|false|none|none| +|internal_name|string|true|none|none| +|date_format|[ImageDateDto](#schemaimagedatedto)|true|none|none| +|auto_generated|boolean|true|none|none| +|is_primary_key|boolean|true|none|none| +|column_type|string|true|none|none| +|column_concept|[ConceptDto](#schemaconceptdto)|true|none|none| +|decimal_digits_before|integer(int64)|false|none|none| +|decimal_digits_after|integer(int64)|false|none|none| +|is_null_allowed|boolean|true|none|none| +|check_expression|string|false|none|none| +|foreign_key|string|false|none|none| +|enum_values|[string]|false|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|column_type|ColumnTypeDto.ENUM| +|column_type|ColumnTypeDto.NUMBER| +|column_type|ColumnTypeDto.DECIMAL| +|column_type|ColumnTypeDto.STRING| +|column_type|ColumnTypeDto.TEXT| +|column_type|ColumnTypeDto.BOOLEAN| +|column_type|ColumnTypeDto.DATE| +|column_type|ColumnTypeDto.BLOB| + +<h2 id="tocS_ConceptDto">ConceptDto</h2> +<!-- backwards compatibility --> +<a id="schemaconceptdto"></a> +<a id="schema_ConceptDto"></a> +<a id="tocSconceptdto"></a> +<a id="tocsconceptdto"></a> + +```json +{ + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|uri|string|true|none|none| +|name|string|true|none|none| +|created|string(date-time)|true|none|none| + +<h2 id="tocS_ContainerDto">ContainerDto</h2> +<!-- backwards compatibility --> +<a id="schemacontainerdto"></a> +<a id="schema_ContainerDto"></a> +<a id="tocScontainerdto"></a> +<a id="tocscontainerdto"></a> + +```json +{ + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + }, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|hash|string|true|none|none| +|name|string|true|none|none| +|state|string|true|none|none| +|databases|[[DatabaseDto](#schemadatabasedto)]|true|none|none| +|image|[ImageDto](#schemaimagedto)|true|none|none| +|port|integer(int32)|true|none|none| +|created|string(date-time)|true|none|none| +|internal_name|string|true|none|none| +|ip_address|string|true|none|none| +|is_public|boolean|true|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|state|ContainerStateDto.CREATED| +|state|ContainerStateDto.RESTARTING| +|state|ContainerStateDto.RUNNING| +|state|ContainerStateDto.PAUSED| +|state|ContainerStateDto.EXITED| +|state|ContainerStateDto.DEAD| + +<h2 id="tocS_DatabaseDto">DatabaseDto</h2> +<!-- backwards compatibility --> +<a id="schemadatabasedto"></a> +<a id="schema_DatabaseDto"></a> +<a id="tocSdatabasedto"></a> +<a id="tocsdatabasedto"></a> + +```json +{ + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": {}, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": {}, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": {}, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": {}, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": {}, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": {}, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + {} + ], + "databases": [ + {} + ], + "identifiers": [ + {} + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + }, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|description|string|true|none|none| +|publisher|string|false|none|none| +|license|string|false|none|none| +|contact|[UserDto](#schemauserdto)|false|none|none| +|tables|[[TableDto](#schematabledto)]|true|none|none| +|exchange|string|true|none|none| +|image|[ImageDto](#schemaimagedto)|true|none|none| +|container|[ContainerDto](#schemacontainerdto)|true|none|none| +|created|string(date-time)|false|none|none| +|deleted|string(date-time)|false|none|none| +|internal_name|string|true|none|none| + +<h2 id="tocS_GrantedAuthorityDto">GrantedAuthorityDto</h2> +<!-- backwards compatibility --> +<a id="schemagrantedauthoritydto"></a> +<a id="schema_GrantedAuthorityDto"></a> +<a id="tocSgrantedauthoritydto"></a> +<a id="tocsgrantedauthoritydto"></a> + +```json +{ + "authority": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|authority|string|false|none|none| + +<h2 id="tocS_TableDto">TableDto</h2> +<!-- backwards compatibility --> +<a id="schematabledto"></a> +<a id="schema_TableDto"></a> +<a id="tocStabledto"></a> +<a id="tocstabledto"></a> + +```json +{ + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|topic|string|true|none|none| +|description|string|true|none|none| +|separator|string|true|none|none| +|quote|string|true|none|none| +|created|string(date-time)|false|none|none| +|columns|[[ColumnDto](#schemacolumndto)]|true|none|none| +|internal_name|string|true|none|none| +|null_element|string|true|none|none| +|skip_lines|integer(int64)|false|none|none| +|true_element|string|false|none|none| +|false_element|string|false|none|none| + +<h2 id="tocS_UserDto">UserDto</h2> +<!-- backwards compatibility --> +<a id="schemauserdto"></a> +<a id="schema_UserDto"></a> +<a id="tocSuserdto"></a> +<a id="tocsuserdto"></a> + +```json +{ + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [], + "databases": [ + {} + ], + "identifiers": [ + {} + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + {} + ], + "databases": [], + "identifiers": [ + {} + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + {} + ], + "databases": [ + {} + ], + "identifiers": [], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|false|none|none| +|authorities|[[GrantedAuthorityDto](#schemagrantedauthoritydto)]|false|none|none| +|username|string|true|none|none| +|titlesBefore|string|true|none|none| +|titlesAfter|string|true|none|none| +|firstname|string|true|none|none| +|lastname|string|true|none|none| +|containers|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|databases|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|identifiers|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|email|string|true|none|none| + diff --git a/docs/operation/database.md b/docs/operation/database.md new file mode 100644 index 0000000..89136d5 --- /dev/null +++ b/docs/operation/database.md @@ -0,0 +1,2320 @@ +--- +title: Database Repository Database Service API v1.1.0-alpha +language_tabs: + - python: Python + - java: Java +toc_footers: + - <a + href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/wikis">Wiki + Documentation</a> +includes: [] +search: true +highlight_theme: darkula +headingLevel: 2 + +--- + +<!-- Generator: Widdershins v4.0.1 --> + +<h1 id="database-repository-database-service-api">Database Repository Database Service API v1.1.0-alpha</h1> + +> Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu. + +Service that manages the databases + +Base URLs: + +* <a href="http://localhost:9092">http://localhost:9092</a> + +Email: <a href="mailto:andreas.rauber@tuwien.ac.at">Prof. Andreas Rauber</a> +License: <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a> + +# Authentication + +- HTTP Authentication, scheme: bearer + +<h1 id="database-repository-database-service-api-container-database-endpoint">container-database-endpoint</h1> + +## findAll + +<a id="opIdfindAll"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*' +} + +r = requests.get('http://localhost:9092/api/container/{id}/database', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9092/api/container/{id}/database"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`GET /api/container/{id}/database` + +*List databases* + +<h3 id="findall-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| + +> Example responses + +> 200 Response + +<h3 id="findall-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|405|[Method Not Allowed](https://tools.ietf.org/html/rfc7231#section-6.5.5)|Method Not Allowed|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|502|[Bad Gateway](https://tools.ietf.org/html/rfc7231#section-6.6.3)|Bad Gateway|[ApiErrorDto](#schemaapierrordto)| + +<h3 id="findall-responseschema">Response Schema</h3> + +Status Code **200** + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|*anonymous*|[[DatabaseBriefDto](#schemadatabasebriefdto)]|false|none|none| +|» id|integer(int64)|true|none|none| +|» name|string|true|none|none| +|» description|string|true|none|none| +|» engine|string|true|none|none| +|» created|string(date-time)|false|none|none| + +<aside class="success"> +This operation does not require authentication +</aside> + +## create + +<a id="opIdcreate"></a> + +> Code samples + +```python +import requests +headers = { + 'Content-Type': 'application/json', + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.post('http://localhost:9092/api/container/{id}/database', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9092/api/container/{id}/database"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("POST"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`POST /api/container/{id}/database` + +*Create database* + +> Body parameter + +```json +{ + "name": "string", + "description": "string", + "is_public": true +} +``` + +<h3 id="create-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|body|body|[DatabaseCreateDto](#schemadatabasecreatedto)|true|none| + +> Example responses + +> 200 Response + +<h3 id="create-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[DatabaseDto](#schemadatabasedto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|405|[Method Not Allowed](https://tools.ietf.org/html/rfc7231#section-6.5.5)|Method Not Allowed|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|502|[Bad Gateway](https://tools.ietf.org/html/rfc7231#section-6.6.3)|Bad Gateway|[ApiErrorDto](#schemaapierrordto)| + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +## findById + +<a id="opIdfindById"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*' +} + +r = requests.get('http://localhost:9092/api/container/{id}/database/{databaseId}', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9092/api/container/{id}/database/{databaseId}"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`GET /api/container/{id}/database/{databaseId}` + +*List some database* + +<h3 id="findbyid-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| + +> Example responses + +> 200 Response + +<h3 id="findbyid-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[DatabaseDto](#schemadatabasedto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|405|[Method Not Allowed](https://tools.ietf.org/html/rfc7231#section-6.5.5)|Method Not Allowed|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|502|[Bad Gateway](https://tools.ietf.org/html/rfc7231#section-6.6.3)|Bad Gateway|[ApiErrorDto](#schemaapierrordto)| + +<aside class="success"> +This operation does not require authentication +</aside> + +## delete + +<a id="opIddelete"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.delete('http://localhost:9092/api/container/{id}/database/{databaseId}', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9092/api/container/{id}/database/{databaseId}"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("DELETE"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`DELETE /api/container/{id}/database/{databaseId}` + +*Delete some database* + +<h3 id="delete-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| + +> Example responses + +> 200 Response + +<h3 id="delete-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|405|[Method Not Allowed](https://tools.ietf.org/html/rfc7231#section-6.5.5)|Method Not Allowed|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|502|[Bad Gateway](https://tools.ietf.org/html/rfc7231#section-6.6.3)|Bad Gateway|[ApiErrorDto](#schemaapierrordto)| + +<h3 id="delete-responseschema">Response Schema</h3> + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +# Schemas + +<h2 id="tocS_ApiErrorDto">ApiErrorDto</h2> +<!-- backwards compatibility --> +<a id="schemaapierrordto"></a> +<a id="schema_ApiErrorDto"></a> +<a id="tocSapierrordto"></a> +<a id="tocsapierrordto"></a> + +```json +{ + "status": "100 CONTINUE", + "message": "string", + "code": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|status|string|true|none|none| +|message|string|true|none|none| +|code|string|true|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|status|100 CONTINUE| +|status|101 SWITCHING_PROTOCOLS| +|status|102 PROCESSING| +|status|103 CHECKPOINT| +|status|200 OK| +|status|201 CREATED| +|status|202 ACCEPTED| +|status|203 NON_AUTHORITATIVE_INFORMATION| +|status|204 NO_CONTENT| +|status|205 RESET_CONTENT| +|status|206 PARTIAL_CONTENT| +|status|207 MULTI_STATUS| +|status|208 ALREADY_REPORTED| +|status|226 IM_USED| +|status|300 MULTIPLE_CHOICES| +|status|301 MOVED_PERMANENTLY| +|status|302 FOUND| +|status|302 MOVED_TEMPORARILY| +|status|303 SEE_OTHER| +|status|304 NOT_MODIFIED| +|status|305 USE_PROXY| +|status|307 TEMPORARY_REDIRECT| +|status|308 PERMANENT_REDIRECT| +|status|400 BAD_REQUEST| +|status|401 UNAUTHORIZED| +|status|402 PAYMENT_REQUIRED| +|status|403 FORBIDDEN| +|status|404 NOT_FOUND| +|status|405 METHOD_NOT_ALLOWED| +|status|406 NOT_ACCEPTABLE| +|status|407 PROXY_AUTHENTICATION_REQUIRED| +|status|408 REQUEST_TIMEOUT| +|status|409 CONFLICT| +|status|410 GONE| +|status|411 LENGTH_REQUIRED| +|status|412 PRECONDITION_FAILED| +|status|413 PAYLOAD_TOO_LARGE| +|status|413 REQUEST_ENTITY_TOO_LARGE| +|status|414 URI_TOO_LONG| +|status|414 REQUEST_URI_TOO_LONG| +|status|415 UNSUPPORTED_MEDIA_TYPE| +|status|416 REQUESTED_RANGE_NOT_SATISFIABLE| +|status|417 EXPECTATION_FAILED| +|status|418 I_AM_A_TEAPOT| +|status|419 INSUFFICIENT_SPACE_ON_RESOURCE| +|status|420 METHOD_FAILURE| +|status|421 DESTINATION_LOCKED| +|status|422 UNPROCESSABLE_ENTITY| +|status|423 LOCKED| +|status|424 FAILED_DEPENDENCY| +|status|425 TOO_EARLY| +|status|426 UPGRADE_REQUIRED| +|status|428 PRECONDITION_REQUIRED| +|status|429 TOO_MANY_REQUESTS| +|status|431 REQUEST_HEADER_FIELDS_TOO_LARGE| +|status|451 UNAVAILABLE_FOR_LEGAL_REASONS| +|status|500 INTERNAL_SERVER_ERROR| +|status|501 NOT_IMPLEMENTED| +|status|502 BAD_GATEWAY| +|status|503 SERVICE_UNAVAILABLE| +|status|504 GATEWAY_TIMEOUT| +|status|505 HTTP_VERSION_NOT_SUPPORTED| +|status|506 VARIANT_ALSO_NEGOTIATES| +|status|507 INSUFFICIENT_STORAGE| +|status|508 LOOP_DETECTED| +|status|509 BANDWIDTH_LIMIT_EXCEEDED| +|status|510 NOT_EXTENDED| +|status|511 NETWORK_AUTHENTICATION_REQUIRED| + +<h2 id="tocS_DatabaseCreateDto">DatabaseCreateDto</h2> +<!-- backwards compatibility --> +<a id="schemadatabasecreatedto"></a> +<a id="schema_DatabaseCreateDto"></a> +<a id="tocSdatabasecreatedto"></a> +<a id="tocsdatabasecreatedto"></a> + +```json +{ + "name": "string", + "description": "string", + "is_public": true +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|name|string|true|none|none| +|description|string|true|none|none| +|is_public|boolean|true|none|none| + +<h2 id="tocS_ColumnDto">ColumnDto</h2> +<!-- backwards compatibility --> +<a id="schemacolumndto"></a> +<a id="schema_ColumnDto"></a> +<a id="tocScolumndto"></a> +<a id="tocscolumndto"></a> + +```json +{ + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|unique|boolean|true|none|none| +|references|string|false|none|none| +|internal_name|string|true|none|none| +|date_format|[ImageDateDto](#schemaimagedatedto)|true|none|none| +|auto_generated|boolean|true|none|none| +|is_primary_key|boolean|true|none|none| +|column_type|string|true|none|none| +|column_concept|[ConceptDto](#schemaconceptdto)|true|none|none| +|decimal_digits_before|integer(int64)|false|none|none| +|decimal_digits_after|integer(int64)|false|none|none| +|is_null_allowed|boolean|true|none|none| +|check_expression|string|false|none|none| +|foreign_key|string|false|none|none| +|enum_values|[string]|false|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|column_type|ColumnTypeDto.ENUM| +|column_type|ColumnTypeDto.NUMBER| +|column_type|ColumnTypeDto.DECIMAL| +|column_type|ColumnTypeDto.STRING| +|column_type|ColumnTypeDto.TEXT| +|column_type|ColumnTypeDto.BOOLEAN| +|column_type|ColumnTypeDto.DATE| +|column_type|ColumnTypeDto.BLOB| + +<h2 id="tocS_ConceptDto">ConceptDto</h2> +<!-- backwards compatibility --> +<a id="schemaconceptdto"></a> +<a id="schema_ConceptDto"></a> +<a id="tocSconceptdto"></a> +<a id="tocsconceptdto"></a> + +```json +{ + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|uri|string|true|none|none| +|name|string|true|none|none| +|created|string(date-time)|true|none|none| + +<h2 id="tocS_ContainerDto">ContainerDto</h2> +<!-- backwards compatibility --> +<a id="schemacontainerdto"></a> +<a id="schema_ContainerDto"></a> +<a id="tocScontainerdto"></a> +<a id="tocscontainerdto"></a> + +```json +{ + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + }, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|hash|string|true|none|none| +|name|string|true|none|none| +|state|string|true|none|none| +|databases|[[DatabaseDto](#schemadatabasedto)]|true|none|none| +|image|[ImageDto](#schemaimagedto)|true|none|none| +|port|integer(int32)|true|none|none| +|created|string(date-time)|true|none|none| +|internal_name|string|true|none|none| +|ip_address|string|true|none|none| +|is_public|boolean|true|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|state|ContainerStateDto.CREATED| +|state|ContainerStateDto.RESTARTING| +|state|ContainerStateDto.RUNNING| +|state|ContainerStateDto.PAUSED| +|state|ContainerStateDto.EXITED| +|state|ContainerStateDto.DEAD| + +<h2 id="tocS_DatabaseDto">DatabaseDto</h2> +<!-- backwards compatibility --> +<a id="schemadatabasedto"></a> +<a id="schema_DatabaseDto"></a> +<a id="tocSdatabasedto"></a> +<a id="tocsdatabasedto"></a> + +```json +{ + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": {}, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": {}, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": {}, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": {}, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": {}, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": {}, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + {} + ], + "databases": [ + {} + ], + "identifiers": [ + {} + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + }, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|description|string|true|none|none| +|publisher|string|false|none|none| +|license|string|false|none|none| +|contact|[UserDto](#schemauserdto)|false|none|none| +|tables|[[TableDto](#schematabledto)]|true|none|none| +|exchange|string|true|none|none| +|image|[ImageDto](#schemaimagedto)|true|none|none| +|container|[ContainerDto](#schemacontainerdto)|true|none|none| +|created|string(date-time)|false|none|none| +|deleted|string(date-time)|false|none|none| +|internal_name|string|true|none|none| + +<h2 id="tocS_GrantedAuthorityDto">GrantedAuthorityDto</h2> +<!-- backwards compatibility --> +<a id="schemagrantedauthoritydto"></a> +<a id="schema_GrantedAuthorityDto"></a> +<a id="tocSgrantedauthoritydto"></a> +<a id="tocsgrantedauthoritydto"></a> + +```json +{ + "authority": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|authority|string|false|none|none| + +<h2 id="tocS_ImageDateDto">ImageDateDto</h2> +<!-- backwards compatibility --> +<a id="schemaimagedatedto"></a> +<a id="schema_ImageDateDto"></a> +<a id="tocSimagedatedto"></a> +<a id="tocsimagedatedto"></a> + +```json +{ + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|example|string|true|none|none| +|database_format|string|true|none|none| +|unix_format|string|true|none|none| +|created_at|string(date-time)|false|none|none| + +<h2 id="tocS_ImageDto">ImageDto</h2> +<!-- backwards compatibility --> +<a id="schemaimagedto"></a> +<a id="schema_ImageDto"></a> +<a id="tocSimagedto"></a> +<a id="tocsimagedto"></a> + +```json +{ + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|repository|string|true|none|none| +|tag|string|true|none|none| +|logo|string|false|none|none| +|dialect|string|true|none|none| +|hash|string|false|none|none| +|compiled|string(date-time)|false|none|none| +|size|integer|false|none|none| +|environment|[[ImageEnvItemDto](#schemaimageenvitemdto)]|true|none|none| +|driver_class|string|true|none|none| +|date_formats|[[ImageDateDto](#schemaimagedatedto)]|false|none|none| +|jdbc_method|string|true|none|none| +|default_port|integer(int32)|true|none|none| + +<h2 id="tocS_ImageEnvItemDto">ImageEnvItemDto</h2> +<!-- backwards compatibility --> +<a id="schemaimageenvitemdto"></a> +<a id="schema_ImageEnvItemDto"></a> +<a id="tocSimageenvitemdto"></a> +<a id="tocsimageenvitemdto"></a> + +```json +{ + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|iid|integer(int64)|true|none|none| +|key|string|true|none|none| +|value|string|true|none|none| +|type|string|false|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|type|USERNAME| +|type|PASSWORD| +|type|PRIVILEGED_USERNAME| +|type|PRIVILEGED_PASSWORD| + +<h2 id="tocS_TableDto">TableDto</h2> +<!-- backwards compatibility --> +<a id="schematabledto"></a> +<a id="schema_TableDto"></a> +<a id="tocStabledto"></a> +<a id="tocstabledto"></a> + +```json +{ + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|topic|string|true|none|none| +|description|string|true|none|none| +|separator|string|true|none|none| +|quote|string|true|none|none| +|created|string(date-time)|false|none|none| +|columns|[[ColumnDto](#schemacolumndto)]|true|none|none| +|internal_name|string|true|none|none| +|null_element|string|true|none|none| +|skip_lines|integer(int64)|false|none|none| +|true_element|string|false|none|none| +|false_element|string|false|none|none| + +<h2 id="tocS_UserDto">UserDto</h2> +<!-- backwards compatibility --> +<a id="schemauserdto"></a> +<a id="schema_UserDto"></a> +<a id="tocSuserdto"></a> +<a id="tocsuserdto"></a> + +```json +{ + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [], + "databases": [ + {} + ], + "identifiers": [ + {} + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + {} + ], + "databases": [], + "identifiers": [ + {} + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + {} + ], + "databases": [ + {} + ], + "identifiers": [], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|false|none|none| +|authorities|[[GrantedAuthorityDto](#schemagrantedauthoritydto)]|false|none|none| +|username|string|true|none|none| +|titlesBefore|string|true|none|none| +|titlesAfter|string|true|none|none| +|firstname|string|true|none|none| +|lastname|string|true|none|none| +|containers|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|databases|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|identifiers|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|email|string|true|none|none| + +<h2 id="tocS_DatabaseBriefDto">DatabaseBriefDto</h2> +<!-- backwards compatibility --> +<a id="schemadatabasebriefdto"></a> +<a id="schema_DatabaseBriefDto"></a> +<a id="tocSdatabasebriefdto"></a> +<a id="tocsdatabasebriefdto"></a> + +```json +{ + "id": 0, + "name": "string", + "description": "string", + "engine": "string", + "created": "2019-08-24T14:15:22Z" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|description|string|true|none|none| +|engine|string|true|none|none| +|created|string(date-time)|false|none|none| + diff --git a/docs/operation/identifier.md b/docs/operation/identifier.md new file mode 100644 index 0000000..4976c64 --- /dev/null +++ b/docs/operation/identifier.md @@ -0,0 +1,3623 @@ +--- +title: Database Repository Identifier Service API v1.1.0-alpha +language_tabs: + - python: Python + - java: Java +toc_footers: + - <a + href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/wikis">Wiki + Documentation</a> +includes: [] +search: true +highlight_theme: darkula +headingLevel: 2 + +--- + +<!-- Generator: Widdershins v4.0.1 --> + +<h1 id="database-repository-identifier-service-api">Database Repository Identifier Service API v1.1.0-alpha</h1> + +> Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu. + +Service that manages the identifiers + +Base URLs: + +* <a href="http://localhost:9096">http://localhost:9096</a> + +Email: <a href="mailto:andreas.rauber@tuwien.ac.at">Prof. Andreas Rauber</a> +License: <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a> + +# Authentication + +- HTTP Authentication, scheme: bearer + +<h1 id="database-repository-identifier-service-api-identifier-endpoint">identifier-endpoint</h1> + +## publish + +<a id="opIdpublish"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.put('http://localhost:9096/api/container/{id}/database/{databaseId}/identifier/{identiferId}', params={ + 'identiferId': '0' +}, headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9096/api/container/{id}/database/{databaseId}/identifier/{identiferId}?identiferId=0"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("PUT"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`PUT /api/container/{id}/database/{databaseId}/identifier/{identiferId}` + +*Publish some identifier* + +<h3 id="publish-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| +|identiferId|query|integer(int64)|true|none| + +> Example responses + +> 200 Response + +<h3 id="publish-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| +|204|[No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5)|No Content|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| +|412|[Precondition Failed](https://tools.ietf.org/html/rfc7232#section-4.2)|Precondition Failed|[ApiErrorDto](#schemaapierrordto)| + +<h3 id="publish-responseschema">Response Schema</h3> + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +## update + +<a id="opIdupdate"></a> + +> Code samples + +```python +import requests +headers = { + 'Content-Type': 'application/json', + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.post('http://localhost:9096/api/container/{id}/database/{databaseId}/identifier/{identiferId}', params={ + 'identiferId': '0' +}, headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9096/api/container/{id}/database/{databaseId}/identifier/{identiferId}?identiferId=0"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("POST"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`POST /api/container/{id}/database/{databaseId}/identifier/{identiferId}` + +*Update some identifier* + +> Body parameter + +```json +{ + "id": 0, + "cid": 0, + "dbid": 0, + "qid": 0, + "title": "string", + "description": "string", + "visibility": "VisibilityTypeDto.EVERYONE", + "doi": "string", + "creators": [ + { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + {} + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + {} + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + {} + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" + } + ], + "created": "2019-08-24T14:15:22Z", + "last_modified": "2019-08-24T14:15:22Z" +} +``` + +<h3 id="update-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| +|identiferId|query|integer(int64)|true|none| +|body|body|[IdentifierDto](#schemaidentifierdto)|true|none| + +> Example responses + +> 200 Response + +<h3 id="update-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[IdentifierDto](#schemaidentifierdto)| +|204|[No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5)|No Content|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| +|412|[Precondition Failed](https://tools.ietf.org/html/rfc7232#section-4.2)|Precondition Failed|[ApiErrorDto](#schemaapierrordto)| + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +## delete + +<a id="opIddelete"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.delete('http://localhost:9096/api/container/{id}/database/{databaseId}/identifier/{identiferId}', params={ + 'identiferId': '0' +}, headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9096/api/container/{id}/database/{databaseId}/identifier/{identiferId}?identiferId=0"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("DELETE"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`DELETE /api/container/{id}/database/{databaseId}/identifier/{identiferId}` + +*Delete some identifer* + +<h3 id="delete-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| +|identiferId|query|integer(int64)|true|none| + +> Example responses + +> 200 Response + +<h3 id="delete-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| +|204|[No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5)|No Content|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| +|412|[Precondition Failed](https://tools.ietf.org/html/rfc7232#section-4.2)|Precondition Failed|[ApiErrorDto](#schemaapierrordto)| + +<h3 id="delete-responseschema">Response Schema</h3> + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +## findAll + +<a id="opIdfindAll"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*' +} + +r = requests.get('http://localhost:9096/api/container/{id}/database/{databaseId}/identifier', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9096/api/container/{id}/database/{databaseId}/identifier"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`GET /api/container/{id}/database/{databaseId}/identifier` + +*Find identifiers* + +<h3 id="findall-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| +|qid|query|integer(int64)|false|none| + +> Example responses + +> 200 Response + +<h3 id="findall-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| +|204|[No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5)|No Content|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| +|412|[Precondition Failed](https://tools.ietf.org/html/rfc7232#section-4.2)|Precondition Failed|[ApiErrorDto](#schemaapierrordto)| + +<h3 id="findall-responseschema">Response Schema</h3> + +Status Code **200** + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|*anonymous*|[[IdentifierDto](#schemaidentifierdto)]|false|none|none| +|» id|integer(int64)|false|none|none| +|» cid|integer(int64)|true|none|none| +|» dbid|integer(int64)|true|none|none| +|» qid|integer(int64)|true|none|none| +|» title|string|true|none|none| +|» description|string|true|none|none| +|» visibility|string|true|none|none| +|» doi|string|false|none|none| +|» creators|[[UserDto](#schemauserdto)]|true|none|none| +|»» id|integer(int64)|false|none|none| +|»» authorities|[[GrantedAuthorityDto](#schemagrantedauthoritydto)]|false|none|none| +|»»» authority|string|false|none|none| +|»» username|string|true|none|none| +|»» titlesBefore|string|true|none|none| +|»» titlesAfter|string|true|none|none| +|»» firstname|string|true|none|none| +|»» lastname|string|true|none|none| +|»» containers|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|»»» id|integer(int64)|true|none|none| +|»»» hash|string|true|none|none| +|»»» name|string|true|none|none| +|»»» state|string|true|none|none| +|»»» databases|[[DatabaseDto](#schemadatabasedto)]|true|none|none| +|»»»» id|integer(int64)|true|none|none| +|»»»» name|string|true|none|none| +|»»»» description|string|true|none|none| +|»»»» publisher|string|false|none|none| +|»»»» license|string|false|none|none| +|»»»» contact|[UserDto](#schemauserdto)|false|none|none| +|»»»» tables|[[TableDto](#schematabledto)]|true|none|none| +|»»»»» id|integer(int64)|true|none|none| +|»»»»» name|string|true|none|none| +|»»»»» topic|string|true|none|none| +|»»»»» description|string|true|none|none| +|»»»»» separator|string|true|none|none| +|»»»»» quote|string|true|none|none| +|»»»»» created|string(date-time)|false|none|none| +|»»»»» columns|[[ColumnDto](#schemacolumndto)]|true|none|none| +|»»»»»» id|integer(int64)|true|none|none| +|»»»»»» name|string|true|none|none| +|»»»»»» unique|boolean|true|none|none| +|»»»»»» references|string|false|none|none| +|»»»»»» internal_name|string|true|none|none| +|»»»»»» date_format|[ImageDateDto](#schemaimagedatedto)|true|none|none| +|»»»»»»» id|integer(int64)|true|none|none| +|»»»»»»» example|string|true|none|none| +|»»»»»»» database_format|string|true|none|none| +|»»»»»»» unix_format|string|true|none|none| +|»»»»»»» created_at|string(date-time)|false|none|none| +|»»»»»» auto_generated|boolean|true|none|none| +|»»»»»» is_primary_key|boolean|true|none|none| +|»»»»»» column_type|string|true|none|none| +|»»»»»» column_concept|[ConceptDto](#schemaconceptdto)|true|none|none| +|»»»»»»» uri|string|true|none|none| +|»»»»»»» name|string|true|none|none| +|»»»»»»» created|string(date-time)|true|none|none| +|»»»»»» decimal_digits_before|integer(int64)|false|none|none| +|»»»»»» decimal_digits_after|integer(int64)|false|none|none| +|»»»»»» is_null_allowed|boolean|true|none|none| +|»»»»»» check_expression|string|false|none|none| +|»»»»»» foreign_key|string|false|none|none| +|»»»»»» enum_values|[string]|false|none|none| +|»»»»» internal_name|string|true|none|none| +|»»»»» null_element|string|true|none|none| +|»»»»» skip_lines|integer(int64)|false|none|none| +|»»»»» true_element|string|false|none|none| +|»»»»» false_element|string|false|none|none| +|»»»» exchange|string|true|none|none| +|»»»» image|[ImageDto](#schemaimagedto)|true|none|none| +|»»»»» id|integer(int64)|true|none|none| +|»»»»» repository|string|true|none|none| +|»»»»» tag|string|true|none|none| +|»»»»» logo|string|false|none|none| +|»»»»» dialect|string|true|none|none| +|»»»»» hash|string|false|none|none| +|»»»»» compiled|string(date-time)|false|none|none| +|»»»»» size|integer|false|none|none| +|»»»»» environment|[[ImageEnvItemDto](#schemaimageenvitemdto)]|true|none|none| +|»»»»»» iid|integer(int64)|true|none|none| +|»»»»»» key|string|true|none|none| +|»»»»»» value|string|true|none|none| +|»»»»»» type|string|false|none|none| +|»»»»» driver_class|string|true|none|none| +|»»»»» date_formats|[[ImageDateDto](#schemaimagedatedto)]|false|none|none| +|»»»»» jdbc_method|string|true|none|none| +|»»»»» default_port|integer(int32)|true|none|none| +|»»»» container|[ContainerDto](#schemacontainerdto)|true|none|none| +|»»»» created|string(date-time)|false|none|none| +|»»»» deleted|string(date-time)|false|none|none| +|»»»» internal_name|string|true|none|none| +|»»» image|[ImageDto](#schemaimagedto)|true|none|none| +|»»» port|integer(int32)|true|none|none| +|»»» created|string(date-time)|true|none|none| +|»»» internal_name|string|true|none|none| +|»»» ip_address|string|true|none|none| +|»»» is_public|boolean|true|none|none| +|»» databases|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|»» identifiers|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|»» email|string|true|none|none| +|» created|string(date-time)|false|none|none| +|» last_modified|string(date-time)|false|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|visibility|VisibilityTypeDto.EVERYONE| +|visibility|VisibilityTypeDto.TRUSTED| +|visibility|VisibilityTypeDto.SELF| +|state|ContainerStateDto.CREATED| +|state|ContainerStateDto.RESTARTING| +|state|ContainerStateDto.RUNNING| +|state|ContainerStateDto.PAUSED| +|state|ContainerStateDto.EXITED| +|state|ContainerStateDto.DEAD| +|column_type|ColumnTypeDto.ENUM| +|column_type|ColumnTypeDto.NUMBER| +|column_type|ColumnTypeDto.DECIMAL| +|column_type|ColumnTypeDto.STRING| +|column_type|ColumnTypeDto.TEXT| +|column_type|ColumnTypeDto.BOOLEAN| +|column_type|ColumnTypeDto.DATE| +|column_type|ColumnTypeDto.BLOB| +|type|USERNAME| +|type|PASSWORD| +|type|PRIVILEGED_USERNAME| +|type|PRIVILEGED_PASSWORD| + +<aside class="success"> +This operation does not require authentication +</aside> + +## create + +<a id="opIdcreate"></a> + +> Code samples + +```python +import requests +headers = { + 'Content-Type': 'application/json', + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.post('http://localhost:9096/api/container/{id}/database/{databaseId}/identifier', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9096/api/container/{id}/database/{databaseId}/identifier"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("POST"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`POST /api/container/{id}/database/{databaseId}/identifier` + +*Create identifier* + +> Body parameter + +```json +{ + "id": 0, + "cid": 0, + "dbid": 0, + "qid": 0, + "title": "string", + "description": "string", + "visibility": "VisibilityTypeDto.EVERYONE", + "doi": "string", + "creators": [ + { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + {} + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + {} + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + {} + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" + } + ], + "created": "2019-08-24T14:15:22Z", + "last_modified": "2019-08-24T14:15:22Z" +} +``` + +<h3 id="create-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| +|body|body|[IdentifierDto](#schemaidentifierdto)|true|none| + +> Example responses + +> 200 Response + +<h3 id="create-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[IdentifierDto](#schemaidentifierdto)| +|204|[No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5)|No Content|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| +|412|[Precondition Failed](https://tools.ietf.org/html/rfc7232#section-4.2)|Precondition Failed|[ApiErrorDto](#schemaapierrordto)| + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +<h1 id="database-repository-identifier-service-api-persistence-endpoint">persistence-endpoint</h1> + +## find + +<a id="opIdfind"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*' +} + +r = requests.get('http://localhost:9096/api/pid/{pid}', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9096/api/pid/{pid}"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`GET /api/pid/{pid}` + +*Find some identifier* + +<h3 id="find-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|pid|path|integer(int64)|true|none| + +> Example responses + +> 200 Response + +<h3 id="find-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[IdentifierDto](#schemaidentifierdto)| +|204|[No Content](https://tools.ietf.org/html/rfc7231#section-6.3.5)|No Content|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|406|[Not Acceptable](https://tools.ietf.org/html/rfc7231#section-6.5.6)|Not Acceptable|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| +|412|[Precondition Failed](https://tools.ietf.org/html/rfc7232#section-4.2)|Precondition Failed|[ApiErrorDto](#schemaapierrordto)| + +<aside class="success"> +This operation does not require authentication +</aside> + +# Schemas + +<h2 id="tocS_ApiErrorDto">ApiErrorDto</h2> +<!-- backwards compatibility --> +<a id="schemaapierrordto"></a> +<a id="schema_ApiErrorDto"></a> +<a id="tocSapierrordto"></a> +<a id="tocsapierrordto"></a> + +```json +{ + "status": "100 CONTINUE", + "message": "string", + "code": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|status|string|true|none|none| +|message|string|true|none|none| +|code|string|true|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|status|100 CONTINUE| +|status|101 SWITCHING_PROTOCOLS| +|status|102 PROCESSING| +|status|103 CHECKPOINT| +|status|200 OK| +|status|201 CREATED| +|status|202 ACCEPTED| +|status|203 NON_AUTHORITATIVE_INFORMATION| +|status|204 NO_CONTENT| +|status|205 RESET_CONTENT| +|status|206 PARTIAL_CONTENT| +|status|207 MULTI_STATUS| +|status|208 ALREADY_REPORTED| +|status|226 IM_USED| +|status|300 MULTIPLE_CHOICES| +|status|301 MOVED_PERMANENTLY| +|status|302 FOUND| +|status|302 MOVED_TEMPORARILY| +|status|303 SEE_OTHER| +|status|304 NOT_MODIFIED| +|status|305 USE_PROXY| +|status|307 TEMPORARY_REDIRECT| +|status|308 PERMANENT_REDIRECT| +|status|400 BAD_REQUEST| +|status|401 UNAUTHORIZED| +|status|402 PAYMENT_REQUIRED| +|status|403 FORBIDDEN| +|status|404 NOT_FOUND| +|status|405 METHOD_NOT_ALLOWED| +|status|406 NOT_ACCEPTABLE| +|status|407 PROXY_AUTHENTICATION_REQUIRED| +|status|408 REQUEST_TIMEOUT| +|status|409 CONFLICT| +|status|410 GONE| +|status|411 LENGTH_REQUIRED| +|status|412 PRECONDITION_FAILED| +|status|413 PAYLOAD_TOO_LARGE| +|status|413 REQUEST_ENTITY_TOO_LARGE| +|status|414 URI_TOO_LONG| +|status|414 REQUEST_URI_TOO_LONG| +|status|415 UNSUPPORTED_MEDIA_TYPE| +|status|416 REQUESTED_RANGE_NOT_SATISFIABLE| +|status|417 EXPECTATION_FAILED| +|status|418 I_AM_A_TEAPOT| +|status|419 INSUFFICIENT_SPACE_ON_RESOURCE| +|status|420 METHOD_FAILURE| +|status|421 DESTINATION_LOCKED| +|status|422 UNPROCESSABLE_ENTITY| +|status|423 LOCKED| +|status|424 FAILED_DEPENDENCY| +|status|425 TOO_EARLY| +|status|426 UPGRADE_REQUIRED| +|status|428 PRECONDITION_REQUIRED| +|status|429 TOO_MANY_REQUESTS| +|status|431 REQUEST_HEADER_FIELDS_TOO_LARGE| +|status|451 UNAVAILABLE_FOR_LEGAL_REASONS| +|status|500 INTERNAL_SERVER_ERROR| +|status|501 NOT_IMPLEMENTED| +|status|502 BAD_GATEWAY| +|status|503 SERVICE_UNAVAILABLE| +|status|504 GATEWAY_TIMEOUT| +|status|505 HTTP_VERSION_NOT_SUPPORTED| +|status|506 VARIANT_ALSO_NEGOTIATES| +|status|507 INSUFFICIENT_STORAGE| +|status|508 LOOP_DETECTED| +|status|509 BANDWIDTH_LIMIT_EXCEEDED| +|status|510 NOT_EXTENDED| +|status|511 NETWORK_AUTHENTICATION_REQUIRED| + +<h2 id="tocS_ColumnDto">ColumnDto</h2> +<!-- backwards compatibility --> +<a id="schemacolumndto"></a> +<a id="schema_ColumnDto"></a> +<a id="tocScolumndto"></a> +<a id="tocscolumndto"></a> + +```json +{ + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|unique|boolean|true|none|none| +|references|string|false|none|none| +|internal_name|string|true|none|none| +|date_format|[ImageDateDto](#schemaimagedatedto)|true|none|none| +|auto_generated|boolean|true|none|none| +|is_primary_key|boolean|true|none|none| +|column_type|string|true|none|none| +|column_concept|[ConceptDto](#schemaconceptdto)|true|none|none| +|decimal_digits_before|integer(int64)|false|none|none| +|decimal_digits_after|integer(int64)|false|none|none| +|is_null_allowed|boolean|true|none|none| +|check_expression|string|false|none|none| +|foreign_key|string|false|none|none| +|enum_values|[string]|false|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|column_type|ColumnTypeDto.ENUM| +|column_type|ColumnTypeDto.NUMBER| +|column_type|ColumnTypeDto.DECIMAL| +|column_type|ColumnTypeDto.STRING| +|column_type|ColumnTypeDto.TEXT| +|column_type|ColumnTypeDto.BOOLEAN| +|column_type|ColumnTypeDto.DATE| +|column_type|ColumnTypeDto.BLOB| + +<h2 id="tocS_ConceptDto">ConceptDto</h2> +<!-- backwards compatibility --> +<a id="schemaconceptdto"></a> +<a id="schema_ConceptDto"></a> +<a id="tocSconceptdto"></a> +<a id="tocsconceptdto"></a> + +```json +{ + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|uri|string|true|none|none| +|name|string|true|none|none| +|created|string(date-time)|true|none|none| + +<h2 id="tocS_ContainerDto">ContainerDto</h2> +<!-- backwards compatibility --> +<a id="schemacontainerdto"></a> +<a id="schema_ContainerDto"></a> +<a id="tocScontainerdto"></a> +<a id="tocscontainerdto"></a> + +```json +{ + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + }, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|hash|string|true|none|none| +|name|string|true|none|none| +|state|string|true|none|none| +|databases|[[DatabaseDto](#schemadatabasedto)]|true|none|none| +|image|[ImageDto](#schemaimagedto)|true|none|none| +|port|integer(int32)|true|none|none| +|created|string(date-time)|true|none|none| +|internal_name|string|true|none|none| +|ip_address|string|true|none|none| +|is_public|boolean|true|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|state|ContainerStateDto.CREATED| +|state|ContainerStateDto.RESTARTING| +|state|ContainerStateDto.RUNNING| +|state|ContainerStateDto.PAUSED| +|state|ContainerStateDto.EXITED| +|state|ContainerStateDto.DEAD| + +<h2 id="tocS_DatabaseDto">DatabaseDto</h2> +<!-- backwards compatibility --> +<a id="schemadatabasedto"></a> +<a id="schema_DatabaseDto"></a> +<a id="tocSdatabasedto"></a> +<a id="tocsdatabasedto"></a> + +```json +{ + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": {}, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": {}, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": {}, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": {}, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": {}, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": {}, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + {} + ], + "databases": [ + {} + ], + "identifiers": [ + {} + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + }, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|description|string|true|none|none| +|publisher|string|false|none|none| +|license|string|false|none|none| +|contact|[UserDto](#schemauserdto)|false|none|none| +|tables|[[TableDto](#schematabledto)]|true|none|none| +|exchange|string|true|none|none| +|image|[ImageDto](#schemaimagedto)|true|none|none| +|container|[ContainerDto](#schemacontainerdto)|true|none|none| +|created|string(date-time)|false|none|none| +|deleted|string(date-time)|false|none|none| +|internal_name|string|true|none|none| + +<h2 id="tocS_GrantedAuthorityDto">GrantedAuthorityDto</h2> +<!-- backwards compatibility --> +<a id="schemagrantedauthoritydto"></a> +<a id="schema_GrantedAuthorityDto"></a> +<a id="tocSgrantedauthoritydto"></a> +<a id="tocsgrantedauthoritydto"></a> + +```json +{ + "authority": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|authority|string|false|none|none| + +<h2 id="tocS_IdentifierDto">IdentifierDto</h2> +<!-- backwards compatibility --> +<a id="schemaidentifierdto"></a> +<a id="schema_IdentifierDto"></a> +<a id="tocSidentifierdto"></a> +<a id="tocsidentifierdto"></a> + +```json +{ + "id": 0, + "cid": 0, + "dbid": 0, + "qid": 0, + "title": "string", + "description": "string", + "visibility": "VisibilityTypeDto.EVERYONE", + "doi": "string", + "creators": [ + { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + {} + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + {} + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": {}, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + {} + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" + } + ], + "created": "2019-08-24T14:15:22Z", + "last_modified": "2019-08-24T14:15:22Z" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|false|none|none| +|cid|integer(int64)|true|none|none| +|dbid|integer(int64)|true|none|none| +|qid|integer(int64)|true|none|none| +|title|string|true|none|none| +|description|string|true|none|none| +|visibility|string|true|none|none| +|doi|string|false|none|none| +|creators|[[UserDto](#schemauserdto)]|true|none|none| +|created|string(date-time)|false|none|none| +|last_modified|string(date-time)|false|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|visibility|VisibilityTypeDto.EVERYONE| +|visibility|VisibilityTypeDto.TRUSTED| +|visibility|VisibilityTypeDto.SELF| + +<h2 id="tocS_ImageDateDto">ImageDateDto</h2> +<!-- backwards compatibility --> +<a id="schemaimagedatedto"></a> +<a id="schema_ImageDateDto"></a> +<a id="tocSimagedatedto"></a> +<a id="tocsimagedatedto"></a> + +```json +{ + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|example|string|true|none|none| +|database_format|string|true|none|none| +|unix_format|string|true|none|none| +|created_at|string(date-time)|false|none|none| + +<h2 id="tocS_ImageDto">ImageDto</h2> +<!-- backwards compatibility --> +<a id="schemaimagedto"></a> +<a id="schema_ImageDto"></a> +<a id="tocSimagedto"></a> +<a id="tocsimagedto"></a> + +```json +{ + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|repository|string|true|none|none| +|tag|string|true|none|none| +|logo|string|false|none|none| +|dialect|string|true|none|none| +|hash|string|false|none|none| +|compiled|string(date-time)|false|none|none| +|size|integer|false|none|none| +|environment|[[ImageEnvItemDto](#schemaimageenvitemdto)]|true|none|none| +|driver_class|string|true|none|none| +|date_formats|[[ImageDateDto](#schemaimagedatedto)]|false|none|none| +|jdbc_method|string|true|none|none| +|default_port|integer(int32)|true|none|none| + +<h2 id="tocS_ImageEnvItemDto">ImageEnvItemDto</h2> +<!-- backwards compatibility --> +<a id="schemaimageenvitemdto"></a> +<a id="schema_ImageEnvItemDto"></a> +<a id="tocSimageenvitemdto"></a> +<a id="tocsimageenvitemdto"></a> + +```json +{ + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|iid|integer(int64)|true|none|none| +|key|string|true|none|none| +|value|string|true|none|none| +|type|string|false|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|type|USERNAME| +|type|PASSWORD| +|type|PRIVILEGED_USERNAME| +|type|PRIVILEGED_PASSWORD| + +<h2 id="tocS_TableDto">TableDto</h2> +<!-- backwards compatibility --> +<a id="schematabledto"></a> +<a id="schema_TableDto"></a> +<a id="tocStabledto"></a> +<a id="tocstabledto"></a> + +```json +{ + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|topic|string|true|none|none| +|description|string|true|none|none| +|separator|string|true|none|none| +|quote|string|true|none|none| +|created|string(date-time)|false|none|none| +|columns|[[ColumnDto](#schemacolumndto)]|true|none|none| +|internal_name|string|true|none|none| +|null_element|string|true|none|none| +|skip_lines|integer(int64)|false|none|none| +|true_element|string|false|none|none| +|false_element|string|false|none|none| + +<h2 id="tocS_UserDto">UserDto</h2> +<!-- backwards compatibility --> +<a id="schemauserdto"></a> +<a id="schema_UserDto"></a> +<a id="tocSuserdto"></a> +<a id="tocsuserdto"></a> + +```json +{ + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [], + "databases": [ + {} + ], + "identifiers": [ + {} + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "databases": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + {} + ], + "databases": [], + "identifiers": [ + {} + ], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "identifiers": [ + { + "id": 0, + "hash": "string", + "name": "string", + "state": "ContainerStateDto.CREATED", + "databases": [ + { + "id": 0, + "name": "string", + "description": "string", + "publisher": "string", + "license": "string", + "contact": { + "id": 0, + "authorities": [ + { + "authority": "string" + } + ], + "username": "string", + "titlesBefore": "string", + "titlesAfter": "string", + "firstname": "string", + "lastname": "string", + "containers": [ + {} + ], + "databases": [ + {} + ], + "identifiers": [], + "email": "string" + }, + "tables": [ + { + "id": 0, + "name": "string", + "topic": "string", + "description": "string", + "separator": "string", + "quote": "string", + "created": "2019-08-24T14:15:22Z", + "columns": [ + { + "id": 0, + "name": "string", + "unique": true, + "references": "string", + "internal_name": "string", + "date_format": { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + }, + "auto_generated": true, + "is_primary_key": true, + "column_type": "ColumnTypeDto.ENUM", + "column_concept": { + "uri": "string", + "name": "string", + "created": "2019-08-24T14:15:22Z" + }, + "decimal_digits_before": 0, + "decimal_digits_after": 0, + "is_null_allowed": true, + "check_expression": "string", + "foreign_key": "string", + "enum_values": [ + "string" + ] + } + ], + "internal_name": "string", + "null_element": "string", + "skip_lines": 0, + "true_element": "string", + "false_element": "string" + } + ], + "exchange": "string", + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "container": {}, + "created": "2019-08-24T14:15:22Z", + "deleted": "2019-08-24T14:15:22Z", + "internal_name": "string" + } + ], + "image": { + "id": 0, + "repository": "string", + "tag": "string", + "logo": "string", + "dialect": "string", + "hash": "string", + "compiled": "2019-08-24T14:15:22Z", + "size": 0, + "environment": [ + { + "iid": 0, + "key": "string", + "value": "string", + "type": "USERNAME" + } + ], + "driver_class": "string", + "date_formats": [ + { + "id": 0, + "example": "string", + "database_format": "string", + "unix_format": "string", + "created_at": "2019-08-24T14:15:22Z" + } + ], + "jdbc_method": "string", + "default_port": 0 + }, + "port": 0, + "created": "2019-08-24T14:15:22Z", + "internal_name": "string", + "ip_address": "string", + "is_public": true + } + ], + "email": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|false|none|none| +|authorities|[[GrantedAuthorityDto](#schemagrantedauthoritydto)]|false|none|none| +|username|string|true|none|none| +|titlesBefore|string|true|none|none| +|titlesAfter|string|true|none|none| +|firstname|string|true|none|none| +|lastname|string|true|none|none| +|containers|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|databases|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|identifiers|[[ContainerDto](#schemacontainerdto)]|true|none|none| +|email|string|true|none|none| + diff --git a/docs/operation.md b/docs/operation/index.md similarity index 88% rename from docs/operation.md rename to docs/operation/index.md index f42b701..01f6d41 100644 --- a/docs/operation.md +++ b/docs/operation/index.md @@ -1,10 +1,3 @@ ---- -hide: - -- navigation - ---- - # Operation ## Deploy diff --git a/docs/operation/query.md b/docs/operation/query.md new file mode 100644 index 0000000..63dfb3d --- /dev/null +++ b/docs/operation/query.md @@ -0,0 +1,1014 @@ +--- +title: Database Repository Query Service API v1.1.0-alpha +language_tabs: + - python: Python + - java: Java +toc_footers: + - <a + href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/wikis">Wiki + Documentation</a> +includes: [] +search: true +highlight_theme: darkula +headingLevel: 2 + +--- + +<!-- Generator: Widdershins v4.0.1 --> + +<h1 id="database-repository-query-service-api">Database Repository Query Service API v1.1.0-alpha</h1> + +> Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu. + +Service that manages the queries + +Base URLs: + +* <a href="http://localhost:9093">http://localhost:9093</a> + +Email: <a href="mailto:andreas.rauber@tuwien.ac.at">Prof. Andreas Rauber</a> +License: <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a> + +# Authentication + +- HTTP Authentication, scheme: bearer + +<h1 id="database-repository-query-service-api-table-data-endpoint">table-data-endpoint</h1> + +## getAll_1 + +<a id="opIdgetAll_1"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*' +} + +r = requests.get('http://localhost:9093/api/container/{id}/database/{databaseId}/table/{tableId}/data', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9093/api/container/{id}/database/{databaseId}/table/{tableId}/data"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`GET /api/container/{id}/database/{databaseId}/table/{tableId}/data` + +*Find data* + +<h3 id="getall_1-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| +|tableId|path|integer(int64)|true|none| +|timestamp|query|string(date-time)|false|none| +|page|query|integer(int64)|false|none| +|size|query|integer(int64)|false|none| + +> Example responses + +> 200 Response + +<h3 id="getall_1-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[QueryResultDto](#schemaqueryresultdto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|405|[Method Not Allowed](https://tools.ietf.org/html/rfc7231#section-6.5.5)|Method Not Allowed|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<aside class="success"> +This operation does not require authentication +</aside> + +## insert + +<a id="opIdinsert"></a> + +> Code samples + +```python +import requests +headers = { + 'Content-Type': 'application/json', + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.post('http://localhost:9093/api/container/{id}/database/{databaseId}/table/{tableId}/data', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9093/api/container/{id}/database/{databaseId}/table/{tableId}/data"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("POST"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`POST /api/container/{id}/database/{databaseId}/table/{tableId}/data` + +*Insert data* + +> Body parameter + +```json +{ + "data": { + "property1": {}, + "property2": {} + } +} +``` + +<h3 id="insert-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| +|tableId|path|integer(int64)|true|none| +|body|body|[TableCsvDto](#schematablecsvdto)|true|none| + +> Example responses + +> 200 Response + +<h3 id="insert-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|integer| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|405|[Method Not Allowed](https://tools.ietf.org/html/rfc7231#section-6.5.5)|Method Not Allowed|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +## getAll + +<a id="opIdgetAll"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*' +} + +r = requests.head('http://localhost:9093/api/container/{id}/database/{databaseId}/table/{tableId}/data', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9093/api/container/{id}/database/{databaseId}/table/{tableId}/data"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("HEAD"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`HEAD /api/container/{id}/database/{databaseId}/table/{tableId}/data` + +*Find data* + +<h3 id="getall-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| +|tableId|path|integer(int64)|true|none| +|timestamp|query|string(date-time)|false|none| +|page|query|integer(int64)|false|none| +|size|query|integer(int64)|false|none| + +> Example responses + +> 200 Response + +<h3 id="getall-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[QueryResultDto](#schemaqueryresultdto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|405|[Method Not Allowed](https://tools.ietf.org/html/rfc7231#section-6.5.5)|Method Not Allowed|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<aside class="success"> +This operation does not require authentication +</aside> + +## importCsv + +<a id="opIdimportCsv"></a> + +> Code samples + +```python +import requests +headers = { + 'Content-Type': 'application/json', + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.post('http://localhost:9093/api/container/{id}/database/{databaseId}/table/{tableId}/data/import', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9093/api/container/{id}/database/{databaseId}/table/{tableId}/data/import"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("POST"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`POST /api/container/{id}/database/{databaseId}/table/{tableId}/data/import` + +*Insert data from csv* + +> Body parameter + +```json +{ + "location": "string" +} +``` + +<h3 id="importcsv-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| +|tableId|path|integer(int64)|true|none| +|body|body|[ImportDto](#schemaimportdto)|true|none| + +> Example responses + +> 200 Response + +<h3 id="importcsv-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|integer| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|405|[Method Not Allowed](https://tools.ietf.org/html/rfc7231#section-6.5.5)|Method Not Allowed|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +<h1 id="database-repository-query-service-api-store-endpoint">store-endpoint</h1> + +## findAll + +<a id="opIdfindAll"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*' +} + +r = requests.get('http://localhost:9093/api/container/{id}/database/{databaseId}/query', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9093/api/container/{id}/database/{databaseId}/query"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`GET /api/container/{id}/database/{databaseId}/query` + +*Find queries* + +<h3 id="findall-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| + +> Example responses + +> 200 Response + +<h3 id="findall-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|Inline| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|405|[Method Not Allowed](https://tools.ietf.org/html/rfc7231#section-6.5.5)|Method Not Allowed|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<h3 id="findall-responseschema">Response Schema</h3> + +Status Code **200** + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|*anonymous*|[[QueryDto](#schemaquerydto)]|false|none|none| +|» id|integer(int64)|true|none|none| +|» cid|integer(int64)|true|none|none| +|» dbid|integer(int64)|true|none|none| +|» execution|string(date-time)|false|none|none| +|» query|string|true|none|none| +|» created|string(date-time)|true|none|none| +|» query_normalized|string|false|none|none| +|» query_hash|string|true|none|none| +|» result_hash|string|false|none|none| +|» result_number|integer(int64)|false|none|none| +|» last_modified|string(date-time)|false|none|none| + +<aside class="success"> +This operation does not require authentication +</aside> + +## find + +<a id="opIdfind"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*' +} + +r = requests.get('http://localhost:9093/api/container/{id}/database/{databaseId}/query/{queryId}', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9093/api/container/{id}/database/{databaseId}/query/{queryId}"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`GET /api/container/{id}/database/{databaseId}/query/{queryId}` + +*Find some query* + +<h3 id="find-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| +|queryId|path|integer(int64)|true|none| + +> Example responses + +> 200 Response + +<h3 id="find-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[QueryDto](#schemaquerydto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|405|[Method Not Allowed](https://tools.ietf.org/html/rfc7231#section-6.5.5)|Method Not Allowed|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<aside class="success"> +This operation does not require authentication +</aside> + +<h1 id="database-repository-query-service-api-query-endpoint">query-endpoint</h1> + +## execute + +<a id="opIdexecute"></a> + +> Code samples + +```python +import requests +headers = { + 'Content-Type': 'application/json', + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.put('http://localhost:9093/api/container/{id}/database/{databaseId}/query', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9093/api/container/{id}/database/{databaseId}/query"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("PUT"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`PUT /api/container/{id}/database/{databaseId}/query` + +*Execute query* + +> Body parameter + +```json +{ + "statement": "string", + "tables": [ + { + "id": 0, + "name": "string", + "internal_name": "string" + } + ], + "columns": [ + [ + { + "id": 0, + "name": "string", + "internal_name": "string" + } + ] + ] +} +``` + +<h3 id="execute-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| +|page|query|integer(int64)|false|none| +|size|query|integer(int64)|false|none| +|body|body|[ExecuteStatementDto](#schemaexecutestatementdto)|true|none| + +> Example responses + +> 200 Response + +<h3 id="execute-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[QueryResultDto](#schemaqueryresultdto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|405|[Method Not Allowed](https://tools.ietf.org/html/rfc7231#section-6.5.5)|Method Not Allowed|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +## reExecute + +<a id="opIdreExecute"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.put('http://localhost:9093/api/container/{id}/database/{databaseId}/query/{queryId}', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9093/api/container/{id}/database/{databaseId}/query/{queryId}"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("PUT"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`PUT /api/container/{id}/database/{databaseId}/query/{queryId}` + +*Re-execute some query* + +<h3 id="reexecute-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| +|queryId|path|integer(int64)|true|none| +|page|query|integer(int64)|false|none| +|size|query|integer(int64)|false|none| + +> Example responses + +> 200 Response + +<h3 id="reexecute-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|[QueryResultDto](#schemaqueryresultdto)| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|405|[Method Not Allowed](https://tools.ietf.org/html/rfc7231#section-6.5.5)|Method Not Allowed|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +<h1 id="database-repository-query-service-api-export-endpoint">export-endpoint</h1> + +## export + +<a id="opIdexport"></a> + +> Code samples + +```python +import requests +headers = { + 'Accept': '*/*', + 'Authorization': 'Bearer {access-token}' +} + +r = requests.get('http://localhost:9093/api/container/{id}/database/{databaseId}/table/{tableId}/export', headers = headers) + +print(r.json()) + +``` + +```java +URL obj = new URL("http://localhost:9093/api/container/{id}/database/{databaseId}/table/{tableId}/export"); +HttpURLConnection con = (HttpURLConnection) obj.openConnection(); +con.setRequestMethod("GET"); +int responseCode = con.getResponseCode(); +BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); +String inputLine; +StringBuffer response = new StringBuffer(); +while ((inputLine = in.readLine()) != null) { + response.append(inputLine); +} +in.close(); +System.out.println(response.toString()); + +``` + +`GET /api/container/{id}/database/{databaseId}/table/{tableId}/export` + +*Export table* + +<h3 id="export-parameters">Parameters</h3> + +|Name|In|Type|Required|Description| +|---|---|---|---|---| +|id|path|integer(int64)|true|none| +|databaseId|path|integer(int64)|true|none| +|tableId|path|integer(int64)|true|none| +|timestamp|query|string(date-time)|false|none| + +> Example responses + +> 200 Response + +<h3 id="export-responses">Responses</h3> + +|Status|Meaning|Description|Schema| +|---|---|---|---| +|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|OK|string| +|400|[Bad Request](https://tools.ietf.org/html/rfc7231#section-6.5.1)|Bad Request|[ApiErrorDto](#schemaapierrordto)| +|404|[Not Found](https://tools.ietf.org/html/rfc7231#section-6.5.4)|Not Found|[ApiErrorDto](#schemaapierrordto)| +|405|[Method Not Allowed](https://tools.ietf.org/html/rfc7231#section-6.5.5)|Method Not Allowed|[ApiErrorDto](#schemaapierrordto)| +|409|[Conflict](https://tools.ietf.org/html/rfc7231#section-6.5.8)|Conflict|[ApiErrorDto](#schemaapierrordto)| + +<aside class="warning"> +To perform this operation, you must be authenticated by means of one of the following methods: +bearerAuth +</aside> + +# Schemas + +<h2 id="tocS_ApiErrorDto">ApiErrorDto</h2> +<!-- backwards compatibility --> +<a id="schemaapierrordto"></a> +<a id="schema_ApiErrorDto"></a> +<a id="tocSapierrordto"></a> +<a id="tocsapierrordto"></a> + +```json +{ + "status": "100 CONTINUE", + "message": "string", + "code": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|status|string|true|none|none| +|message|string|true|none|none| +|code|string|true|none|none| + +#### Enumerated Values + +|Property|Value| +|---|---| +|status|100 CONTINUE| +|status|101 SWITCHING_PROTOCOLS| +|status|102 PROCESSING| +|status|103 CHECKPOINT| +|status|200 OK| +|status|201 CREATED| +|status|202 ACCEPTED| +|status|203 NON_AUTHORITATIVE_INFORMATION| +|status|204 NO_CONTENT| +|status|205 RESET_CONTENT| +|status|206 PARTIAL_CONTENT| +|status|207 MULTI_STATUS| +|status|208 ALREADY_REPORTED| +|status|226 IM_USED| +|status|300 MULTIPLE_CHOICES| +|status|301 MOVED_PERMANENTLY| +|status|302 FOUND| +|status|302 MOVED_TEMPORARILY| +|status|303 SEE_OTHER| +|status|304 NOT_MODIFIED| +|status|305 USE_PROXY| +|status|307 TEMPORARY_REDIRECT| +|status|308 PERMANENT_REDIRECT| +|status|400 BAD_REQUEST| +|status|401 UNAUTHORIZED| +|status|402 PAYMENT_REQUIRED| +|status|403 FORBIDDEN| +|status|404 NOT_FOUND| +|status|405 METHOD_NOT_ALLOWED| +|status|406 NOT_ACCEPTABLE| +|status|407 PROXY_AUTHENTICATION_REQUIRED| +|status|408 REQUEST_TIMEOUT| +|status|409 CONFLICT| +|status|410 GONE| +|status|411 LENGTH_REQUIRED| +|status|412 PRECONDITION_FAILED| +|status|413 PAYLOAD_TOO_LARGE| +|status|413 REQUEST_ENTITY_TOO_LARGE| +|status|414 URI_TOO_LONG| +|status|414 REQUEST_URI_TOO_LONG| +|status|415 UNSUPPORTED_MEDIA_TYPE| +|status|416 REQUESTED_RANGE_NOT_SATISFIABLE| +|status|417 EXPECTATION_FAILED| +|status|418 I_AM_A_TEAPOT| +|status|419 INSUFFICIENT_SPACE_ON_RESOURCE| +|status|420 METHOD_FAILURE| +|status|421 DESTINATION_LOCKED| +|status|422 UNPROCESSABLE_ENTITY| +|status|423 LOCKED| +|status|424 FAILED_DEPENDENCY| +|status|425 TOO_EARLY| +|status|426 UPGRADE_REQUIRED| +|status|428 PRECONDITION_REQUIRED| +|status|429 TOO_MANY_REQUESTS| +|status|431 REQUEST_HEADER_FIELDS_TOO_LARGE| +|status|451 UNAVAILABLE_FOR_LEGAL_REASONS| +|status|500 INTERNAL_SERVER_ERROR| +|status|501 NOT_IMPLEMENTED| +|status|502 BAD_GATEWAY| +|status|503 SERVICE_UNAVAILABLE| +|status|504 GATEWAY_TIMEOUT| +|status|505 HTTP_VERSION_NOT_SUPPORTED| +|status|506 VARIANT_ALSO_NEGOTIATES| +|status|507 INSUFFICIENT_STORAGE| +|status|508 LOOP_DETECTED| +|status|509 BANDWIDTH_LIMIT_EXCEEDED| +|status|510 NOT_EXTENDED| +|status|511 NETWORK_AUTHENTICATION_REQUIRED| + +<h2 id="tocS_QueryResultDto">QueryResultDto</h2> +<!-- backwards compatibility --> +<a id="schemaqueryresultdto"></a> +<a id="schema_QueryResultDto"></a> +<a id="tocSqueryresultdto"></a> +<a id="tocsqueryresultdto"></a> + +```json +{ + "result": [ + { + "property1": {}, + "property2": {} + } + ], + "id": 0, + "resultNumber": 0 +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|result|[object]|true|none|none| +|» **additionalProperties**|object|false|none|none| +|id|integer(int64)|true|none|none| +|resultNumber|integer(int64)|false|none|none| + +<h2 id="tocS_ColumnBriefDto">ColumnBriefDto</h2> +<!-- backwards compatibility --> +<a id="schemacolumnbriefdto"></a> +<a id="schema_ColumnBriefDto"></a> +<a id="tocScolumnbriefdto"></a> +<a id="tocscolumnbriefdto"></a> + +```json +{ + "id": 0, + "name": "string", + "internal_name": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|internal_name|string|true|none|none| + +<h2 id="tocS_ExecuteStatementDto">ExecuteStatementDto</h2> +<!-- backwards compatibility --> +<a id="schemaexecutestatementdto"></a> +<a id="schema_ExecuteStatementDto"></a> +<a id="tocSexecutestatementdto"></a> +<a id="tocsexecutestatementdto"></a> + +```json +{ + "statement": "string", + "tables": [ + { + "id": 0, + "name": "string", + "internal_name": "string" + } + ], + "columns": [ + [ + { + "id": 0, + "name": "string", + "internal_name": "string" + } + ] + ] +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|statement|string|true|none|none| +|tables|[[TableBriefDto](#schematablebriefdto)]|true|none|none| +|columns|[array]|true|none|none| + +<h2 id="tocS_TableBriefDto">TableBriefDto</h2> +<!-- backwards compatibility --> +<a id="schematablebriefdto"></a> +<a id="schema_TableBriefDto"></a> +<a id="tocStablebriefdto"></a> +<a id="tocstablebriefdto"></a> + +```json +{ + "id": 0, + "name": "string", + "internal_name": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|name|string|true|none|none| +|internal_name|string|true|none|none| + +<h2 id="tocS_TableCsvDto">TableCsvDto</h2> +<!-- backwards compatibility --> +<a id="schematablecsvdto"></a> +<a id="schema_TableCsvDto"></a> +<a id="tocStablecsvdto"></a> +<a id="tocstablecsvdto"></a> + +```json +{ + "data": { + "property1": {}, + "property2": {} + } +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|data|object|true|none|none| +|» **additionalProperties**|object|false|none|none| + +<h2 id="tocS_ImportDto">ImportDto</h2> +<!-- backwards compatibility --> +<a id="schemaimportdto"></a> +<a id="schema_ImportDto"></a> +<a id="tocSimportdto"></a> +<a id="tocsimportdto"></a> + +```json +{ + "location": "string" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|location|string|true|none|none| + +<h2 id="tocS_QueryDto">QueryDto</h2> +<!-- backwards compatibility --> +<a id="schemaquerydto"></a> +<a id="schema_QueryDto"></a> +<a id="tocSquerydto"></a> +<a id="tocsquerydto"></a> + +```json +{ + "id": 0, + "cid": 0, + "dbid": 0, + "execution": "2019-08-24T14:15:22Z", + "query": "string", + "created": "2019-08-24T14:15:22Z", + "query_normalized": "string", + "query_hash": "string", + "result_hash": "string", + "result_number": 0, + "last_modified": "2019-08-24T14:15:22Z" +} + +``` + +### Properties + +|Name|Type|Required|Restrictions|Description| +|---|---|---|---|---| +|id|integer(int64)|true|none|none| +|cid|integer(int64)|true|none|none| +|dbid|integer(int64)|true|none|none| +|execution|string(date-time)|false|none|none| +|query|string|true|none|none| +|created|string(date-time)|true|none|none| +|query_normalized|string|false|none|none| +|query_hash|string|true|none|none| +|result_hash|string|false|none|none| +|result_number|integer(int64)|false|none|none| +|last_modified|string(date-time)|false|none|none| + diff --git a/docs/system.md b/docs/system.md index d6d5d57..e5d8283 100644 --- a/docs/system.md +++ b/docs/system.md @@ -9,6 +9,100 @@ hide: ## Architecture +The repository is designed as a microservice architecture to ensure scalability and the utilization of various +technologies. The conceptualized microservices operate the basic database operations, data versioning as well as +*findability*, *accessability*, *interoperability* and *reuseability* (FAIR). + +<figure markdown> + +<figcaption>Microservice cloud architecture</figcaption> +</figure> + +### Discovery Service + +This microservice allows service discovery and registration of containers that provide services. + +### Gateway Service + +Provides a single point of access to the *application programming interface* (API). + +### Authentication Service + +Very specific to the deployment of the organization. In our reference implementation we implement a *security assertion +markup language* (SAML) service provider and use our institutional SAML identity provider for obtaining account data +through an encrypted channel. + +### Metadata Database + +is the core component of the project. It is a relational database that contains metadata about all researcher databases +created in the database repository like column names, check expressions, value enumerations or key/value constraints and +relevant data for citing data sets. Additionally, the concept, e.g. URI of units of measurements of numerical columns is +stored in the Metadata Database in order to provide semantic knowledge context. We +use [PostgreSQL](https://www.postgresql.org/) for its rich capabilities in the reference implementation. + +### Unit Service + +It is designed to map terms in the domain of units of measurement to controlled vocabulary, modelled in +the [ontology of units of measure](https://github.com/HajoRijgersberg/OM). This service validates researcher provided in +units and provides a *uniform resource identifier* (URI) to the related concept, which will be stored in the system. +Furthermore, there is a method for auto-completing text and listing a description as well as commonly used unit symbols. + +### Identifier Service + +This microservice is responsible for creating and resolving a *persistent identifier* (PID) attached to a query to +obtain the metadata attached to it and allow re-execution of a query. We store both the query and hashes of the query +and result set to allow equality checks of the originally obtained result set and the currently obtained result set. In +the reference implementation we currently only use a numerical id column and plan to integrate *digital object +identifier* (DOI) through our institutional library soon. + +### Search Service + +It processes search requests from the Gateway Service for full-text lookups in the Metadata Database. We use +[Elasticsearch](https://www.elastic.co/) in the reference implementation. + +### Container Service + +It is responsible for Docker container lifecycle operations and updating the local copy of the Docker images. + +### Database Service + +It creates the databases inside a Docker container and the Query Store. Currently we only +support [MariaDB](https://mariadb.org/) images that allow table versioning with low programmatic effort. + +### Table Service + +This microservice handles table operations inside a database that is managed by the Database Service. We +use [Hibernate](https://hibernate.org/orm/) for schema and data ingest operations. + +### Broker Service + +It holds exchanges and topics responsible for holding AMQP messages for later consumption. We +use [RabbitMQ](https://www.rabbitmq.com/) in the reference implementation. + +### Query Service + +It provides an interface to insert data into the tables created by the Table Service. It also allows for view-only, +paginated and versioned query execution to the raw data and consumes messages in the message queue from the Broker +Service. + +### Portal + +It provides a *graphical user interface* (GUI) for a researcher to interact with the database repository's API. + +### Analyse Service + +It suggests data types for the FAIR Portal when creating a table from a *comma separated values* (CSV) file. It +recommends enumerations for columns and returns e.g. a list of potential primary key candidates. The researcher is able +to confirm these suggestions manually. Moreover, the *Analyze Service* determines basic statistical properties of +numerical columns. + +### User Database + +This container runs a relational database engine that allows data versioning and contains the Query Store, a special +table that stores all queries issued to the Researcher Database along with metadata. We store the queries here and not +in the metadata database level to ensure that they are preserved along with the original database for a regular backup +and archival together with the original database once the container is retired. + ### Technical We use Docker for deployment. The containers are packing all runtime dependencies, when starting them all necessary diff --git a/misc/api-authentication.yaml b/misc/api-authentication.yaml new file mode 100644 index 0000000..865b416 --- /dev/null +++ b/misc/api-authentication.yaml @@ -0,0 +1,688 @@ +openapi: 3.0.1 +info: + title: Database Repository Authentication Service API + description: Service that manages the authentication + contact: + name: Prof. Andreas Rauber + email: andreas.rauber@tuwien.ac.at + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0 + version: 1.1.0-alpha +externalDocs: + description: Wiki Documentation + url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/wikis +servers: +- url: http://localhost:9097 + description: Generated server url +paths: + /api/auth: + put: + tags: + - authentication-endpoint + summary: Validate token + operationId: authenticateUser + responses: + "417": + description: Expectation Failed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/UserDto' + security: + - bearerAuth: [] + post: + tags: + - authentication-endpoint + summary: Create token + operationId: authenticateUser_1 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LoginRequestDto' + required: true + responses: + "417": + description: Expectation Failed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/JwtResponseDto' + /api/user: + get: + tags: + - user-endpoint + summary: List users + operationId: list + responses: + "417": + description: Expectation Failed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/UserDto' + security: + - bearerAuth: [] + post: + tags: + - user-endpoint + summary: Create user + operationId: register + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SignupRequestDto' + required: true + responses: + "417": + description: Expectation Failed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/UserDto' +components: + schemas: + ApiErrorDto: + required: + - code + - message + - status + type: object + properties: + status: + type: string + enum: + - 100 CONTINUE + - 101 SWITCHING_PROTOCOLS + - 102 PROCESSING + - 103 CHECKPOINT + - 200 OK + - 201 CREATED + - 202 ACCEPTED + - 203 NON_AUTHORITATIVE_INFORMATION + - 204 NO_CONTENT + - 205 RESET_CONTENT + - 206 PARTIAL_CONTENT + - 207 MULTI_STATUS + - 208 ALREADY_REPORTED + - 226 IM_USED + - 300 MULTIPLE_CHOICES + - 301 MOVED_PERMANENTLY + - 302 FOUND + - 302 MOVED_TEMPORARILY + - 303 SEE_OTHER + - 304 NOT_MODIFIED + - 305 USE_PROXY + - 307 TEMPORARY_REDIRECT + - 308 PERMANENT_REDIRECT + - 400 BAD_REQUEST + - 401 UNAUTHORIZED + - 402 PAYMENT_REQUIRED + - 403 FORBIDDEN + - 404 NOT_FOUND + - 405 METHOD_NOT_ALLOWED + - 406 NOT_ACCEPTABLE + - 407 PROXY_AUTHENTICATION_REQUIRED + - 408 REQUEST_TIMEOUT + - 409 CONFLICT + - 410 GONE + - 411 LENGTH_REQUIRED + - 412 PRECONDITION_FAILED + - 413 PAYLOAD_TOO_LARGE + - 413 REQUEST_ENTITY_TOO_LARGE + - 414 URI_TOO_LONG + - 414 REQUEST_URI_TOO_LONG + - 415 UNSUPPORTED_MEDIA_TYPE + - 416 REQUESTED_RANGE_NOT_SATISFIABLE + - 417 EXPECTATION_FAILED + - 418 I_AM_A_TEAPOT + - 419 INSUFFICIENT_SPACE_ON_RESOURCE + - 420 METHOD_FAILURE + - 421 DESTINATION_LOCKED + - 422 UNPROCESSABLE_ENTITY + - 423 LOCKED + - 424 FAILED_DEPENDENCY + - 425 TOO_EARLY + - 426 UPGRADE_REQUIRED + - 428 PRECONDITION_REQUIRED + - 429 TOO_MANY_REQUESTS + - 431 REQUEST_HEADER_FIELDS_TOO_LARGE + - 451 UNAVAILABLE_FOR_LEGAL_REASONS + - 500 INTERNAL_SERVER_ERROR + - 501 NOT_IMPLEMENTED + - 502 BAD_GATEWAY + - 503 SERVICE_UNAVAILABLE + - 504 GATEWAY_TIMEOUT + - 505 HTTP_VERSION_NOT_SUPPORTED + - 506 VARIANT_ALSO_NEGOTIATES + - 507 INSUFFICIENT_STORAGE + - 508 LOOP_DETECTED + - 509 BANDWIDTH_LIMIT_EXCEEDED + - 510 NOT_EXTENDED + - 511 NETWORK_AUTHENTICATION_REQUIRED + message: + type: string + code: + type: string + ColumnDto: + required: + - auto_generated + - column_concept + - column_type + - date_format + - id + - internal_name + - is_null_allowed + - is_primary_key + - name + - unique + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + unique: + type: boolean + references: + type: string + internal_name: + type: string + date_format: + $ref: '#/components/schemas/ImageDateDto' + auto_generated: + type: boolean + is_primary_key: + type: boolean + column_type: + type: string + enum: + - ColumnTypeDto.ENUM + - ColumnTypeDto.NUMBER + - ColumnTypeDto.DECIMAL + - ColumnTypeDto.STRING + - ColumnTypeDto.TEXT + - ColumnTypeDto.BOOLEAN + - ColumnTypeDto.DATE + - ColumnTypeDto.BLOB + column_concept: + $ref: '#/components/schemas/ConceptDto' + decimal_digits_before: + type: integer + format: int64 + decimal_digits_after: + type: integer + format: int64 + is_null_allowed: + type: boolean + check_expression: + type: string + foreign_key: + type: string + enum_values: + type: array + items: + type: string + ConceptDto: + required: + - created + - name + - uri + type: object + properties: + uri: + type: string + name: + type: string + created: + type: string + format: date-time + ContainerDto: + required: + - created + - databases + - hash + - id + - image + - internal_name + - ip_address + - is_public + - name + - port + - state + type: object + properties: + id: + type: integer + format: int64 + hash: + type: string + name: + type: string + state: + type: string + enum: + - ContainerStateDto.CREATED + - ContainerStateDto.RESTARTING + - ContainerStateDto.RUNNING + - ContainerStateDto.PAUSED + - ContainerStateDto.EXITED + - ContainerStateDto.DEAD + databases: + type: array + items: + $ref: '#/components/schemas/DatabaseDto' + image: + $ref: '#/components/schemas/ImageDto' + port: + type: integer + format: int32 + created: + type: string + format: date-time + internal_name: + type: string + ip_address: + type: string + is_public: + type: boolean + DatabaseDto: + required: + - container + - description + - exchange + - id + - image + - internal_name + - name + - tables + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + description: + type: string + publisher: + type: string + license: + type: string + contact: + $ref: '#/components/schemas/UserDto' + tables: + type: array + items: + $ref: '#/components/schemas/TableDto' + exchange: + type: string + image: + $ref: '#/components/schemas/ImageDto' + container: + $ref: '#/components/schemas/ContainerDto' + created: + type: string + format: date-time + deleted: + type: string + format: date-time + internal_name: + type: string + GrantedAuthorityDto: + type: object + properties: + authority: + type: string + ImageDateDto: + required: + - database_format + - example + - id + - unix_format + type: object + properties: + id: + type: integer + format: int64 + example: + type: string + database_format: + type: string + unix_format: + type: string + created_at: + type: string + format: date-time + ImageDto: + required: + - default_port + - dialect + - driver_class + - environment + - id + - jdbc_method + - repository + - tag + type: object + properties: + id: + type: integer + format: int64 + repository: + type: string + tag: + type: string + logo: + type: string + dialect: + type: string + hash: + type: string + compiled: + type: string + format: date-time + size: + type: integer + environment: + type: array + items: + $ref: '#/components/schemas/ImageEnvItemDto' + driver_class: + type: string + date_formats: + type: array + items: + $ref: '#/components/schemas/ImageDateDto' + jdbc_method: + type: string + default_port: + type: integer + format: int32 + ImageEnvItemDto: + required: + - iid + - key + - value + type: object + properties: + iid: + type: integer + format: int64 + key: + type: string + value: + type: string + type: + type: string + enum: + - USERNAME + - PASSWORD + - PRIVILEGED_USERNAME + - PRIVILEGED_PASSWORD + TableDto: + required: + - columns + - description + - id + - internal_name + - name + - null_element + - quote + - separator + - topic + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + topic: + type: string + description: + type: string + separator: + type: string + quote: + type: string + created: + type: string + format: date-time + columns: + type: array + items: + $ref: '#/components/schemas/ColumnDto' + internal_name: + type: string + null_element: + type: string + skip_lines: + type: integer + format: int64 + true_element: + type: string + false_element: + type: string + UserDto: + required: + - containers + - databases + - email + - firstname + - identifiers + - lastname + - titlesAfter + - titlesBefore + - username + type: object + properties: + id: + type: integer + format: int64 + authorities: + type: array + items: + $ref: '#/components/schemas/GrantedAuthorityDto' + username: + type: string + titlesBefore: + type: string + titlesAfter: + type: string + firstname: + type: string + lastname: + type: string + containers: + type: array + items: + $ref: '#/components/schemas/ContainerDto' + databases: + type: array + items: + $ref: '#/components/schemas/ContainerDto' + identifiers: + type: array + items: + $ref: '#/components/schemas/ContainerDto' + email: + type: string + SignupRequestDto: + required: + - email + - password + - username + type: object + properties: + username: + type: string + email: + type: string + password: + type: string + LoginRequestDto: + required: + - password + - username + type: object + properties: + username: + type: string + password: + type: string + JwtResponseDto: + required: + - email + - id + - roles + - token + - type + - username + type: object + properties: + token: + type: string + type: + type: string + id: + type: integer + format: int64 + username: + type: string + email: + type: string + roles: + type: array + items: + type: string + securitySchemes: + bearerAuth: + type: http + scheme: bearer + bearerFormat: JWT diff --git a/misc/api-container.yaml b/misc/api-container.yaml new file mode 100644 index 0000000..c41b9f5 --- /dev/null +++ b/misc/api-container.yaml @@ -0,0 +1,1075 @@ +openapi: 3.0.1 +info: + title: Database Repository Container Service API + description: Service that manages the containers + contact: + name: Prof. Andreas Rauber + email: andreas.rauber@tuwien.ac.at + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0 + version: 1.1.0-alpha +externalDocs: + description: Wiki Documentation + url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/wikis +servers: +- url: http://localhost:9091 + description: Generated server url +paths: + /api/image/{id}: + get: + tags: + - image-endpoint + summary: Find some image + operationId: findById + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ImageDto' + put: + tags: + - image-endpoint + summary: Update some image + operationId: update + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ImageChangeDto' + required: true + responses: + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ImageDto' + security: + - bearerAuth: [] + delete: + tags: + - image-endpoint + summary: Delete some image + operationId: delete + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + type: object + security: + - bearerAuth: [] + /api/container/{id}: + get: + tags: + - container-endpoint + summary: Find some container + operationId: findById_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ContainerDto' + put: + tags: + - container-endpoint + summary: Modify some container + operationId: modify + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ContainerChangeDto' + required: true + responses: + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ContainerBriefDto' + security: + - bearerAuth: [] + delete: + tags: + - container-endpoint + summary: Delete some container + operationId: delete_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + type: object + security: + - bearerAuth: [] + /api/image: + get: + tags: + - image-endpoint + summary: Find all images + operationId: findAll + responses: + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/ImageBriefDto' + post: + tags: + - image-endpoint + summary: Create image + operationId: create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ImageCreateDto' + required: true + responses: + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ImageDto' + security: + - bearerAuth: [] + /api/container: + get: + tags: + - container-endpoint + summary: Find all containers + operationId: findAll_1 + responses: + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/ContainerBriefDto' + post: + tags: + - container-endpoint + summary: Create container + operationId: create_1 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ContainerCreateRequestDto' + required: true + responses: + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Forbidden + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/ContainerBriefDto' + security: + - bearerAuth: [] +components: + schemas: + ApiErrorDto: + required: + - code + - message + - status + type: object + properties: + status: + type: string + enum: + - 100 CONTINUE + - 101 SWITCHING_PROTOCOLS + - 102 PROCESSING + - 103 CHECKPOINT + - 200 OK + - 201 CREATED + - 202 ACCEPTED + - 203 NON_AUTHORITATIVE_INFORMATION + - 204 NO_CONTENT + - 205 RESET_CONTENT + - 206 PARTIAL_CONTENT + - 207 MULTI_STATUS + - 208 ALREADY_REPORTED + - 226 IM_USED + - 300 MULTIPLE_CHOICES + - 301 MOVED_PERMANENTLY + - 302 FOUND + - 302 MOVED_TEMPORARILY + - 303 SEE_OTHER + - 304 NOT_MODIFIED + - 305 USE_PROXY + - 307 TEMPORARY_REDIRECT + - 308 PERMANENT_REDIRECT + - 400 BAD_REQUEST + - 401 UNAUTHORIZED + - 402 PAYMENT_REQUIRED + - 403 FORBIDDEN + - 404 NOT_FOUND + - 405 METHOD_NOT_ALLOWED + - 406 NOT_ACCEPTABLE + - 407 PROXY_AUTHENTICATION_REQUIRED + - 408 REQUEST_TIMEOUT + - 409 CONFLICT + - 410 GONE + - 411 LENGTH_REQUIRED + - 412 PRECONDITION_FAILED + - 413 PAYLOAD_TOO_LARGE + - 413 REQUEST_ENTITY_TOO_LARGE + - 414 URI_TOO_LONG + - 414 REQUEST_URI_TOO_LONG + - 415 UNSUPPORTED_MEDIA_TYPE + - 416 REQUESTED_RANGE_NOT_SATISFIABLE + - 417 EXPECTATION_FAILED + - 418 I_AM_A_TEAPOT + - 419 INSUFFICIENT_SPACE_ON_RESOURCE + - 420 METHOD_FAILURE + - 421 DESTINATION_LOCKED + - 422 UNPROCESSABLE_ENTITY + - 423 LOCKED + - 424 FAILED_DEPENDENCY + - 425 TOO_EARLY + - 426 UPGRADE_REQUIRED + - 428 PRECONDITION_REQUIRED + - 429 TOO_MANY_REQUESTS + - 431 REQUEST_HEADER_FIELDS_TOO_LARGE + - 451 UNAVAILABLE_FOR_LEGAL_REASONS + - 500 INTERNAL_SERVER_ERROR + - 501 NOT_IMPLEMENTED + - 502 BAD_GATEWAY + - 503 SERVICE_UNAVAILABLE + - 504 GATEWAY_TIMEOUT + - 505 HTTP_VERSION_NOT_SUPPORTED + - 506 VARIANT_ALSO_NEGOTIATES + - 507 INSUFFICIENT_STORAGE + - 508 LOOP_DETECTED + - 509 BANDWIDTH_LIMIT_EXCEEDED + - 510 NOT_EXTENDED + - 511 NETWORK_AUTHENTICATION_REQUIRED + message: + type: string + code: + type: string + ImageChangeDto: + required: + - dialect + - driver_class + - jdbc_method + - logo + type: object + properties: + defaultPort: + maximum: 65535 + minimum: 1024 + type: integer + format: int32 + environment: + type: array + items: + $ref: '#/components/schemas/ImageEnvItemDto' + logo: + type: string + dialect: + type: string + driver_class: + type: string + jdbc_method: + type: string + ImageEnvItemDto: + required: + - iid + - key + - value + type: object + properties: + iid: + type: integer + format: int64 + key: + type: string + value: + type: string + type: + type: string + enum: + - USERNAME + - PASSWORD + - PRIVILEGED_USERNAME + - PRIVILEGED_PASSWORD + ImageDateDto: + required: + - database_format + - example + - id + - unix_format + type: object + properties: + id: + type: integer + format: int64 + example: + type: string + database_format: + type: string + unix_format: + type: string + created_at: + type: string + format: date-time + ImageDto: + required: + - default_port + - dialect + - driver_class + - environment + - id + - jdbc_method + - repository + - tag + type: object + properties: + id: + type: integer + format: int64 + repository: + type: string + tag: + type: string + logo: + type: string + dialect: + type: string + hash: + type: string + compiled: + type: string + format: date-time + size: + type: integer + environment: + type: array + items: + $ref: '#/components/schemas/ImageEnvItemDto' + driver_class: + type: string + date_formats: + type: array + items: + $ref: '#/components/schemas/ImageDateDto' + jdbc_method: + type: string + default_port: + type: integer + format: int32 + ContainerChangeDto: + required: + - action + type: object + properties: + action: + type: string + enum: + - ContainerActionTypeDto.START + - ContainerActionTypeDto.STOP + ContainerBriefDto: + required: + - hash + - id + - internal_name + - is_public + - name + type: object + properties: + id: + type: integer + format: int64 + hash: + type: string + name: + type: string + internal_name: + type: string + is_public: + type: boolean + ImageCreateDto: + required: + - default_port + - dialect + - driver_class + - jdbc_method + - local + - logo + - repository + - tag + type: object + properties: + repository: + type: string + tag: + type: string + dialect: + type: string + logo: + type: string + local: + type: boolean + environment: + type: array + items: + $ref: '#/components/schemas/ImageEnvItemDto' + driver_class: + type: string + jdbc_method: + type: string + default_port: + type: integer + format: int32 + ContainerCreateRequestDto: + required: + - name + - repository + - tag + type: object + properties: + name: + type: string + repository: + type: string + tag: + type: string + ImageBriefDto: + required: + - id + - repository + - tag + type: object + properties: + id: + type: integer + format: int64 + repository: + type: string + logo: + type: string + tag: + type: string + ColumnDto: + required: + - auto_generated + - column_concept + - column_type + - date_format + - id + - internal_name + - is_null_allowed + - is_primary_key + - name + - unique + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + unique: + type: boolean + references: + type: string + internal_name: + type: string + date_format: + $ref: '#/components/schemas/ImageDateDto' + auto_generated: + type: boolean + is_primary_key: + type: boolean + column_type: + type: string + enum: + - ColumnTypeDto.ENUM + - ColumnTypeDto.NUMBER + - ColumnTypeDto.DECIMAL + - ColumnTypeDto.STRING + - ColumnTypeDto.TEXT + - ColumnTypeDto.BOOLEAN + - ColumnTypeDto.DATE + - ColumnTypeDto.BLOB + column_concept: + $ref: '#/components/schemas/ConceptDto' + decimal_digits_before: + type: integer + format: int64 + decimal_digits_after: + type: integer + format: int64 + is_null_allowed: + type: boolean + check_expression: + type: string + foreign_key: + type: string + enum_values: + type: array + items: + type: string + ConceptDto: + required: + - created + - name + - uri + type: object + properties: + uri: + type: string + name: + type: string + created: + type: string + format: date-time + ContainerDto: + required: + - created + - databases + - hash + - id + - image + - internal_name + - ip_address + - is_public + - name + - port + - state + type: object + properties: + id: + type: integer + format: int64 + hash: + type: string + name: + type: string + state: + type: string + enum: + - ContainerStateDto.CREATED + - ContainerStateDto.RESTARTING + - ContainerStateDto.RUNNING + - ContainerStateDto.PAUSED + - ContainerStateDto.EXITED + - ContainerStateDto.DEAD + databases: + type: array + items: + $ref: '#/components/schemas/DatabaseDto' + image: + $ref: '#/components/schemas/ImageDto' + port: + type: integer + format: int32 + created: + type: string + format: date-time + internal_name: + type: string + ip_address: + type: string + is_public: + type: boolean + DatabaseDto: + required: + - container + - description + - exchange + - id + - image + - internal_name + - name + - tables + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + description: + type: string + publisher: + type: string + license: + type: string + contact: + $ref: '#/components/schemas/UserDto' + tables: + type: array + items: + $ref: '#/components/schemas/TableDto' + exchange: + type: string + image: + $ref: '#/components/schemas/ImageDto' + container: + $ref: '#/components/schemas/ContainerDto' + created: + type: string + format: date-time + deleted: + type: string + format: date-time + internal_name: + type: string + GrantedAuthorityDto: + type: object + properties: + authority: + type: string + TableDto: + required: + - columns + - description + - id + - internal_name + - name + - null_element + - quote + - separator + - topic + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + topic: + type: string + description: + type: string + separator: + type: string + quote: + type: string + created: + type: string + format: date-time + columns: + type: array + items: + $ref: '#/components/schemas/ColumnDto' + internal_name: + type: string + null_element: + type: string + skip_lines: + type: integer + format: int64 + true_element: + type: string + false_element: + type: string + UserDto: + required: + - containers + - databases + - email + - firstname + - identifiers + - lastname + - titlesAfter + - titlesBefore + - username + type: object + properties: + id: + type: integer + format: int64 + authorities: + type: array + items: + $ref: '#/components/schemas/GrantedAuthorityDto' + username: + type: string + titlesBefore: + type: string + titlesAfter: + type: string + firstname: + type: string + lastname: + type: string + containers: + type: array + items: + $ref: '#/components/schemas/ContainerDto' + databases: + type: array + items: + $ref: '#/components/schemas/ContainerDto' + identifiers: + type: array + items: + $ref: '#/components/schemas/ContainerDto' + email: + type: string + securitySchemes: + bearerAuth: + type: http + scheme: bearer + bearerFormat: JWT diff --git a/misc/api-database.yaml b/misc/api-database.yaml new file mode 100644 index 0000000..65b0c43 --- /dev/null +++ b/misc/api-database.yaml @@ -0,0 +1,707 @@ +openapi: 3.0.1 +info: + title: Database Repository Database Service API + description: Service that manages the databases + contact: + name: Prof. Andreas Rauber + email: andreas.rauber@tuwien.ac.at + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0 + version: 1.1.0-alpha +externalDocs: + description: Wiki Documentation + url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/wikis +servers: +- url: http://localhost:9092 + description: Generated server url +paths: + /api/container/{id}/database: + get: + tags: + - container-database-endpoint + summary: List databases + operationId: findAll + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + "405": + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "502": + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/DatabaseBriefDto' + post: + tags: + - container-database-endpoint + summary: Create database + operationId: create + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseCreateDto' + required: true + responses: + "405": + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "502": + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/DatabaseDto' + security: + - bearerAuth: [] + /api/container/{id}/database/{databaseId}: + get: + tags: + - container-database-endpoint + summary: List some database + operationId: findById + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "405": + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "502": + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/DatabaseDto' + delete: + tags: + - container-database-endpoint + summary: Delete some database + operationId: delete + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "405": + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "502": + description: Bad Gateway + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + type: object + security: + - bearerAuth: [] +components: + schemas: + ApiErrorDto: + required: + - code + - message + - status + type: object + properties: + status: + type: string + enum: + - 100 CONTINUE + - 101 SWITCHING_PROTOCOLS + - 102 PROCESSING + - 103 CHECKPOINT + - 200 OK + - 201 CREATED + - 202 ACCEPTED + - 203 NON_AUTHORITATIVE_INFORMATION + - 204 NO_CONTENT + - 205 RESET_CONTENT + - 206 PARTIAL_CONTENT + - 207 MULTI_STATUS + - 208 ALREADY_REPORTED + - 226 IM_USED + - 300 MULTIPLE_CHOICES + - 301 MOVED_PERMANENTLY + - 302 FOUND + - 302 MOVED_TEMPORARILY + - 303 SEE_OTHER + - 304 NOT_MODIFIED + - 305 USE_PROXY + - 307 TEMPORARY_REDIRECT + - 308 PERMANENT_REDIRECT + - 400 BAD_REQUEST + - 401 UNAUTHORIZED + - 402 PAYMENT_REQUIRED + - 403 FORBIDDEN + - 404 NOT_FOUND + - 405 METHOD_NOT_ALLOWED + - 406 NOT_ACCEPTABLE + - 407 PROXY_AUTHENTICATION_REQUIRED + - 408 REQUEST_TIMEOUT + - 409 CONFLICT + - 410 GONE + - 411 LENGTH_REQUIRED + - 412 PRECONDITION_FAILED + - 413 PAYLOAD_TOO_LARGE + - 413 REQUEST_ENTITY_TOO_LARGE + - 414 URI_TOO_LONG + - 414 REQUEST_URI_TOO_LONG + - 415 UNSUPPORTED_MEDIA_TYPE + - 416 REQUESTED_RANGE_NOT_SATISFIABLE + - 417 EXPECTATION_FAILED + - 418 I_AM_A_TEAPOT + - 419 INSUFFICIENT_SPACE_ON_RESOURCE + - 420 METHOD_FAILURE + - 421 DESTINATION_LOCKED + - 422 UNPROCESSABLE_ENTITY + - 423 LOCKED + - 424 FAILED_DEPENDENCY + - 425 TOO_EARLY + - 426 UPGRADE_REQUIRED + - 428 PRECONDITION_REQUIRED + - 429 TOO_MANY_REQUESTS + - 431 REQUEST_HEADER_FIELDS_TOO_LARGE + - 451 UNAVAILABLE_FOR_LEGAL_REASONS + - 500 INTERNAL_SERVER_ERROR + - 501 NOT_IMPLEMENTED + - 502 BAD_GATEWAY + - 503 SERVICE_UNAVAILABLE + - 504 GATEWAY_TIMEOUT + - 505 HTTP_VERSION_NOT_SUPPORTED + - 506 VARIANT_ALSO_NEGOTIATES + - 507 INSUFFICIENT_STORAGE + - 508 LOOP_DETECTED + - 509 BANDWIDTH_LIMIT_EXCEEDED + - 510 NOT_EXTENDED + - 511 NETWORK_AUTHENTICATION_REQUIRED + message: + type: string + code: + type: string + DatabaseCreateDto: + required: + - description + - is_public + - name + type: object + properties: + name: + type: string + description: + type: string + is_public: + type: boolean + ColumnDto: + required: + - auto_generated + - column_concept + - column_type + - date_format + - id + - internal_name + - is_null_allowed + - is_primary_key + - name + - unique + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + unique: + type: boolean + references: + type: string + internal_name: + type: string + date_format: + $ref: '#/components/schemas/ImageDateDto' + auto_generated: + type: boolean + is_primary_key: + type: boolean + column_type: + type: string + enum: + - ColumnTypeDto.ENUM + - ColumnTypeDto.NUMBER + - ColumnTypeDto.DECIMAL + - ColumnTypeDto.STRING + - ColumnTypeDto.TEXT + - ColumnTypeDto.BOOLEAN + - ColumnTypeDto.DATE + - ColumnTypeDto.BLOB + column_concept: + $ref: '#/components/schemas/ConceptDto' + decimal_digits_before: + type: integer + format: int64 + decimal_digits_after: + type: integer + format: int64 + is_null_allowed: + type: boolean + check_expression: + type: string + foreign_key: + type: string + enum_values: + type: array + items: + type: string + ConceptDto: + required: + - created + - name + - uri + type: object + properties: + uri: + type: string + name: + type: string + created: + type: string + format: date-time + ContainerDto: + required: + - created + - databases + - hash + - id + - image + - internal_name + - ip_address + - is_public + - name + - port + - state + type: object + properties: + id: + type: integer + format: int64 + hash: + type: string + name: + type: string + state: + type: string + enum: + - ContainerStateDto.CREATED + - ContainerStateDto.RESTARTING + - ContainerStateDto.RUNNING + - ContainerStateDto.PAUSED + - ContainerStateDto.EXITED + - ContainerStateDto.DEAD + databases: + type: array + items: + $ref: '#/components/schemas/DatabaseDto' + image: + $ref: '#/components/schemas/ImageDto' + port: + type: integer + format: int32 + created: + type: string + format: date-time + internal_name: + type: string + ip_address: + type: string + is_public: + type: boolean + DatabaseDto: + required: + - container + - description + - exchange + - id + - image + - internal_name + - name + - tables + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + description: + type: string + publisher: + type: string + license: + type: string + contact: + $ref: '#/components/schemas/UserDto' + tables: + type: array + items: + $ref: '#/components/schemas/TableDto' + exchange: + type: string + image: + $ref: '#/components/schemas/ImageDto' + container: + $ref: '#/components/schemas/ContainerDto' + created: + type: string + format: date-time + deleted: + type: string + format: date-time + internal_name: + type: string + GrantedAuthorityDto: + type: object + properties: + authority: + type: string + ImageDateDto: + required: + - database_format + - example + - id + - unix_format + type: object + properties: + id: + type: integer + format: int64 + example: + type: string + database_format: + type: string + unix_format: + type: string + created_at: + type: string + format: date-time + ImageDto: + required: + - default_port + - dialect + - driver_class + - environment + - id + - jdbc_method + - repository + - tag + type: object + properties: + id: + type: integer + format: int64 + repository: + type: string + tag: + type: string + logo: + type: string + dialect: + type: string + hash: + type: string + compiled: + type: string + format: date-time + size: + type: integer + environment: + type: array + items: + $ref: '#/components/schemas/ImageEnvItemDto' + driver_class: + type: string + date_formats: + type: array + items: + $ref: '#/components/schemas/ImageDateDto' + jdbc_method: + type: string + default_port: + type: integer + format: int32 + ImageEnvItemDto: + required: + - iid + - key + - value + type: object + properties: + iid: + type: integer + format: int64 + key: + type: string + value: + type: string + type: + type: string + enum: + - USERNAME + - PASSWORD + - PRIVILEGED_USERNAME + - PRIVILEGED_PASSWORD + TableDto: + required: + - columns + - description + - id + - internal_name + - name + - null_element + - quote + - separator + - topic + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + topic: + type: string + description: + type: string + separator: + type: string + quote: + type: string + created: + type: string + format: date-time + columns: + type: array + items: + $ref: '#/components/schemas/ColumnDto' + internal_name: + type: string + null_element: + type: string + skip_lines: + type: integer + format: int64 + true_element: + type: string + false_element: + type: string + UserDto: + required: + - containers + - databases + - email + - firstname + - identifiers + - lastname + - titlesAfter + - titlesBefore + - username + type: object + properties: + id: + type: integer + format: int64 + authorities: + type: array + items: + $ref: '#/components/schemas/GrantedAuthorityDto' + username: + type: string + titlesBefore: + type: string + titlesAfter: + type: string + firstname: + type: string + lastname: + type: string + containers: + type: array + items: + $ref: '#/components/schemas/ContainerDto' + databases: + type: array + items: + $ref: '#/components/schemas/ContainerDto' + identifiers: + type: array + items: + $ref: '#/components/schemas/ContainerDto' + email: + type: string + DatabaseBriefDto: + required: + - description + - engine + - id + - name + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + description: + type: string + engine: + type: string + created: + type: string + format: date-time + securitySchemes: + bearerAuth: + type: http + scheme: bearer + bearerFormat: JWT diff --git a/misc/api-identifier.yaml b/misc/api-identifier.yaml new file mode 100644 index 0000000..60dce27 --- /dev/null +++ b/misc/api-identifier.yaml @@ -0,0 +1,870 @@ +openapi: 3.0.1 +info: + title: Database Repository Identifier Service API + description: Service that manages the identifiers + contact: + name: Prof. Andreas Rauber + email: andreas.rauber@tuwien.ac.at + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0 + version: 1.1.0-alpha +externalDocs: + description: Wiki Documentation + url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/wikis +servers: +- url: http://localhost:9096 + description: Generated server url +paths: + /api/container/{id}/database/{databaseId}/identifier/{identiferId}: + put: + tags: + - identifier-endpoint + summary: Publish some identifier + operationId: publish + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: identiferId + in: query + required: true + schema: + type: integer + format: int64 + responses: + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "204": + description: No Content + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "412": + description: Precondition Failed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + type: object + security: + - bearerAuth: [] + post: + tags: + - identifier-endpoint + summary: Update some identifier + operationId: update + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: identiferId + in: query + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IdentifierDto' + required: true + responses: + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "204": + description: No Content + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "412": + description: Precondition Failed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/IdentifierDto' + security: + - bearerAuth: [] + delete: + tags: + - identifier-endpoint + summary: Delete some identifer + operationId: delete + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: identiferId + in: query + required: true + schema: + type: integer + format: int64 + responses: + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "204": + description: No Content + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "412": + description: Precondition Failed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + type: object + security: + - bearerAuth: [] + /api/container/{id}/database/{databaseId}/identifier: + get: + tags: + - identifier-endpoint + summary: Find identifiers + operationId: findAll + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: qid + in: query + required: false + schema: + type: integer + format: int64 + responses: + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "204": + description: No Content + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "412": + description: Precondition Failed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/IdentifierDto' + post: + tags: + - identifier-endpoint + summary: Create identifier + operationId: create + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IdentifierDto' + required: true + responses: + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "204": + description: No Content + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "412": + description: Precondition Failed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/IdentifierDto' + security: + - bearerAuth: [] + /api/pid/{pid}: + get: + tags: + - persistence-endpoint + summary: Find some identifier + operationId: find + parameters: + - name: pid + in: path + required: true + schema: + type: integer + format: int64 + responses: + "406": + description: Not Acceptable + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "204": + description: No Content + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "412": + description: Precondition Failed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/IdentifierDto' +components: + schemas: + ApiErrorDto: + required: + - code + - message + - status + type: object + properties: + status: + type: string + enum: + - 100 CONTINUE + - 101 SWITCHING_PROTOCOLS + - 102 PROCESSING + - 103 CHECKPOINT + - 200 OK + - 201 CREATED + - 202 ACCEPTED + - 203 NON_AUTHORITATIVE_INFORMATION + - 204 NO_CONTENT + - 205 RESET_CONTENT + - 206 PARTIAL_CONTENT + - 207 MULTI_STATUS + - 208 ALREADY_REPORTED + - 226 IM_USED + - 300 MULTIPLE_CHOICES + - 301 MOVED_PERMANENTLY + - 302 FOUND + - 302 MOVED_TEMPORARILY + - 303 SEE_OTHER + - 304 NOT_MODIFIED + - 305 USE_PROXY + - 307 TEMPORARY_REDIRECT + - 308 PERMANENT_REDIRECT + - 400 BAD_REQUEST + - 401 UNAUTHORIZED + - 402 PAYMENT_REQUIRED + - 403 FORBIDDEN + - 404 NOT_FOUND + - 405 METHOD_NOT_ALLOWED + - 406 NOT_ACCEPTABLE + - 407 PROXY_AUTHENTICATION_REQUIRED + - 408 REQUEST_TIMEOUT + - 409 CONFLICT + - 410 GONE + - 411 LENGTH_REQUIRED + - 412 PRECONDITION_FAILED + - 413 PAYLOAD_TOO_LARGE + - 413 REQUEST_ENTITY_TOO_LARGE + - 414 URI_TOO_LONG + - 414 REQUEST_URI_TOO_LONG + - 415 UNSUPPORTED_MEDIA_TYPE + - 416 REQUESTED_RANGE_NOT_SATISFIABLE + - 417 EXPECTATION_FAILED + - 418 I_AM_A_TEAPOT + - 419 INSUFFICIENT_SPACE_ON_RESOURCE + - 420 METHOD_FAILURE + - 421 DESTINATION_LOCKED + - 422 UNPROCESSABLE_ENTITY + - 423 LOCKED + - 424 FAILED_DEPENDENCY + - 425 TOO_EARLY + - 426 UPGRADE_REQUIRED + - 428 PRECONDITION_REQUIRED + - 429 TOO_MANY_REQUESTS + - 431 REQUEST_HEADER_FIELDS_TOO_LARGE + - 451 UNAVAILABLE_FOR_LEGAL_REASONS + - 500 INTERNAL_SERVER_ERROR + - 501 NOT_IMPLEMENTED + - 502 BAD_GATEWAY + - 503 SERVICE_UNAVAILABLE + - 504 GATEWAY_TIMEOUT + - 505 HTTP_VERSION_NOT_SUPPORTED + - 506 VARIANT_ALSO_NEGOTIATES + - 507 INSUFFICIENT_STORAGE + - 508 LOOP_DETECTED + - 509 BANDWIDTH_LIMIT_EXCEEDED + - 510 NOT_EXTENDED + - 511 NETWORK_AUTHENTICATION_REQUIRED + message: + type: string + code: + type: string + ColumnDto: + required: + - auto_generated + - column_concept + - column_type + - date_format + - id + - internal_name + - is_null_allowed + - is_primary_key + - name + - unique + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + unique: + type: boolean + references: + type: string + internal_name: + type: string + date_format: + $ref: '#/components/schemas/ImageDateDto' + auto_generated: + type: boolean + is_primary_key: + type: boolean + column_type: + type: string + enum: + - ColumnTypeDto.ENUM + - ColumnTypeDto.NUMBER + - ColumnTypeDto.DECIMAL + - ColumnTypeDto.STRING + - ColumnTypeDto.TEXT + - ColumnTypeDto.BOOLEAN + - ColumnTypeDto.DATE + - ColumnTypeDto.BLOB + column_concept: + $ref: '#/components/schemas/ConceptDto' + decimal_digits_before: + type: integer + format: int64 + decimal_digits_after: + type: integer + format: int64 + is_null_allowed: + type: boolean + check_expression: + type: string + foreign_key: + type: string + enum_values: + type: array + items: + type: string + ConceptDto: + required: + - created + - name + - uri + type: object + properties: + uri: + type: string + name: + type: string + created: + type: string + format: date-time + ContainerDto: + required: + - created + - databases + - hash + - id + - image + - internal_name + - ip_address + - is_public + - name + - port + - state + type: object + properties: + id: + type: integer + format: int64 + hash: + type: string + name: + type: string + state: + type: string + enum: + - ContainerStateDto.CREATED + - ContainerStateDto.RESTARTING + - ContainerStateDto.RUNNING + - ContainerStateDto.PAUSED + - ContainerStateDto.EXITED + - ContainerStateDto.DEAD + databases: + type: array + items: + $ref: '#/components/schemas/DatabaseDto' + image: + $ref: '#/components/schemas/ImageDto' + port: + type: integer + format: int32 + created: + type: string + format: date-time + internal_name: + type: string + ip_address: + type: string + is_public: + type: boolean + DatabaseDto: + required: + - container + - description + - exchange + - id + - image + - internal_name + - name + - tables + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + description: + type: string + publisher: + type: string + license: + type: string + contact: + $ref: '#/components/schemas/UserDto' + tables: + type: array + items: + $ref: '#/components/schemas/TableDto' + exchange: + type: string + image: + $ref: '#/components/schemas/ImageDto' + container: + $ref: '#/components/schemas/ContainerDto' + created: + type: string + format: date-time + deleted: + type: string + format: date-time + internal_name: + type: string + GrantedAuthorityDto: + type: object + properties: + authority: + type: string + IdentifierDto: + required: + - cid + - creators + - dbid + - description + - qid + - title + - visibility + type: object + properties: + id: + type: integer + format: int64 + cid: + type: integer + format: int64 + dbid: + type: integer + format: int64 + qid: + type: integer + format: int64 + title: + type: string + description: + type: string + visibility: + type: string + enum: + - VisibilityTypeDto.EVERYONE + - VisibilityTypeDto.TRUSTED + - VisibilityTypeDto.SELF + doi: + type: string + creators: + type: array + items: + $ref: '#/components/schemas/UserDto' + created: + type: string + format: date-time + last_modified: + type: string + format: date-time + ImageDateDto: + required: + - database_format + - example + - id + - unix_format + type: object + properties: + id: + type: integer + format: int64 + example: + type: string + database_format: + type: string + unix_format: + type: string + created_at: + type: string + format: date-time + ImageDto: + required: + - default_port + - dialect + - driver_class + - environment + - id + - jdbc_method + - repository + - tag + type: object + properties: + id: + type: integer + format: int64 + repository: + type: string + tag: + type: string + logo: + type: string + dialect: + type: string + hash: + type: string + compiled: + type: string + format: date-time + size: + type: integer + environment: + type: array + items: + $ref: '#/components/schemas/ImageEnvItemDto' + driver_class: + type: string + date_formats: + type: array + items: + $ref: '#/components/schemas/ImageDateDto' + jdbc_method: + type: string + default_port: + type: integer + format: int32 + ImageEnvItemDto: + required: + - iid + - key + - value + type: object + properties: + iid: + type: integer + format: int64 + key: + type: string + value: + type: string + type: + type: string + enum: + - USERNAME + - PASSWORD + - PRIVILEGED_USERNAME + - PRIVILEGED_PASSWORD + TableDto: + required: + - columns + - description + - id + - internal_name + - name + - null_element + - quote + - separator + - topic + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + topic: + type: string + description: + type: string + separator: + type: string + quote: + type: string + created: + type: string + format: date-time + columns: + type: array + items: + $ref: '#/components/schemas/ColumnDto' + internal_name: + type: string + null_element: + type: string + skip_lines: + type: integer + format: int64 + true_element: + type: string + false_element: + type: string + UserDto: + required: + - containers + - databases + - email + - firstname + - identifiers + - lastname + - titlesAfter + - titlesBefore + - username + type: object + properties: + id: + type: integer + format: int64 + authorities: + type: array + items: + $ref: '#/components/schemas/GrantedAuthorityDto' + username: + type: string + titlesBefore: + type: string + titlesAfter: + type: string + firstname: + type: string + lastname: + type: string + containers: + type: array + items: + $ref: '#/components/schemas/ContainerDto' + databases: + type: array + items: + $ref: '#/components/schemas/ContainerDto' + identifiers: + type: array + items: + $ref: '#/components/schemas/ContainerDto' + email: + type: string + securitySchemes: + bearerAuth: + type: http + scheme: bearer + bearerFormat: JWT diff --git a/misc/api-query.yaml b/misc/api-query.yaml new file mode 100644 index 0000000..523b684 --- /dev/null +++ b/misc/api-query.yaml @@ -0,0 +1,814 @@ +openapi: 3.0.1 +info: + title: Database Repository Query Service API + description: Service that manages the queries + contact: + name: Prof. Andreas Rauber + email: andreas.rauber@tuwien.ac.at + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0 + version: 1.1.0-alpha +externalDocs: + description: Wiki Documentation + url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/wikis +servers: +- url: http://localhost:9093 + description: Generated server url +paths: + /api/container/{id}/database/{databaseId}/table/{tableId}/data: + get: + tags: + - table-data-endpoint + summary: Find data + operationId: getAll_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time + - name: page + in: query + required: false + schema: + type: integer + format: int64 + - name: size + in: query + required: false + schema: + type: integer + format: int64 + responses: + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "405": + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/QueryResultDto' + post: + tags: + - table-data-endpoint + summary: Insert data + operationId: insert + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TableCsvDto' + required: true + responses: + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "405": + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + type: integer + format: int32 + security: + - bearerAuth: [] + head: + tags: + - table-data-endpoint + summary: Find data + operationId: getAll + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time + - name: page + in: query + required: false + schema: + type: integer + format: int64 + - name: size + in: query + required: false + schema: + type: integer + format: int64 + responses: + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "405": + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/QueryResultDto' + /api/container/{id}/database/{databaseId}/query: + get: + tags: + - store-endpoint + summary: Find queries + operationId: findAll + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "405": + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/QueryDto' + put: + tags: + - query-endpoint + summary: Execute query + operationId: execute + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: page + in: query + required: false + schema: + type: integer + format: int64 + - name: size + in: query + required: false + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ExecuteStatementDto' + required: true + responses: + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "405": + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/QueryResultDto' + security: + - bearerAuth: [] + /api/container/{id}/database/{databaseId}/query/{queryId}: + get: + tags: + - store-endpoint + summary: Find some query + operationId: find + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: queryId + in: path + required: true + schema: + type: integer + format: int64 + responses: + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "405": + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/QueryDto' + put: + tags: + - query-endpoint + summary: Re-execute some query + operationId: reExecute + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: queryId + in: path + required: true + schema: + type: integer + format: int64 + - name: page + in: query + required: false + schema: + type: integer + format: int64 + - name: size + in: query + required: false + schema: + type: integer + format: int64 + responses: + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "405": + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + $ref: '#/components/schemas/QueryResultDto' + security: + - bearerAuth: [] + /api/container/{id}/database/{databaseId}/table/{tableId}/data/import: + post: + tags: + - table-data-endpoint + summary: Insert data from csv + operationId: importCsv + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ImportDto' + required: true + responses: + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "405": + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + type: integer + format: int32 + security: + - bearerAuth: [] + /api/container/{id}/database/{databaseId}/table/{tableId}/export: + get: + tags: + - export-endpoint + summary: Export table + operationId: export + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + - name: databaseId + in: path + required: true + schema: + type: integer + format: int64 + - name: tableId + in: path + required: true + schema: + type: integer + format: int64 + - name: timestamp + in: query + required: false + schema: + type: string + format: date-time + responses: + "404": + description: Not Found + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Bad Request + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Conflict + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "405": + description: Method Not Allowed + content: + '*/*': + schema: + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: OK + content: + '*/*': + schema: + type: string + format: binary + security: + - bearerAuth: [] +components: + schemas: + ApiErrorDto: + required: + - code + - message + - status + type: object + properties: + status: + type: string + enum: + - 100 CONTINUE + - 101 SWITCHING_PROTOCOLS + - 102 PROCESSING + - 103 CHECKPOINT + - 200 OK + - 201 CREATED + - 202 ACCEPTED + - 203 NON_AUTHORITATIVE_INFORMATION + - 204 NO_CONTENT + - 205 RESET_CONTENT + - 206 PARTIAL_CONTENT + - 207 MULTI_STATUS + - 208 ALREADY_REPORTED + - 226 IM_USED + - 300 MULTIPLE_CHOICES + - 301 MOVED_PERMANENTLY + - 302 FOUND + - 302 MOVED_TEMPORARILY + - 303 SEE_OTHER + - 304 NOT_MODIFIED + - 305 USE_PROXY + - 307 TEMPORARY_REDIRECT + - 308 PERMANENT_REDIRECT + - 400 BAD_REQUEST + - 401 UNAUTHORIZED + - 402 PAYMENT_REQUIRED + - 403 FORBIDDEN + - 404 NOT_FOUND + - 405 METHOD_NOT_ALLOWED + - 406 NOT_ACCEPTABLE + - 407 PROXY_AUTHENTICATION_REQUIRED + - 408 REQUEST_TIMEOUT + - 409 CONFLICT + - 410 GONE + - 411 LENGTH_REQUIRED + - 412 PRECONDITION_FAILED + - 413 PAYLOAD_TOO_LARGE + - 413 REQUEST_ENTITY_TOO_LARGE + - 414 URI_TOO_LONG + - 414 REQUEST_URI_TOO_LONG + - 415 UNSUPPORTED_MEDIA_TYPE + - 416 REQUESTED_RANGE_NOT_SATISFIABLE + - 417 EXPECTATION_FAILED + - 418 I_AM_A_TEAPOT + - 419 INSUFFICIENT_SPACE_ON_RESOURCE + - 420 METHOD_FAILURE + - 421 DESTINATION_LOCKED + - 422 UNPROCESSABLE_ENTITY + - 423 LOCKED + - 424 FAILED_DEPENDENCY + - 425 TOO_EARLY + - 426 UPGRADE_REQUIRED + - 428 PRECONDITION_REQUIRED + - 429 TOO_MANY_REQUESTS + - 431 REQUEST_HEADER_FIELDS_TOO_LARGE + - 451 UNAVAILABLE_FOR_LEGAL_REASONS + - 500 INTERNAL_SERVER_ERROR + - 501 NOT_IMPLEMENTED + - 502 BAD_GATEWAY + - 503 SERVICE_UNAVAILABLE + - 504 GATEWAY_TIMEOUT + - 505 HTTP_VERSION_NOT_SUPPORTED + - 506 VARIANT_ALSO_NEGOTIATES + - 507 INSUFFICIENT_STORAGE + - 508 LOOP_DETECTED + - 509 BANDWIDTH_LIMIT_EXCEEDED + - 510 NOT_EXTENDED + - 511 NETWORK_AUTHENTICATION_REQUIRED + message: + type: string + code: + type: string + QueryResultDto: + required: + - id + - result + type: object + properties: + result: + type: array + items: + type: object + additionalProperties: + type: object + id: + type: integer + format: int64 + resultNumber: + type: integer + format: int64 + ColumnBriefDto: + required: + - id + - internal_name + - name + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + internal_name: + type: string + ExecuteStatementDto: + required: + - columns + - statement + - tables + type: object + properties: + statement: + type: string + tables: + type: array + items: + $ref: '#/components/schemas/TableBriefDto' + columns: + type: array + items: + type: array + items: + $ref: '#/components/schemas/ColumnBriefDto' + TableBriefDto: + required: + - id + - internal_name + - name + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + internal_name: + type: string + TableCsvDto: + required: + - data + type: object + properties: + data: + type: object + additionalProperties: + type: object + ImportDto: + required: + - location + type: object + properties: + location: + type: string + QueryDto: + required: + - cid + - created + - dbid + - id + - query + - query_hash + type: object + properties: + id: + type: integer + format: int64 + cid: + type: integer + format: int64 + dbid: + type: integer + format: int64 + execution: + type: string + format: date-time + query: + type: string + created: + type: string + format: date-time + query_normalized: + type: string + query_hash: + type: string + result_hash: + type: string + result_number: + type: integer + format: int64 + last_modified: + type: string + format: date-time + securitySchemes: + bearerAuth: + type: http + scheme: bearer + bearerFormat: JWT diff --git a/misc/diagrams.drawio b/misc/diagrams.drawio new file mode 100644 index 0000000..71be41b --- /dev/null +++ b/misc/diagrams.drawio @@ -0,0 +1 @@ +<mxfile host="Electron" modified="2022-04-22T06:22:19.022Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/17.4.2 Chrome/100.0.4896.60 Electron/18.0.1 Safari/537.36" etag="kMcGUnc7b8fgl017WGgv" version="17.4.2" type="device" pages="2"><diagram id="31b32b95-0358-9bc7-6ba0-a27c054ed1a7" name="Page-1">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</diagram><diagram id="SixR3OZ22FMnOk72hDml" name="Architecture">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</diagram></mxfile> \ No newline at end of file diff --git a/misc/env.json b/misc/env.json new file mode 100644 index 0000000..4184042 --- /dev/null +++ b/misc/env.json @@ -0,0 +1,9 @@ +{ + "language_tabs": [ + { + "python": "Python" + },{ + "java": "Java" + } + ] +} diff --git a/mkdocs.yml b/mkdocs.yml index 8b880ae..e9e846c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,22 +2,25 @@ site_name: Database Repository repo_url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services repo_name: fda-services site_author: FAIR Data Austria -copyright: CC-BY 4.0 +copyright: CC-BY 4.0 Technische Universität Wien & Universität Wien extra: homepage: https://dbrepo.tuwien.ac.at social: - icon: fontawesome/brands/gitlab link: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services - - icon: fontawesome/brands/twitter - link: https://twitter.com/RDMTUWien - - icon: fontawesome/solid/globe - link: https://forschungsdaten.at/fda/ nav: - Home: index.md - getting-started.md - system.md - - operation.md + - Operation: + - operation/index.md + - operation/authentication.md + - operation/container.md + - operation/database.md + - operation/identifier.md + - operation/query.md - publications.md + - contact.md extra_css: - stylesheets/extra.css theme: diff --git a/package.json b/package.json new file mode 100644 index 0000000..8aef71a --- /dev/null +++ b/package.json @@ -0,0 +1,12 @@ +{ + "name": "fda-docs", + "version": "1.0.0", + "main": "index.js", + "repository": "git@gitlab.phaidra.org:fair-data-austria-db-repository/fda-docs.git", + "author": "Martin Weise <martin.weise@tuwien.ac.at>", + "license": "Apache 2", + "private": true, + "dependencies": { + "widdershins": "^4.0.1" + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..c197466 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1270 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/highlight@^7.16.7": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" + integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/runtime@^7.0.0": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== + dependencies: + regenerator-runtime "^0.13.4" + +"@exodus/schemasafe@^1.0.0-rc.2": + version "1.0.0-rc.6" + resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.0.0-rc.6.tgz#7985f681564cff4ffaebb5896eb4be20af3aae7a" + integrity sha512-dDnQizD94EdBwEj/fh3zPRa/HWCS9O5au2PuHhZBbuM3xWHxuaKzPBOEWze7Nn0xW68MIpZ7Xdyn1CoCpjKCuQ== + +"@types/json-schema@^7.0.7": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +ajv@^5.5.2: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +better-ajv-errors@^0.6.1, better-ajv-errors@^0.6.7: + version "0.6.7" + resolved "https://registry.yarnpkg.com/better-ajv-errors/-/better-ajv-errors-0.6.7.tgz#b5344af1ce10f434fe02fc4390a5a9c811e470d1" + integrity sha512-PYgt/sCzR4aGpyNy5+ViSQ77ognMnWq7745zM+/flYO4/Yisdtp9wDQW2IKCyVYPUxQt3E/b5GBSwfhd1LPdlg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/runtime" "^7.0.0" + chalk "^2.4.1" + core-js "^3.2.1" + json-to-ast "^2.0.3" + jsonpointer "^4.0.1" + leven "^3.1.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +chalk@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +code-error-fragment@0.0.230: + version "0.0.230" + resolved "https://registry.yarnpkg.com/code-error-fragment/-/code-error-fragment-0.0.230.tgz#d736d75c832445342eca1d1fedbf17d9618b14d7" + integrity sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw== + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.9.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +core-js@^3.2.1: + version "3.22.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.2.tgz#3ea0a245b0895fa39d1faa15fe75d91ade504a01" + integrity sha512-Z5I2vzDnEIqO2YhELVMFcL1An2CIsFe9Q7byZhs8c/QxummxZlAHw33TUHbIte987LkisOgL0LwQ1P9D6VISnA== + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +debug@^2.2.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +dot@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dot/-/dot-1.1.3.tgz#351360e00a748bce9a1f8f27c00c394a7e4e1e9f" + integrity sha512-/nt74Rm+PcfnirXGEdhZleTwGC2LMnuKTeeTIlI82xb5loBBoXNYzr2ezCroPSMtilK8EZIfcNZwOcHN+ib1Lg== + +duplexer@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +entities@~2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" + integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== + +es6-promise@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +event-stream@3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE= + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-safe-stringify@^2.0.7: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +foreach@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +form-data@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" + integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= + +fs-readfile-promise@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fs-readfile-promise/-/fs-readfile-promise-2.0.1.tgz#80023823981f9ffffe01609e8be668f69ae49e70" + integrity sha1-gAI4I5gfn//+AWCei+Zo9prknnA= + dependencies: + graceful-fs "^4.1.2" + +fs-writefile-promise@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-writefile-promise/-/fs-writefile-promise-1.0.3.tgz#e02f9b58ffc255ed822adc7a01114f445d48d063" + integrity sha1-4C+bWP/CVe2CKtx6ARFPRF1I0GM= + dependencies: + mkdirp-promise "^1.0.0" + pinkie-promise "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +graceful-fs@^4.1.2: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@^5.0.0: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +highlightjs@^9.12.0: + version "9.16.2" + resolved "https://registry.yarnpkg.com/highlightjs/-/highlightjs-9.16.2.tgz#07ea6cc7c93340fc440734fb7abf28558f1f0fe1" + integrity sha512-FK1vmMj8BbEipEy8DLIvp71t5UsC7n2D6En/UfM/91PCwmOpj6f2iu0Y0coRC62KSRHHC+dquM2xMULV/X7NFg== + +http2-client@^1.2.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.5.tgz#20c9dc909e3cc98284dd20af2432c524086df181" + integrity sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA== + +httpsnippet@^1.19.0: + version "1.25.0" + resolved "https://registry.yarnpkg.com/httpsnippet/-/httpsnippet-1.25.0.tgz#c7efaef9e3b980c6ba03652a45efcb0b8480a1d0" + integrity sha512-jobE6S923cLuf5BPG6Jf+oLBRkPzv2RPp0dwOHcWwj/t9FwV/t9hyZ46kpT3Q5DHn9iFNmGhrcmmFUBqyjoTQg== + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + debug "^2.2.0" + event-stream "3.3.4" + form-data "3.0.0" + fs-readfile-promise "^2.0.1" + fs-writefile-promise "^1.0.3" + har-validator "^5.0.0" + pinkie-promise "^2.0.0" + stringify-object "^3.3.0" + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +jgexml@latest: + version "0.4.4" + resolved "https://registry.yarnpkg.com/jgexml/-/jgexml-0.4.4.tgz#428c6afc753c8cd9c29d6860262d1f4a44febef8" + integrity sha512-j0AzSWT7LXy3s3i1cdv5NZxUtscocwiBxgOLiEBfitCehm8STdXVrcOlbAWsJFLCq1elZYpQlGqA9k8Z+n9iJA== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +json-pointer@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.2.tgz#f97bd7550be5e9ea901f8c9264c9d436a22a93cd" + integrity sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw== + dependencies: + foreach "^2.0.4" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-to-ast@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json-to-ast/-/json-to-ast-2.1.0.tgz#041a9fcd03c0845036acb670d29f425cea4faaf9" + integrity sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ== + dependencies: + code-error-fragment "0.0.230" + grapheme-splitter "^1.0.4" + +jsonpointer@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.1.0.tgz#501fb89986a2389765ba09e6053299ceb4f2c2cc" + integrity sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg== + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +linkify-it@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" + integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== + dependencies: + uc.micro "^1.0.1" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ= + +markdown-it-emoji@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz#9bee0e9a990a963ba96df6980c4fddb05dfb4dcc" + integrity sha1-m+4OmpkKljupbfaYDE/dsF37Tcw= + +markdown-it@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz#abfc64f141b1722d663402044e43927f1f50a8dc" + integrity sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg== + dependencies: + argparse "^1.0.7" + entities "~2.0.0" + linkify-it "^2.0.0" + mdurl "^1.0.1" + uc.micro "^1.0.5" + +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mkdirp-promise@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-1.1.0.tgz#2c84893ed676e0d98fb18fb9a6212fd1b2b9a819" + integrity sha1-LISJPtZ24NmPsY+5piEv0bK5qBk= + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-fetch-h2@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz#c6188325f9bd3d834020bf0f2d6dc17ced2241ac" + integrity sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg== + dependencies: + http2-client "^1.2.5" + +node-fetch@^2.0.0: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-readfiles@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/node-readfiles/-/node-readfiles-0.2.0.tgz#dbbd4af12134e2e635c245ef93ffcf6f60673a5d" + integrity sha1-271K8SE04uY1wkXvk//Pb2BnOl0= + dependencies: + es6-promise "^3.2.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +oas-kit-common@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/oas-kit-common/-/oas-kit-common-1.0.8.tgz#6d8cacf6e9097967a4c7ea8bcbcbd77018e1f535" + integrity sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ== + dependencies: + fast-safe-stringify "^2.0.7" + +oas-linter@^3.1.3: + version "3.2.2" + resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.2.2.tgz#ab6a33736313490659035ca6802dc4b35d48aa1e" + integrity sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ== + dependencies: + "@exodus/schemasafe" "^1.0.0-rc.2" + should "^13.2.1" + yaml "^1.10.0" + +oas-resolver@^2.3.1, oas-resolver@^2.4.3: + version "2.5.6" + resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.5.6.tgz#10430569cb7daca56115c915e611ebc5515c561b" + integrity sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ== + dependencies: + node-fetch-h2 "^2.3.0" + oas-kit-common "^1.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + +oas-schema-walker@^1.1.3, oas-schema-walker@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz#74c3cd47b70ff8e0b19adada14455b5d3ac38a22" + integrity sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ== + +oas-validator@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-4.0.8.tgz#4f1a4d6bd9e030ad07db03fd7a7bc3a91aabcc7d" + integrity sha512-bIt8erTyclF7bkaySTtQ9sppqyVc+mAlPi7vPzCLVHJsL9nrivQjc/jHLX/o+eGbxHd6a6YBwuY/Vxa6wGsiuw== + dependencies: + ajv "^5.5.2" + better-ajv-errors "^0.6.7" + call-me-maybe "^1.0.1" + oas-kit-common "^1.0.8" + oas-linter "^3.1.3" + oas-resolver "^2.4.3" + oas-schema-walker "^1.1.5" + reftools "^1.1.5" + should "^13.2.1" + yaml "^1.8.3" + +once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +openapi-sampler@^1.0.0-beta.15: + version "1.2.1" + resolved "https://registry.yarnpkg.com/openapi-sampler/-/openapi-sampler-1.2.1.tgz#2ca9eea527f8f2ddb32c3ae1dda31afd8bf0833f" + integrity sha512-mHrYmyvcLD0qrfqPkPRBAL2z16hGT2rW0d0B7nklfoTcc3pmkJLkSZlKSeFgerUM41E5c7jlxf0Y19xrM7mWQQ== + dependencies: + "@types/json-schema" "^7.0.7" + json-pointer "0.6.2" + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= + dependencies: + through "~2.3" + +pinkie-promise@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-1.0.0.tgz#d1da67f5482563bb7cf57f286ae2822ecfbf3670" + integrity sha1-0dpn9UglY7t89X8oauKCLs+/NnA= + dependencies: + pinkie "^1.0.0" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-1.0.0.tgz#5a47f28ba1015d0201bda7bf0f358e47bec8c7e4" + integrity sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q= + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +reftools@^1.1.0, reftools@^1.1.5, reftools@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.9.tgz#e16e19f662ccd4648605312c06d34e5da3a2b77e" + integrity sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w== + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +semver@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +should-equal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3" + integrity sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA== + dependencies: + should-type "^1.4.0" + +should-format@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" + integrity sha1-m/yPdPo5IFxT04w01xcwPidxJPE= + dependencies: + should-type "^1.3.0" + should-type-adaptors "^1.0.1" + +should-type-adaptors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz#401e7f33b5533033944d5cd8bf2b65027792e27a" + integrity sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA== + dependencies: + should-type "^1.3.0" + should-util "^1.0.0" + +should-type@^1.3.0, should-type@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" + integrity sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM= + +should-util@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.1.tgz#fb0d71338f532a3a149213639e2d32cbea8bcb28" + integrity sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g== + +should@^13.2.1: + version "13.2.3" + resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10" + integrity sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ== + dependencies: + should-equal "^2.0.0" + should-format "^3.0.3" + should-type "^1.4.0" + should-type-adaptors "^1.0.1" + should-util "^1.0.0" + +signal-exit@^3.0.0: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= + dependencies: + through "2" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= + dependencies: + duplexer "~0.1.1" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +swagger2openapi@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-6.2.3.tgz#4a8059f89d851aee4c9ab178f9b7190debd904e2" + integrity sha512-cUUktzLpK69UwpMbcTzjMw2ns9RZChfxh56AHv6+hTx3StPOX2foZjPgds3HlJcINbxosYYBn/D3cG8nwcCWwQ== + dependencies: + better-ajv-errors "^0.6.1" + call-me-maybe "^1.0.1" + node-fetch-h2 "^2.3.0" + node-readfiles "^0.2.0" + oas-kit-common "^1.0.8" + oas-resolver "^2.4.3" + oas-schema-walker "^1.1.5" + oas-validator "^4.0.8" + reftools "^1.1.5" + yaml "^1.8.3" + yargs "^15.3.1" + +through@2, through@~2.3, through@~2.3.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urijs@^1.19.0: + version "1.19.11" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.11.tgz#204b0d6b605ae80bea54bea39280cdb7c9f923cc" + integrity sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +widdershins@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/widdershins/-/widdershins-4.0.1.tgz#5ec5dd24ac9e2f6f5c002b67a08656b1de630c41" + integrity sha512-y7TGynno+J/EqRPtUrpEuEjJUc1N2ajfP7R4sHU7Qg8I/VFHGavBxL7ZTeOAVmd1fhmY2wJIbpX2LMDWf37vVA== + dependencies: + dot "^1.1.3" + fast-safe-stringify "^2.0.7" + highlightjs "^9.12.0" + httpsnippet "^1.19.0" + jgexml latest + markdown-it "^10.0.0" + markdown-it-emoji "^1.4.0" + node-fetch "^2.0.0" + oas-resolver "^2.3.1" + oas-schema-walker "^1.1.3" + openapi-sampler "^1.0.0-beta.15" + reftools "^1.1.0" + swagger2openapi "^6.0.1" + urijs "^1.19.0" + yaml "^1.8.3" + yargs "^12.0.5" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaml@^1.10.0, yaml@^1.8.3: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^21.0.0: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== + +yargs@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^17.0.1: + version "17.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284" + integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" -- GitLab