diff --git a/.docs/.swagger/api-analyse.yaml b/.docs/.swagger/api-analyse.yaml index 1aa3c5d60f4ae4758f49dc37b676cd85ab660219..5349ba84e17b8a638e87a98068ee164b7fa96c28 100644 --- a/.docs/.swagger/api-analyse.yaml +++ b/.docs/.swagger/api-analyse.yaml @@ -1 +1,191 @@ -{"definitions":{},"externalDocs":{"description":"Sourcecode Documentation","url":"https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services"},"info":{"contact":{"email":"andreas.rauber@tuwien.ac.at","name":"Prof. Andreas Rauber"},"description":"Service that analyses data structures","license":{"name":"Apache 2.0","url":"https://www.apache.org/licenses/LICENSE-2.0"},"title":"Database Repository Analyse Service API","version":"1.3.0"},"openapi":"3.0.0","paths":{"/api/analyse/determinedt":{"post":{"consumes":["application/json"],"description":"This is a simple API which returns the datatypes of a (path) csv file","parameters":[{"description":"to-do description","in":"body","name":"body","required":true,"schema":{"properties":{"enum":{"example":true,"type":"boolean"},"enum_tol":{"example":0.1},"filepath":{"example":"/data/testdt08.csv","type":"string"},"separator":{"example":",","type":"string"}},"type":"object"}}],"produces":["application/json"],"responses":{"200":{"description":"OK"},"405":{"description":"Invalid input"}},"summary":"Determine datatypes"}},"/api/analyse/determinepk":{"post":{"consumes":["application/json"],"description":"This is a simple API which returns the primary keys + ranking of a (path) csv file","parameters":[{"description":"to-do description","in":"body","name":"body","required":true,"schema":{"properties":{"filepath":{"example":"/data/testdt08.csv","type":"string"},"seperator":{"example":",","type":"string"}},"type":"object"}}],"produces":["application/json"],"responses":{"200":{"description":"OK"},"405":{"description":"Invalid input"}},"summary":"Determine primary keys"}},"/health":{"get":{"consumes":["application/json"],"description":"This is a simple API which checks if the application is healthy","parameters":[{"description":"to-do description","in":"body","name":"body","required":true,"schema":{"properties":{"status":{"example":"UP","type":"string"}},"type":"object"}}],"produces":["application/json"],"responses":{"200":{"description":"OK"}},"summary":"Check if application is running"}}},"servers":[{"description":"Generated server url","url":"http://localhost:5000"},{"description":"Sandbox","url":"https://dbrepo2.tuwien.ac.at"}]} +components: + schemas: {} +externalDocs: + description: Sourcecode Documentation + url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services +info: + contact: + email: andreas.rauber@tuwien.ac.at + name: Prof. Andreas Rauber + description: Service that analyses data structures + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0 + title: Database Repository Analyse Service API + version: dbrepo-latest +openapi: 3.0.0 +paths: + /api/analyse/determinedt: + post: + consumes: + - application/json + description: This is a simple API which returns the datatypes of a (path) csv + file + parameters: + - description: to-do description + in: body + name: body + required: true + schema: + properties: + enum: + example: true + type: boolean + enum_tol: + example: 0.1 + filename: + example: sample.csv + type: string + separator: + example: ',' + type: string + type: object + produces: + - application/json + responses: + '200': + description: OK + '405': + description: Invalid input + summary: Determine datatypes + tags: + - analyse-endpoint + /api/analyse/determinepk: + post: + consumes: + - application/json + description: This is a simple API which returns the primary keys + ranking of + a (path) csv file + parameters: + - description: to-do description + in: body + name: body + required: true + schema: + properties: + filepath: + example: /data/testdt08.csv + type: string + seperator: + example: ',' + type: string + type: object + produces: + - application/json + responses: + '200': + description: OK + '405': + description: Invalid input + summary: Determine primary keys + tags: + - analyse-endpoint + /api/analyse/determinestat: + post: + operationId: determinestat + requestBody: + content: + application/json: + schema: + properties: + database_id: + example: 1 + type: integer + table_id: + example: 1 + type: integer + required: + - database_id + - table_id + type: object + responses: + '200': + content: + application/json: + schema: + properties: + message: + example: Analysed statistical properties + type: string + status: + example: '200' + type: integer + required: + - message + - status + type: object + description: Determined statistics + '400': + description: Invalid input + ontent: + application/json: + schema: + properties: + message: + example: Analysed statistical properties + type: string + status: + example: '200' + type: integer + required: + - message + - status + type: object + summary: Determine statistics + tags: + - analyse-endpoint + /api/analyse/determinestats: + post: + operationId: determinestats + requestBody: + content: + application/json: + schema: + properties: + filepath: + example: file.csv + type: string + separator: + example: ',' + type: string + required: + - filepath + - separator + type: object + responses: + '200': + description: Determined statistics + '400': + description: Invalid input + summary: Determine statistics + tags: + - analyse-endpoint + /health: + get: + consumes: + - application/json + description: This is a simple API which checks if the application is healthy + parameters: + - description: to-do description + in: body + name: body + required: true + schema: + properties: + status: + example: UP + type: string + type: object + produces: + - application/json + responses: + '200': + description: OK + summary: Check if application is running + tags: + - health-endpoint +servers: + - description: Generated server url + url: http://localhost:5000 + - description: Sandbox + url: https://test.dbrepo.tuwien.ac.at diff --git a/.docs/.swagger/api-container.yaml b/.docs/.swagger/api-container.yaml deleted file mode 100644 index 2102e2f63cab2048d1c546149d233b3c141faf6d..0000000000000000000000000000000000000000 --- a/.docs/.swagger/api-container.yaml +++ /dev/null @@ -1,2410 +0,0 @@ -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.2.0 -externalDocs: - description: Sourcecode Documentation - url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services -servers: -- url: http://localhost:9092 - description: Generated server url -- url: https://dbrepo2.tuwien.ac.at - description: Sandbox -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: - "200": - description: Found image - content: - application/json: - schema: - $ref: '#/components/schemas/ImageDto' - "404": - description: Image could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - 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: - "202": - description: Updated image successfully - content: - application/json: - schema: - $ref: '#/components/schemas/ImageDto' - "404": - description: Image could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - 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: - "202": - description: Deleted image successfully - "404": - description: Image could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - 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: - "502": - description: Docker client failed to connect - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Found container - content: - application/json: - schema: - $ref: '#/components/schemas/ContainerDto' - "404": - description: Container image could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - 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: - "409": - description: Container is already started/stopped - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Container or user could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Modification of container state is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Modified state of container successfully - content: - application/json: - 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: - "410": - description: Container is already removed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Container is still running - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Deleted container successfully - security: - - bearerAuth: [] - /api/image: - get: - tags: - - image-endpoint - summary: Find all images - operationId: findAll - responses: - "200": - description: List images - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/ContainerImage' - post: - tags: - - image-endpoint - summary: Create image - operationId: create - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ImageCreateDto' - required: true - responses: - "201": - description: Created image - content: - application/json: - schema: - $ref: '#/components/schemas/ImageDto' - "404": - description: User could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Image specification is invalid - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "502": - description: Docker client failed to connect - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Image already exists - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/container: - get: - tags: - - container-endpoint - summary: Find all containers - operationId: findAll_1 - parameters: - - name: limit - in: query - required: false - schema: - type: integer - format: int32 - responses: - "200": - description: List containers - content: - application/json: - 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: - "201": - description: Created a new container - content: - application/json: - schema: - $ref: '#/components/schemas/ContainerBriefDto' - "404": - description: Container image or user could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Container name already exists - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "502": - description: Docker client failed to connect - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] -components: - schemas: - ImageChangeDto: - required: - - dialect - - driver_class - - jdbc_method - - registry - type: object - properties: - registry: - type: string - example: docker.io/library - defaultPort: - maximum: 65535 - minimum: 1024 - type: integer - format: int32 - example: 5432 - environment: - type: array - items: - $ref: '#/components/schemas/ImageEnvItemDto' - dialect: - type: string - example: Postgres - driver_class: - type: string - example: org.postgresql.Driver - jdbc_method: - type: string - example: postgresql - ImageEnvItemDto: - required: - - iid - - key - - type - type: object - properties: - iid: - type: integer - format: int64 - key: - type: string - example: MARIADB_ROOT_PASSWORD - type: - type: string - example: PRIVILEGED_PASSWORD - enum: - - username - - password - - privileged_username - - privileged_password - ImageDateDto: - required: - - database_format - - example - - has_time - - id - - unix_format - type: object - properties: - id: - type: integer - format: int64 - example: - type: string - example: 30.01.2022 - database_format: - type: string - example: '%d.%c.%Y' - unix_format: - type: string - example: dd.MM.YYYY - has_time: - type: boolean - example: false - created_at: - type: string - format: date-time - ImageDto: - required: - - default_port - - dialect - - driver_class - - id - - jdbc_method - - registry - - repository - - tag - type: object - properties: - id: - type: integer - format: int64 - registry: - type: string - example: docker.io/library - repository: - type: string - example: mariadb - tag: - type: string - example: "10.5" - dialect: - type: string - example: org.hibernate.dialect.MariaDBDialect - hash: - type: string - example: sha256:c5ec7353d87dfc35067e7bffeb25d6a0d52dad41e8b7357213e3b12d6e7ff78e - compiled: - type: string - format: date-time - example: 2021-03-12T15:26:21.678396092Z - size: - type: integer - example: 314295447 - driver_class: - type: string - example: org.mariadb.jdbc.Driver - date_formats: - type: array - items: - $ref: '#/components/schemas/ImageDateDto' - jdbc_method: - type: string - example: mariadb - default_port: - type: integer - format: int32 - example: 3306 - ApiErrorDto: - required: - - code - - message - - status - type: object - properties: - status: - type: string - example: STATUS - enum: - - 100 CONTINUE - - 101 SWITCHING_PROTOCOLS - - 102 PROCESSING - - 103 EARLY_HINTS - - 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 - example: Error message - code: - type: string - example: error.service.code - ContainerChangeDto: - required: - - action - type: object - properties: - action: - type: string - enum: - - start - - stop - ContainerBriefDto: - required: - - creator - - hash - - id - - internal_name - - name - - running - type: object - properties: - id: - type: integer - format: int64 - hash: - type: string - example: f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50 - name: - type: string - example: Air Quality - creator: - $ref: '#/components/schemas/UserBriefDto' - running: - type: boolean - example: true - database: - $ref: '#/components/schemas/DatabaseBriefDto' - created: - type: string - format: date-time - internal_name: - type: string - example: air-quality - CreatorBriefDto: - required: - - firstname - - lastname - type: object - properties: - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Wesleyan University - DatabaseBriefDto: - required: - - id - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - description: - type: string - example: Air Quality in Austria - identifier: - $ref: '#/components/schemas/IdentifierBriefDto' - engine: - type: string - example: mariadb:10.5 - owner: - $ref: '#/components/schemas/UserBriefDto' - container: - $ref: '#/components/schemas/ContainerBriefDto' - creator: - $ref: '#/components/schemas/UserBriefDto' - created: - type: string - format: date-time - is_public: - type: boolean - example: true - IdentifierBriefDto: - required: - - container id - - creators - - database id - - id - - publication_year - - title - - type - type: object - properties: - id: - type: integer - format: int64 - title: - type: string - example: "Airquality Stephansplatz, Vienna, Austria" - type: - type: string - enum: - - database - - subset - doi: - type: string - example: 10.1038/nphys1170 - publisher: - type: string - example: TU Wien - creators: - type: array - items: - $ref: '#/components/schemas/CreatorBriefDto' - container id: - type: integer - format: int64 - example: 1 - database id: - type: integer - format: int64 - example: 1 - query id: - type: integer - format: int64 - example: 1 - publication_year: - type: integer - format: int32 - example: 2022 - UserBriefDto: - required: - - id - - username - type: object - properties: - id: - type: string - format: uuid - example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 - username: - type: string - description: Only contains lowercase characters - example: jcarberry - name: - type: string - example: Josiah Carberry - orcid: - type: string - example: 0000-0002-1825-0097 - given_name: - type: string - example: Josiah - family_name: - type: string - example: Carberry - email_verified: - type: boolean - example: true - ImageCreateDto: - required: - - default_port - - dialect - - driver_class - - jdbc_method - - registry - - repository - - tag - type: object - properties: - registry: - type: string - example: docker.io/library - repository: - type: string - example: mariadb - tag: - type: string - dialect: - type: string - environment: - type: array - items: - $ref: '#/components/schemas/ImageEnvItemDto' - driver_class: - type: string - jdbc_method: - type: string - default_port: - maximum: 65535 - minimum: 1024 - type: integer - format: int32 - ContainerCreateRequestDto: - required: - - name - - repository - - tag - type: object - properties: - name: - type: string - example: Air Quality - repository: - type: string - example: mariadb - tag: - type: string - example: "10.5" - Constraints: - type: object - properties: - uniques: - type: array - items: - $ref: '#/components/schemas/Unique' - foreignKeys: - type: array - items: - $ref: '#/components/schemas/ForeignKey' - checks: - uniqueItems: true - type: array - items: - type: string - Container: - type: object - properties: - id: - type: integer - format: int64 - createdBy: - type: string - format: uuid - creator: - $ref: '#/components/schemas/User' - ownedBy: - type: string - format: uuid - owner: - $ref: '#/components/schemas/User' - name: - type: string - internalName: - type: string - hash: - type: string - imageId: - type: integer - format: int64 - port: - type: integer - format: int32 - database: - $ref: '#/components/schemas/Database' - image: - $ref: '#/components/schemas/ContainerImage' - ipAddress: - type: string - created: - type: string - format: date-time - lastModified: - type: string - format: date-time - ContainerImage: - type: object - properties: - id: - type: integer - format: int64 - repository: - type: string - registry: - type: string - tag: - type: string - driverClass: - type: string - dialect: - type: string - jdbcMethod: - type: string - hash: - type: string - compiled: - type: string - format: date-time - size: - type: integer - format: int64 - defaultPort: - type: integer - format: int32 - environment: - type: array - items: - $ref: '#/components/schemas/ContainerImageEnvironmentItem' - dateFormats: - type: array - items: - $ref: '#/components/schemas/ContainerImageDate' - containers: - type: array - items: - $ref: '#/components/schemas/Container' - created: - type: string - format: date-time - lastModified: - type: string - format: date-time - ContainerImageDate: - type: object - properties: - id: - type: integer - format: int64 - iid: - type: integer - format: int64 - image: - $ref: '#/components/schemas/ContainerImage' - example: - type: string - hasTime: - type: boolean - databaseFormat: - type: string - unixFormat: - type: string - createdAt: - type: string - format: date-time - ContainerImageEnvironmentItem: - type: object - properties: - id: - type: integer - format: int64 - iid: - type: integer - format: int64 - key: - type: string - value: - type: string - type: - type: string - enum: - - USERNAME - - PASSWORD - - PRIVILEGED_USERNAME - - PRIVILEGED_PASSWORD - image: - $ref: '#/components/schemas/ContainerImage' - created: - type: string - format: date-time - lastModified: - type: string - format: date-time - Creator: - type: object - properties: - id: - type: integer - format: int64 - pid: - type: integer - format: int64 - firstname: - type: string - lastname: - type: string - affiliation: - type: string - orcid: - type: string - identifier: - $ref: '#/components/schemas/Identifier' - created: - type: string - format: date-time - creator: - $ref: '#/components/schemas/User' - lastModified: - type: string - format: date-time - Credential: - type: object - properties: - id: - type: string - format: uuid - type: - type: string - userId: - type: string - format: uuid - createdDate: - type: integer - format: int64 - secretData: - type: string - credentialData: - type: string - priority: - type: integer - format: int32 - user: - $ref: '#/components/schemas/User' - Database: - type: object - properties: - id: - type: integer - format: int64 - createdBy: - type: string - format: uuid - creator: - $ref: '#/components/schemas/User' - ownedBy: - type: string - format: uuid - owner: - $ref: '#/components/schemas/User' - container: - $ref: '#/components/schemas/Container' - name: - type: string - internalName: - type: string - exchangeName: - type: string - description: - type: string - contactPerson: - type: string - format: uuid - contact: - $ref: '#/components/schemas/User' - identifier: - $ref: '#/components/schemas/Identifier' - tables: - type: array - items: - $ref: '#/components/schemas/Table' - views: - type: array - items: - $ref: '#/components/schemas/View' - isPublic: - type: boolean - created: - type: string - format: date-time - lastModified: - type: string - format: date-time - ForeignKey: - type: object - properties: - fkid: - type: integer - format: int64 - tid: - type: integer - format: int64 - tdbid: - type: integer - format: int64 - table: - $ref: '#/components/schemas/Table' - rtid: - type: integer - format: int64 - rtdbid: - type: integer - format: int64 - referencedTable: - $ref: '#/components/schemas/Table' - references: - type: array - items: - $ref: '#/components/schemas/ForeignKeyReference' - onUpdate: - type: string - enum: - - ReferenceType.RESTRICT - - ReferenceType.CASCADE - - ReferenceType.SET_NULL - - ReferenceType.NO_ACTION - - ReferenceType.SET_DEFAULT - onDelete: - type: string - enum: - - ReferenceType.RESTRICT - - ReferenceType.CASCADE - - ReferenceType.SET_NULL - - ReferenceType.NO_ACTION - - ReferenceType.SET_DEFAULT - ForeignKeyReference: - type: object - properties: - id: - type: integer - format: int64 - foreignKey: - $ref: '#/components/schemas/ForeignKey' - column: - $ref: '#/components/schemas/TableColumn' - referencedColumn: - $ref: '#/components/schemas/TableColumn' - Identifier: - required: - - publisher - type: object - properties: - id: - type: integer - format: int64 - containerId: - type: integer - format: int64 - databaseId: - type: integer - format: int64 - queryId: - type: integer - format: int64 - creator: - $ref: '#/components/schemas/User' - title: - type: string - description: - type: string - publisher: - type: string - language: - type: string - enum: - - LanguageType.AB - - LanguageType.AA - - LanguageType.AF - - LanguageType.AK - - LanguageType.SQ - - LanguageType.AM - - LanguageType.AR - - LanguageType.AN - - LanguageType.HY - - LanguageType.AS - - LanguageType.AV - - LanguageType.AE - - LanguageType.AY - - LanguageType.AZ - - LanguageType.BM - - LanguageType.BA - - LanguageType.EU - - LanguageType.BE - - LanguageType.BN - - LanguageType.BH - - LanguageType.BI - - LanguageType.BS - - LanguageType.BR - - LanguageType.BG - - LanguageType.MY - - LanguageType.CA - - LanguageType.KM - - LanguageType.CH - - LanguageType.CE - - LanguageType.NY - - LanguageType.ZH - - LanguageType.CU - - LanguageType.CV - - LanguageType.KW - - LanguageType.CO - - LanguageType.CR - - LanguageType.HR - - LanguageType.CS - - LanguageType.DA - - LanguageType.DV - - LanguageType.NL - - LanguageType.DZ - - LanguageType.EN - - LanguageType.EO - - LanguageType.ET - - LanguageType.EE - - LanguageType.FO - - LanguageType.FJ - - LanguageType.FI - - LanguageType.FR - - LanguageType.FF - - LanguageType.GD - - LanguageType.GL - - LanguageType.LG - - LanguageType.KA - - LanguageType.DE - - LanguageType.KI - - LanguageType.EL - - LanguageType.KL - - LanguageType.GN - - LanguageType.GU - - LanguageType.HT - - LanguageType.HA - - LanguageType.HE - - LanguageType.HZ - - LanguageType.HI - - LanguageType.HO - - LanguageType.HU - - LanguageType.IS - - LanguageType.IO - - LanguageType.IG - - LanguageType.ID - - LanguageType.IA - - LanguageType.IE - - LanguageType.IU - - LanguageType.IK - - LanguageType.GA - - LanguageType.IT - - LanguageType.JA - - LanguageType.JV - - LanguageType.KN - - LanguageType.KR - - LanguageType.KS - - LanguageType.KK - - LanguageType.RW - - LanguageType.KV - - LanguageType.KG - - LanguageType.KO - - LanguageType.KJ - - LanguageType.KU - - LanguageType.KY - - LanguageType.LO - - LanguageType.LA - - LanguageType.LV - - LanguageType.LB - - LanguageType.LI - - LanguageType.LN - - LanguageType.LT - - LanguageType.LU - - LanguageType.MK - - LanguageType.MG - - LanguageType.MS - - LanguageType.ML - - LanguageType.MT - - LanguageType.GV - - LanguageType.MI - - LanguageType.MR - - LanguageType.MH - - LanguageType.RO - - LanguageType.MN - - LanguageType.NA - - LanguageType.NV - - LanguageType.ND - - LanguageType.NG - - LanguageType.NE - - LanguageType.SE - - LanguageType.NO - - LanguageType.NB - - LanguageType.NN - - LanguageType.II - - LanguageType.OC - - LanguageType.OJ - - LanguageType.OR - - LanguageType.OM - - LanguageType.OS - - LanguageType.PI - - LanguageType.PA - - LanguageType.PS - - LanguageType.FA - - LanguageType.PL - - LanguageType.PT - - LanguageType.QU - - LanguageType.RM - - LanguageType.RN - - LanguageType.RU - - LanguageType.SM - - LanguageType.SG - - LanguageType.SA - - LanguageType.SC - - LanguageType.SR - - LanguageType.SN - - LanguageType.SD - - LanguageType.SI - - LanguageType.SK - - LanguageType.SL - - LanguageType.SO - - LanguageType.ST - - LanguageType.NR - - LanguageType.ES - - LanguageType.SU - - LanguageType.SW - - LanguageType.SS - - LanguageType.SV - - LanguageType.TL - - LanguageType.TY - - LanguageType.TG - - LanguageType.TA - - LanguageType.TT - - LanguageType.TE - - LanguageType.TH - - LanguageType.BO - - LanguageType.TI - - LanguageType.TO - - LanguageType.TS - - LanguageType.TN - - LanguageType.TR - - LanguageType.TK - - LanguageType.TW - - LanguageType.UG - - LanguageType.UK - - LanguageType.UR - - LanguageType.UZ - - LanguageType.VE - - LanguageType.VI - - LanguageType.VO - - LanguageType.WA - - LanguageType.CY - - LanguageType.FY - - LanguageType.WO - - LanguageType.XH - - LanguageType.YI - - LanguageType.YO - - LanguageType.ZA - - LanguageType.ZU - license: - $ref: '#/components/schemas/License' - type: - type: string - enum: - - DATABASE - - SUBSET - query: - type: string - queryNormalized: - type: string - queryHash: - type: string - resultHash: - type: string - execution: - type: string - format: date-time - resultNumber: - type: integer - format: int64 - publicationYear: - type: integer - format: int32 - publicationMonth: - type: integer - format: int32 - publicationDay: - type: integer - format: int32 - visibility: - type: string - enum: - - VisibilityType.EVERYONE - - VisibilityType.SELF - database: - $ref: '#/components/schemas/Database' - related: - type: array - items: - $ref: '#/components/schemas/RelatedIdentifier' - doi: - type: string - creators: - type: array - items: - $ref: '#/components/schemas/Creator' - created: - type: string - format: date-time - lastModified: - type: string - format: date-time - License: - type: object - properties: - identifier: - type: string - uri: - type: string - RelatedIdentifier: - type: object - properties: - id: - type: integer - format: int64 - iid: - type: integer - format: int64 - value: - type: string - type: - type: string - enum: - - DOI - - URL - - URN - - ARK - - arXiv - - bibcode - - EAN13 - - EISSN - - Handle - - IGSN - - ISBN - - ISTC - - LISSN - - LSID - - PMID - - PURL - - UPC - - w3id - relation: - type: string - enum: - - IsCitedBy - - Cites - - IsSupplementTo - - IsSupplementedBy - - IsContinuedBy - - Continues - - IsDescribedBy - - Describes - - HasMetadata - - IsMetadataFor - - HasVersion - - IsVersionOf - - IsNewVersionOf - - IsPreviousVersionOf - - IsPartOf - - HasPart - - IsPublishedIn - - IsReferencedBy - - References - - IsDocumentedBy - - Documents - - IsCompiledBy - - Compiles - - IsVariantFormOf - - IsOriginalFormOf - - IsIdenticalTo - - IsReviewedBy - - Reviews - - IsDerivedFrom - - IsSourceOf - - IsRequiredBy - - Requires - - IsObsoletedBy - - Obsoletes - creator: - $ref: '#/components/schemas/User' - created: - type: string - format: date-time - lastModified: - type: string - format: date-time - Role: - type: object - properties: - id: - type: string - format: uuid - name: - type: string - realmId: - type: string - format: uuid - users: - type: array - items: - $ref: '#/components/schemas/User' - Table: - type: object - properties: - id: - type: integer - format: int64 - tdbid: - type: integer - format: int64 - creator: - $ref: '#/components/schemas/User' - owner: - $ref: '#/components/schemas/User' - name: - type: string - internalName: - type: string - queueName: - type: string - routingKey: - type: string - description: - type: string - database: - $ref: '#/components/schemas/Database' - columns: - type: array - items: - $ref: '#/components/schemas/TableColumn' - constraints: - $ref: '#/components/schemas/Constraints' - created: - type: string - format: date-time - lastModified: - type: string - format: date-time - TableColumn: - type: object - properties: - id: - type: integer - format: int64 - tid: - type: integer - format: int64 - cdbid: - type: integer - format: int64 - dfid: - type: integer - format: int64 - dateFormat: - $ref: '#/components/schemas/ContainerImageDate' - table: - $ref: '#/components/schemas/Table' - view: - $ref: '#/components/schemas/View' - creator: - $ref: '#/components/schemas/User' - name: - type: string - autoGenerated: - type: boolean - internalName: - type: string - isPrimaryKey: - type: boolean - indexLength: - type: integer - format: int32 - alias: - type: string - columnType: - type: string - enum: - - TableColumnType.ENUM - - TableColumnType.NUMBER - - TableColumnType.DECIMAL - - TableColumnType.STRING - - TableColumnType.TEXT - - TableColumnType.BOOLEAN - - TableColumnType.DATE - - TableColumnType.TIMESTAMP - - TableColumnType.BLOB - length: - type: integer - format: int32 - isNullAllowed: - type: boolean - enumValues: - type: array - items: - type: string - ordinalPosition: - type: integer - format: int32 - created: - type: string - format: date-time - concept: - $ref: '#/components/schemas/TableColumnConcept' - unit: - $ref: '#/components/schemas/TableColumnUnit' - lastModified: - type: string - format: date-time - TableColumnConcept: - type: object - properties: - uri: - type: string - name: - type: string - description: - type: string - created: - type: string - format: date-time - columns: - type: array - items: - $ref: '#/components/schemas/TableColumn' - TableColumnUnit: - type: object - properties: - uri: - type: string - name: - type: string - description: - type: string - created: - type: string - format: date-time - columns: - type: array - items: - $ref: '#/components/schemas/TableColumn' - Unique: - type: object - properties: - uid: - type: integer - format: int64 - tid: - type: integer - format: int64 - tdbid: - type: integer - format: int64 - table: - $ref: '#/components/schemas/Table' - columns: - type: array - items: - $ref: '#/components/schemas/TableColumn' - User: - type: object - properties: - id: - type: string - format: uuid - username: - type: string - firstname: - type: string - lastname: - type: string - realmId: - type: string - format: uuid - email: - type: string - emailVerified: - type: boolean - enabled: - type: boolean - createdTimestamp: - type: integer - format: int64 - databasePassword: - type: string - attributes: - type: array - items: - $ref: '#/components/schemas/UserAttribute' - credentials: - type: array - items: - $ref: '#/components/schemas/Credential' - containers: - type: array - items: - $ref: '#/components/schemas/Container' - databases: - type: array - items: - $ref: '#/components/schemas/Database' - identifiers: - type: array - items: - $ref: '#/components/schemas/Identifier' - roles: - type: array - items: - $ref: '#/components/schemas/Role' - tables: - type: array - items: - $ref: '#/components/schemas/Table' - UserAttribute: - type: object - properties: - id: - type: string - format: uuid - userId: - type: string - format: uuid - name: - type: string - value: - type: string - user: - $ref: '#/components/schemas/User' - View: - type: object - properties: - id: - type: integer - format: int64 - vcid: - type: integer - format: int64 - vdbid: - type: integer - format: int64 - createdBy: - type: string - format: uuid - creator: - $ref: '#/components/schemas/User' - database: - $ref: '#/components/schemas/Database' - name: - type: string - internalName: - type: string - isPublic: - type: boolean - isInitialView: - type: boolean - query: - type: string - columns: - type: array - items: - $ref: '#/components/schemas/TableColumn' - created: - type: string - format: date-time - lastModified: - type: string - format: date-time - ColumnBriefDto: - required: - - column_type - - database_id - - id - - internal_name - - name - - table_id - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: date - database_id: - type: integer - format: int64 - table_id: - type: integer - format: int64 - internal_name: - type: string - example: mdb_date - column_type: - type: string - example: date - enum: - - enum - - number - - decimal - - string - - text - - boolean - - date - - timestamp - - blob - ContainerDto: - required: - - created - - hash - - id - - internal_name - - name - - running - type: object - properties: - id: - type: integer - format: int64 - hash: - type: string - example: f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50 - name: - type: string - example: Air Quality - state: - type: string - example: running - enum: - - created - - restarting - - running - - paused - - exited - - dead - database: - $ref: '#/components/schemas/DatabaseDto' - running: - type: boolean - example: true - image: - $ref: '#/components/schemas/ImageBriefDto' - port: - type: integer - format: int32 - owner: - $ref: '#/components/schemas/UserBriefDto' - created: - type: string - format: date-time - example: 2021-03-12T15:26:21.678396092Z - internal_name: - type: string - example: air-quality - ip_address: - type: string - CreatorDto: - required: - - firstname - - id - - lastname - type: object - properties: - id: - type: integer - format: int64 - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Wesleyan University - orcid: - type: string - example: 0000-0002-1825-0097 - DatabaseAccessDto: - required: - - type - - user - type: object - properties: - user: - $ref: '#/components/schemas/UserDto' - type: - type: string - enum: - - read - - write_own - - write_all - created: - type: string - format: date-time - DatabaseDto: - required: - - creator - - exchange_name - - id - - internal_name - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - identifier: - $ref: '#/components/schemas/IdentifierDto' - description: - type: string - example: Weather Australia 2009-2021 - tables: - type: array - items: - $ref: '#/components/schemas/TableBriefDto' - views: - type: array - items: - $ref: '#/components/schemas/ViewBriefDto' - image: - $ref: '#/components/schemas/ImageDto' - container: - $ref: '#/components/schemas/ContainerDto' - accesses: - type: array - items: - $ref: '#/components/schemas/DatabaseAccessDto' - creator: - $ref: '#/components/schemas/UserBriefDto' - owner: - $ref: '#/components/schemas/UserBriefDto' - created: - type: string - format: date-time - exchange_name: - type: string - example: dbrepo/air_quality - internal_name: - type: string - example: weather_australia - is_public: - type: boolean - example: true - IdentifierDto: - required: - - container id - - creators - - database id - - execution - - publication_year - - query - - query_hash - - query_normalized - - result_hash - - result_number - - title - - type - - visibility - type: object - properties: - id: - type: integer - format: int64 - type: - type: string - enum: - - database - - subset - title: - type: string - example: "Airquality Stephansplatz, Vienna, Austria" - description: - type: string - example: "Air quality reports at Stephansplatz, Vienna" - query: - type: string - example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ - \ = \"09:STEF\"" - execution: - type: string - format: date-time - visibility: - type: string - example: everyone - enum: - - everyone - - self - doi: - type: string - example: 10.1038/nphys1170 - publisher: - type: string - example: TU Wien - language: - type: string - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - license: - $ref: '#/components/schemas/LicenseDto' - creators: - type: array - items: - $ref: '#/components/schemas/CreatorDto' - created: - type: string - format: date-time - container id: - type: integer - format: int64 - example: 1 - database id: - type: integer - format: int64 - example: 1 - query id: - type: integer - format: int64 - example: 1 - query_normalized: - type: string - example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ - \ = \"09:STEF\"" - related: - type: array - items: - $ref: '#/components/schemas/RelatedIdentifierDto' - query_hash: - type: string - description: query hash in sha512 - result_hash: - type: string - result_number: - type: integer - format: int64 - example: 1 - publication_day: - type: integer - format: int32 - example: 15 - publication_month: - type: integer - format: int32 - example: 12 - publication_year: - type: integer - format: int32 - example: 2022 - last_modified: - type: string - format: date-time - ImageBriefDto: - required: - - id - - registry - - repository - - tag - type: object - properties: - id: - type: integer - format: int64 - registry: - type: string - example: docker.io/library - repository: - type: string - example: mariadb - tag: - type: string - example: "10.5" - LicenseDto: - required: - - identifier - - uri - type: object - properties: - identifier: - type: string - example: MIT - uri: - type: string - example: https://opensource.org/licenses/MIT - RelatedIdentifierDto: - required: - - created - - id - - value - type: object - properties: - id: - type: integer - format: int64 - value: - type: string - example: 10.70124/dc4zh-9ce78 - type: - type: string - example: DOI - enum: - - DOI - - URL - - URN - - ARK - - arXiv - - bibcode - - EAN13 - - EISSN - - Handle - - IGSN - - ISBN - - ISTC - - LISSN - - LSID - - PMID - - PURL - - UPC - - w3id - relation: - type: string - example: Cites - enum: - - IsCitedBy - - Cites - - IsSupplementTo - - IsSupplementedBy - - IsContinuedBy - - Continues - - IsDescribedBy - - Describes - - HasMetadata - - IsMetadataFor - - HasVersion - - IsVersionOf - - IsNewVersionOf - - IsPreviousVersionOf - - IsPartOf - - HasPart - - IsPublishedIn - - IsReferencedBy - - References - - IsDocumentedBy - - Documents - - IsCompiledBy - - Compiles - - IsVariantFormOf - - IsOriginalFormOf - - IsIdenticalTo - - IsReviewedBy - - Reviews - - IsDerivedFrom - - IsSourceOf - - IsRequiredBy - - Requires - - IsObsoletedBy - - Obsoletes - created: - type: string - format: date-time - last_modified: - type: string - format: date-time - TableBriefDto: - required: - - columns - - description - - id - - internal_name - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - description: - type: string - example: Air Quality in Austria - owner: - $ref: '#/components/schemas/UserBriefDto' - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - internal_name: - type: string - example: air_quality - UserAttributeDto: - type: object - properties: - name: - type: string - example: theme_dark - value: - type: string - example: "true" - UserDto: - required: - - email - - email_verified - - id - - username - type: object - properties: - id: - type: string - format: uuid - example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 - username: - type: string - description: Only contains lowercase characters - example: jcarberry - name: - type: string - example: Josiah Carberry - orcid: - type: string - example: 0000-0002-1825-0097 - attributes: - type: array - items: - $ref: '#/components/schemas/UserAttributeDto' - 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 - example: jcarberry@brown.edu - given_name: - type: string - example: Josiah - family_name: - type: string - example: Carberry - email_verified: - type: boolean - example: true - ViewBriefDto: - required: - - created - - creator - - id - - internal_name - - name - - query - - vdbid - type: object - properties: - id: - type: integer - format: int64 - vdbid: - type: integer - format: int64 - name: - type: string - example: Air Quality - query: - type: string - example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC - created: - type: string - format: date-time - creator: - $ref: '#/components/schemas/UserDto' - internal_name: - type: string - example: air_quality - is_public: - type: boolean - example: true - initial_view: - type: boolean - description: True if it is the default view for the database - example: true - last_modified: - type: string - format: date-time - securitySchemes: - bearerAuth: - type: http - scheme: bearer - bearerFormat: JWT diff --git a/.docs/.swagger/api-data.yaml b/.docs/.swagger/api-data.yaml index 4d40f4a702c2c8b62c8e555bf4c7191543902132..4b5a54fbbf69af41758d3f6e29da16c1661a9262 100644 --- a/.docs/.swagger/api-data.yaml +++ b/.docs/.swagger/api-data.yaml @@ -8,7 +8,7 @@ info: license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 - version: 1.3.0 + version: dbrepo-latest externalDocs: description: Sourcecode Documentation url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services diff --git a/.docs/.swagger/api-database.yaml b/.docs/.swagger/api-database.yaml deleted file mode 100644 index 40b76995cc7f1fb0776ba1cd9e7dabb012ca377f..0000000000000000000000000000000000000000 --- a/.docs/.swagger/api-database.yaml +++ /dev/null @@ -1,1626 +0,0 @@ -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.2.0 -externalDocs: - description: Sourcecode Documentation - url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services -servers: -- url: http://localhost:9092 - description: Generated server url -- url: https://dbrepo2.tuwien.ac.at - description: Sandbox -paths: - /api/container/{id}/database/{databaseId}/visibility: - put: - tags: - - database-endpoint - summary: Update database - operationId: visibility - 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/DatabaseModifyVisibilityDto' - required: true - responses: - "404": - description: Database or user could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Visibility modified successfully - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseDto' - "405": - description: Visibility modification is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/transfer: - put: - tags: - - database-endpoint - summary: Transfer database - operationId: transfer - 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/DatabaseTransferDto' - required: true - responses: - "202": - description: Transfer of ownership was successful - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseDto' - "404": - description: Database or user could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Transfer of ownership is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/access/{username}: - put: - tags: - - access-endpoint - summary: Modify access to some database - 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: username - in: path - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseModifyAccessDto' - required: true - responses: - "404": - description: Database or user not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Modify access query or database connection is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Modify access succeeded - "403": - description: Modify access not permitted when no access is granted in the - first place - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - delete: - tags: - - access-endpoint - summary: Revoke access to some database - operationId: revoke - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: username - in: path - required: true - schema: - type: string - responses: - "404": - description: User with access was not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Modify access query or database connection is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Revoke of access not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Revoke of access not permitted as no access was found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Revoked access successfully - security: - - bearerAuth: [] - /api/container/{id}/database: - get: - tags: - - database-endpoint - summary: List databases - operationId: list - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "200": - description: List of databases - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/DatabaseBriefDto' - post: - tags: - - 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: - "201": - description: Created a new database - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseBriefDto' - "404": - description: "Container, user or database could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "406": - description: Failed to create user at broker service or virtual host could - not be reached at broker service - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Database create permission is missing or grant permissions - at broker service failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "501": - description: Container image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "502": - description: Connection to the container failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Database create query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Database name already exist or query store could not be created - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/access: - get: - tags: - - access-endpoint - summary: Check access to some database - 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 - responses: - "403": - description: No access to this database - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Found database access - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseAccessDto' - "405": - description: Check access is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - post: - tags: - - access-endpoint - summary: Give access to some database - operationId: create_1 - 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/DatabaseGiveAccessDto' - required: true - responses: - "202": - description: Granting access succeeded - "405": - description: Granting access not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Granting access query or database connection is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Database or user not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}: - get: - tags: - - database-endpoint - summary: Find 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: Database information is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Database or container could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Database found successfully - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseDto' - security: - - bearerAuth: [] - delete: - tags: - - 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: - "400": - description: Database delete query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Container or database could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Database delete permission is missing or revoke permissions - at broker service failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "501": - description: Container image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "406": - description: Failed to delete user at broker service or virtual host could - not be reached at broker service - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "502": - description: Connection to the container failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "201": - description: Deleted a database - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseBriefDto' - security: - - bearerAuth: [] - /api/container/{id}/database/license: - get: - tags: - - license-endpoint - summary: Get all licenses - operationId: list_1 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "200": - description: List of licenses - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/LicenseDto' -components: - schemas: - DatabaseModifyVisibilityDto: - required: - - is_public - type: object - properties: - is_public: - type: boolean - example: true - ApiErrorDto: - required: - - code - - message - - status - type: object - properties: - status: - type: string - example: STATUS - enum: - - 100 CONTINUE - - 101 SWITCHING_PROTOCOLS - - 102 PROCESSING - - 103 EARLY_HINTS - - 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 - example: Error message - code: - type: string - example: error.service.code - ColumnBriefDto: - required: - - column_type - - database_id - - id - - internal_name - - name - - table_id - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: date - database_id: - type: integer - format: int64 - table_id: - type: integer - format: int64 - internal_name: - type: string - example: mdb_date - column_type: - type: string - example: date - enum: - - enum - - number - - decimal - - string - - text - - boolean - - date - - timestamp - - blob - ContainerDto: - required: - - created - - hash - - id - - internal_name - - name - - running - type: object - properties: - id: - type: integer - format: int64 - hash: - type: string - example: f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50 - name: - type: string - example: Air Quality - state: - type: string - example: running - enum: - - created - - restarting - - running - - paused - - exited - - dead - database: - $ref: '#/components/schemas/DatabaseDto' - running: - type: boolean - example: true - image: - $ref: '#/components/schemas/ImageBriefDto' - port: - type: integer - format: int32 - owner: - $ref: '#/components/schemas/UserBriefDto' - created: - type: string - format: date-time - example: 2021-03-12T15:26:21.678396092Z - internal_name: - type: string - example: air-quality - ip_address: - type: string - CreatorDto: - required: - - firstname - - id - - lastname - type: object - properties: - id: - type: integer - format: int64 - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Wesleyan University - orcid: - type: string - example: 0000-0002-1825-0097 - DatabaseAccessDto: - required: - - type - - user - type: object - properties: - user: - $ref: '#/components/schemas/UserDto' - type: - type: string - enum: - - read - - write_own - - write_all - created: - type: string - format: date-time - DatabaseDto: - required: - - creator - - exchange_name - - id - - internal_name - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - identifier: - $ref: '#/components/schemas/IdentifierDto' - description: - type: string - example: Weather Australia 2009-2021 - tables: - type: array - items: - $ref: '#/components/schemas/TableBriefDto' - views: - type: array - items: - $ref: '#/components/schemas/ViewBriefDto' - image: - $ref: '#/components/schemas/ImageDto' - container: - $ref: '#/components/schemas/ContainerDto' - accesses: - type: array - items: - $ref: '#/components/schemas/DatabaseAccessDto' - creator: - $ref: '#/components/schemas/UserBriefDto' - owner: - $ref: '#/components/schemas/UserBriefDto' - created: - type: string - format: date-time - exchange_name: - type: string - example: dbrepo/air_quality - internal_name: - type: string - example: weather_australia - is_public: - type: boolean - example: true - IdentifierDto: - required: - - container id - - creators - - database id - - execution - - publication_year - - query - - query_hash - - query_normalized - - result_hash - - result_number - - title - - type - - visibility - type: object - properties: - id: - type: integer - format: int64 - type: - type: string - enum: - - database - - subset - title: - type: string - example: "Airquality Stephansplatz, Vienna, Austria" - description: - type: string - example: "Air quality reports at Stephansplatz, Vienna" - query: - type: string - example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ - \ = \"09:STEF\"" - execution: - type: string - format: date-time - visibility: - type: string - example: everyone - enum: - - everyone - - self - doi: - type: string - example: 10.1038/nphys1170 - publisher: - type: string - example: TU Wien - language: - type: string - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - license: - $ref: '#/components/schemas/LicenseDto' - creators: - type: array - items: - $ref: '#/components/schemas/CreatorDto' - created: - type: string - format: date-time - container id: - type: integer - format: int64 - example: 1 - database id: - type: integer - format: int64 - example: 1 - query id: - type: integer - format: int64 - example: 1 - query_normalized: - type: string - example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ - \ = \"09:STEF\"" - related: - type: array - items: - $ref: '#/components/schemas/RelatedIdentifierDto' - query_hash: - type: string - description: query hash in sha512 - result_hash: - type: string - result_number: - type: integer - format: int64 - example: 1 - publication_day: - type: integer - format: int32 - example: 15 - publication_month: - type: integer - format: int32 - example: 12 - publication_year: - type: integer - format: int32 - example: 2022 - last_modified: - type: string - format: date-time - ImageBriefDto: - required: - - id - - registry - - repository - - tag - type: object - properties: - id: - type: integer - format: int64 - registry: - type: string - example: docker.io/library - repository: - type: string - example: mariadb - tag: - type: string - example: "10.5" - ImageDateDto: - required: - - database_format - - example - - has_time - - id - - unix_format - type: object - properties: - id: - type: integer - format: int64 - example: - type: string - example: 30.01.2022 - database_format: - type: string - example: '%d.%c.%Y' - unix_format: - type: string - example: dd.MM.YYYY - has_time: - type: boolean - example: false - created_at: - type: string - format: date-time - ImageDto: - required: - - default_port - - dialect - - driver_class - - id - - jdbc_method - - registry - - repository - - tag - type: object - properties: - id: - type: integer - format: int64 - registry: - type: string - example: docker.io/library - repository: - type: string - example: mariadb - tag: - type: string - example: "10.5" - dialect: - type: string - example: org.hibernate.dialect.MariaDBDialect - hash: - type: string - example: sha256:c5ec7353d87dfc35067e7bffeb25d6a0d52dad41e8b7357213e3b12d6e7ff78e - compiled: - type: string - format: date-time - example: 2021-03-12T15:26:21.678396092Z - size: - type: integer - example: 314295447 - driver_class: - type: string - example: org.mariadb.jdbc.Driver - date_formats: - type: array - items: - $ref: '#/components/schemas/ImageDateDto' - jdbc_method: - type: string - example: mariadb - default_port: - type: integer - format: int32 - example: 3306 - LicenseDto: - required: - - identifier - - uri - type: object - properties: - identifier: - type: string - example: MIT - uri: - type: string - example: https://opensource.org/licenses/MIT - RelatedIdentifierDto: - required: - - created - - id - - value - type: object - properties: - id: - type: integer - format: int64 - value: - type: string - example: 10.70124/dc4zh-9ce78 - type: - type: string - example: DOI - enum: - - DOI - - URL - - URN - - ARK - - arXiv - - bibcode - - EAN13 - - EISSN - - Handle - - IGSN - - ISBN - - ISTC - - LISSN - - LSID - - PMID - - PURL - - UPC - - w3id - relation: - type: string - example: Cites - enum: - - IsCitedBy - - Cites - - IsSupplementTo - - IsSupplementedBy - - IsContinuedBy - - Continues - - IsDescribedBy - - Describes - - HasMetadata - - IsMetadataFor - - HasVersion - - IsVersionOf - - IsNewVersionOf - - IsPreviousVersionOf - - IsPartOf - - HasPart - - IsPublishedIn - - IsReferencedBy - - References - - IsDocumentedBy - - Documents - - IsCompiledBy - - Compiles - - IsVariantFormOf - - IsOriginalFormOf - - IsIdenticalTo - - IsReviewedBy - - Reviews - - IsDerivedFrom - - IsSourceOf - - IsRequiredBy - - Requires - - IsObsoletedBy - - Obsoletes - created: - type: string - format: date-time - last_modified: - type: string - format: date-time - TableBriefDto: - required: - - columns - - description - - id - - internal_name - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - description: - type: string - example: Air Quality in Austria - owner: - $ref: '#/components/schemas/UserBriefDto' - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - internal_name: - type: string - example: air_quality - UserAttributeDto: - type: object - properties: - name: - type: string - example: theme_dark - value: - type: string - example: "true" - UserBriefDto: - required: - - id - - username - type: object - properties: - id: - type: string - format: uuid - example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 - username: - type: string - description: Only contains lowercase characters - example: jcarberry - name: - type: string - example: Josiah Carberry - orcid: - type: string - example: 0000-0002-1825-0097 - given_name: - type: string - example: Josiah - family_name: - type: string - example: Carberry - email_verified: - type: boolean - example: true - UserDto: - required: - - email - - email_verified - - id - - username - type: object - properties: - id: - type: string - format: uuid - example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 - username: - type: string - description: Only contains lowercase characters - example: jcarberry - name: - type: string - example: Josiah Carberry - orcid: - type: string - example: 0000-0002-1825-0097 - attributes: - type: array - items: - $ref: '#/components/schemas/UserAttributeDto' - 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 - example: jcarberry@brown.edu - given_name: - type: string - example: Josiah - family_name: - type: string - example: Carberry - email_verified: - type: boolean - example: true - ViewBriefDto: - required: - - created - - creator - - id - - internal_name - - name - - query - - vdbid - type: object - properties: - id: - type: integer - format: int64 - vdbid: - type: integer - format: int64 - name: - type: string - example: Air Quality - query: - type: string - example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC - created: - type: string - format: date-time - creator: - $ref: '#/components/schemas/UserDto' - internal_name: - type: string - example: air_quality - is_public: - type: boolean - example: true - initial_view: - type: boolean - description: True if it is the default view for the database - example: true - last_modified: - type: string - format: date-time - DatabaseTransferDto: - required: - - username - type: object - properties: - username: - type: string - DatabaseModifyAccessDto: - required: - - type - type: object - properties: - type: - type: string - enum: - - read - - write_own - - write_all - DatabaseCreateDto: - required: - - is_public - - name - type: object - properties: - name: - type: string - example: Air Quality - is_public: - type: boolean - example: true - ContainerBriefDto: - required: - - creator - - hash - - id - - internal_name - - name - - running - type: object - properties: - id: - type: integer - format: int64 - hash: - type: string - example: f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50 - name: - type: string - example: Air Quality - creator: - $ref: '#/components/schemas/UserBriefDto' - running: - type: boolean - example: true - database: - $ref: '#/components/schemas/DatabaseBriefDto' - created: - type: string - format: date-time - internal_name: - type: string - example: air-quality - CreatorBriefDto: - required: - - firstname - - lastname - type: object - properties: - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Wesleyan University - DatabaseBriefDto: - required: - - id - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - description: - type: string - example: Air Quality in Austria - identifier: - $ref: '#/components/schemas/IdentifierBriefDto' - engine: - type: string - example: mariadb:10.5 - owner: - $ref: '#/components/schemas/UserBriefDto' - container: - $ref: '#/components/schemas/ContainerBriefDto' - creator: - $ref: '#/components/schemas/UserBriefDto' - created: - type: string - format: date-time - is_public: - type: boolean - example: true - IdentifierBriefDto: - required: - - container id - - creators - - database id - - id - - publication_year - - title - - type - type: object - properties: - id: - type: integer - format: int64 - title: - type: string - example: "Airquality Stephansplatz, Vienna, Austria" - type: - type: string - enum: - - database - - subset - doi: - type: string - example: 10.1038/nphys1170 - publisher: - type: string - example: TU Wien - creators: - type: array - items: - $ref: '#/components/schemas/CreatorBriefDto' - container id: - type: integer - format: int64 - example: 1 - database id: - type: integer - format: int64 - example: 1 - query id: - type: integer - format: int64 - example: 1 - publication_year: - type: integer - format: int32 - example: 2022 - DatabaseGiveAccessDto: - required: - - type - - username - type: object - properties: - username: - type: string - type: - type: string - enum: - - read - - write_own - - write_all - securitySchemes: - bearerAuth: - type: http - scheme: bearer - bearerFormat: JWT diff --git a/.docs/.swagger/api-identifier.yaml b/.docs/.swagger/api-identifier.yaml deleted file mode 100644 index 002b392bb6df32db0e8153596b5d397297ffb6af..0000000000000000000000000000000000000000 --- a/.docs/.swagger/api-identifier.yaml +++ /dev/null @@ -1,1333 +0,0 @@ -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.2.0 -externalDocs: - description: Sourcecode Documentation - url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services -servers: -- url: http://localhost:9096 - description: Generated server url -- url: https://dbrepo2.tuwien.ac.at - description: Sandbox -paths: - /api/pid/{id}: - put: - tags: - - persistence-endpoint - summary: Update some identifier - operationId: update - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/IdentifierUpdateDto' - required: true - responses: - "405": - description: Updating identifier not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Updated identifier - content: - application/json: - schema: - $ref: '#/components/schemas/IdentifierDto' - "404": - description: Identifier or user could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Identifier data is not valid to the form - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "406": - description: Updating identifier not allowed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - delete: - tags: - - persistence-endpoint - summary: Delete some identifier - operationId: delete - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "404": - description: Identifier could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Deleting identifier not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Deleted identifier - security: - - bearerAuth: [] - /api/identifier: - get: - tags: - - identifier-endpoint - summary: Find identifiers - operationId: list - parameters: - - name: dbid - in: query - required: false - schema: - type: integer - format: int64 - - name: qid - in: query - required: false - schema: - type: integer - format: int64 - - name: type - in: query - required: false - schema: - type: string - enum: - - database - - subset - responses: - "200": - description: List identifiers - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/IdentifierDto' - post: - tags: - - identifier-endpoint - summary: Create identifier - operationId: create - parameters: - - name: Authorization - in: header - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/IdentifierCreateDto' - required: true - responses: - "406": - description: Creating identifier not allowed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Identifier form contains invalid request data - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "502": - description: Query information could not be retrieved - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "201": - description: Created identifier - content: - application/json: - schema: - $ref: '#/components/schemas/IdentifierDto' - "403": - description: Insufficient access rights or authorities - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Creating identifier not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Identifier for this resource already exists - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - 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 - - name: Accept - in: header - required: true - schema: - type: string - responses: - "200": - description: Found identifier successfully - content: - application/json: - schema: - $ref: '#/components/schemas/IdentifierDto' - text/csv: {} - text/xml: {} - text/bibliography: {} - text/bibliography; style=apa: {} - text/bibliography; style=ieee: {} - text/bibliography; style=bibtex: {} - "404": - description: Identifier could not be exported from database as the resource - was not found - content: - text/csv: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: "Identifier could not be exported, the requested style is not\ - \ known" - content: - text/bibliography: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "502": - description: Identifier could not exported from database as it is not reachable - content: - text/csv: - schema: - $ref: '#/components/schemas/ApiErrorDto' -components: - schemas: - CreatorDto: - required: - - firstname - - id - - lastname - type: object - properties: - id: - type: integer - format: int64 - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Wesleyan University - orcid: - type: string - example: 0000-0002-1825-0097 - IdentifierUpdateDto: - required: - - cid - - creators - - dbid - - publication_year - - title - - type - - visibility - type: object - properties: - cid: - type: integer - format: int64 - dbid: - type: integer - format: int64 - qid: - type: integer - format: int64 - doi: - type: string - example: 10.1038/nphys1170 - type: - type: string - enum: - - database - - subset - title: - type: string - example: "Airquality Stephansplatz, Vienna, Austria" - description: - type: string - example: "Air quality reports at Stephansplatz, Vienna" - visibility: - type: string - example: everyone - enum: - - everyone - - self - publisher: - type: string - example: TU Wien - language: - type: string - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - license: - $ref: '#/components/schemas/LicenseDto' - creators: - type: array - items: - $ref: '#/components/schemas/CreatorDto' - publication_day: - type: integer - format: int32 - example: 15 - publication_month: - type: integer - format: int32 - example: 12 - publication_year: - type: integer - format: int32 - example: 2022 - related_identifiers: - type: array - items: - $ref: '#/components/schemas/RelatedIdentifierCreateDto' - LicenseDto: - required: - - identifier - - uri - type: object - properties: - identifier: - type: string - example: MIT - uri: - type: string - example: https://opensource.org/licenses/MIT - RelatedIdentifierCreateDto: - required: - - value - type: object - properties: - value: - type: string - example: 10.70124/dc4zh-9ce78 - type: - type: string - example: DOI - enum: - - DOI - - URL - - URN - - ARK - - arXiv - - bibcode - - EAN13 - - EISSN - - Handle - - IGSN - - ISBN - - ISTC - - LISSN - - LSID - - PMID - - PURL - - UPC - - w3id - relation: - type: string - example: Cites - enum: - - IsCitedBy - - Cites - - IsSupplementTo - - IsSupplementedBy - - IsContinuedBy - - Continues - - IsDescribedBy - - Describes - - HasMetadata - - IsMetadataFor - - HasVersion - - IsVersionOf - - IsNewVersionOf - - IsPreviousVersionOf - - IsPartOf - - HasPart - - IsPublishedIn - - IsReferencedBy - - References - - IsDocumentedBy - - Documents - - IsCompiledBy - - Compiles - - IsVariantFormOf - - IsOriginalFormOf - - IsIdenticalTo - - IsReviewedBy - - Reviews - - IsDerivedFrom - - IsSourceOf - - IsRequiredBy - - Requires - - IsObsoletedBy - - Obsoletes - ApiErrorDto: - required: - - code - - message - - status - type: object - properties: - status: - type: string - example: STATUS - enum: - - 100 CONTINUE - - 101 SWITCHING_PROTOCOLS - - 102 PROCESSING - - 103 EARLY_HINTS - - 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 - example: Error message - code: - type: string - example: error.service.code - IdentifierDto: - required: - - container id - - creators - - database id - - execution - - publication_year - - query - - query_hash - - query_normalized - - result_hash - - result_number - - title - - type - - visibility - type: object - properties: - id: - type: integer - format: int64 - type: - type: string - enum: - - database - - subset - title: - type: string - example: "Airquality Stephansplatz, Vienna, Austria" - description: - type: string - example: "Air quality reports at Stephansplatz, Vienna" - query: - type: string - example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ - \ = \"09:STEF\"" - execution: - type: string - format: date-time - visibility: - type: string - example: everyone - enum: - - everyone - - self - doi: - type: string - example: 10.1038/nphys1170 - publisher: - type: string - example: TU Wien - language: - type: string - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - license: - $ref: '#/components/schemas/LicenseDto' - creators: - type: array - items: - $ref: '#/components/schemas/CreatorDto' - created: - type: string - format: date-time - container id: - type: integer - format: int64 - example: 1 - database id: - type: integer - format: int64 - example: 1 - query id: - type: integer - format: int64 - example: 1 - query_normalized: - type: string - example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ - \ = \"09:STEF\"" - related: - type: array - items: - $ref: '#/components/schemas/RelatedIdentifierDto' - query_hash: - type: string - description: query hash in sha512 - result_hash: - type: string - result_number: - type: integer - format: int64 - example: 1 - publication_day: - type: integer - format: int32 - example: 15 - publication_month: - type: integer - format: int32 - example: 12 - publication_year: - type: integer - format: int32 - example: 2022 - last_modified: - type: string - format: date-time - RelatedIdentifierDto: - required: - - created - - id - - value - type: object - properties: - id: - type: integer - format: int64 - value: - type: string - example: 10.70124/dc4zh-9ce78 - type: - type: string - example: DOI - enum: - - DOI - - URL - - URN - - ARK - - arXiv - - bibcode - - EAN13 - - EISSN - - Handle - - IGSN - - ISBN - - ISTC - - LISSN - - LSID - - PMID - - PURL - - UPC - - w3id - relation: - type: string - example: Cites - enum: - - IsCitedBy - - Cites - - IsSupplementTo - - IsSupplementedBy - - IsContinuedBy - - Continues - - IsDescribedBy - - Describes - - HasMetadata - - IsMetadataFor - - HasVersion - - IsVersionOf - - IsNewVersionOf - - IsPreviousVersionOf - - IsPartOf - - HasPart - - IsPublishedIn - - IsReferencedBy - - References - - IsDocumentedBy - - Documents - - IsCompiledBy - - Compiles - - IsVariantFormOf - - IsOriginalFormOf - - IsIdenticalTo - - IsReviewedBy - - Reviews - - IsDerivedFrom - - IsSourceOf - - IsRequiredBy - - Requires - - IsObsoletedBy - - Obsoletes - created: - type: string - format: date-time - last_modified: - type: string - format: date-time - CreatorCreateDto: - required: - - firstname - - lastname - type: object - properties: - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Wesleyan University - orcid: - type: string - example: 0000-0002-1825-0097 - IdentifierCreateDto: - required: - - cid - - creators - - dbid - - publication_year - - title - - type - - visibility - type: object - properties: - cid: - type: integer - format: int64 - dbid: - type: integer - format: int64 - qid: - type: integer - format: int64 - type: - type: string - enum: - - database - - subset - title: - type: string - example: "Airquality Stephansplatz, Vienna, Austria" - description: - type: string - example: "Air quality reports at Stephansplatz, Vienna" - visibility: - type: string - example: everyone - enum: - - everyone - - self - publisher: - type: string - example: TU Wien - language: - type: string - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - license: - $ref: '#/components/schemas/LicenseDto' - creators: - type: array - items: - $ref: '#/components/schemas/CreatorCreateDto' - publication_day: - type: integer - format: int32 - example: 15 - publication_month: - type: integer - format: int32 - example: 12 - publication_year: - type: integer - format: int32 - example: 2022 - related_identifiers: - type: array - items: - $ref: '#/components/schemas/RelatedIdentifierCreateDto' - securitySchemes: - bearerAuth: - type: http - scheme: bearer - bearerFormat: JWT diff --git a/.docs/.swagger/api-metadata.yaml b/.docs/.swagger/api-metadata.yaml index b92b07c6709e5f92c26bd9917c6553da034c2988..c609f5390d4b3ea56032f40ccc96f7ef4ba5e96c 100644 --- a/.docs/.swagger/api-metadata.yaml +++ b/.docs/.swagger/api-metadata.yaml @@ -8,14 +8,14 @@ info: license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 - version: 1.3.0 + version: dbrepo-latest externalDocs: description: Sourcecode Documentation url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services servers: - url: http://localhost:9099 description: Generated server url -- url: https://dbrepo2.tuwien.ac.at +- url: https://test.dbrepo.tuwien.ac.at description: Sandbox paths: /api/database/{databaseId}/table/{tableId}/history: @@ -38,40 +38,34 @@ paths: type: integer format: int64 responses: - "404": - description: "Table, database or user could not be found" + "200": + description: Find table history successfully content: application/json: schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed + type: array + items: + $ref: '#/components/schemas/TableHistoryDto' + "400": + description: Table history query is malformed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "405": + "403": description: Find table history is not permitted content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Table history query is malformed + "409": + description: Query store failed to query table history content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Find table history successfully - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/TableHistoryDto' - "504": - description: Query store failed to query table history + "404": + description: "Table, database or user could not be found" content: application/json: schema: @@ -97,40 +91,34 @@ paths: type: integer format: int64 responses: - "404": - description: "Table, database or user could not be found" + "200": + description: Find table history successfully content: application/json: schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed + type: array + items: + $ref: '#/components/schemas/TableHistoryDto' + "400": + description: Table history query is malformed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "405": + "403": description: Find table history is not permitted content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Table history query is malformed + "409": + description: Query store failed to query table history content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Find table history successfully - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/TableHistoryDto' - "504": - description: Query store failed to query table history + "404": + description: "Table, database or user could not be found" content: application/json: schema: @@ -188,44 +176,38 @@ paths: schema: type: string responses: - "200": - description: OK + "403": + description: Access to the database is forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Table data is malformed or image is not supported + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Table or database could not be found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "422": + description: Could not import csv via sidecar + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "202": + description: Get table data successfully content: '*/*': schema: $ref: '#/components/schemas/QueryResultDto' security: - bearerAuth: [] - put: - tags: - - table-data-endpoint - summary: Update data - operationId: update_6 - parameters: - - 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/TableCsvUpdateDto' - required: true - responses: - "200": - description: OK - deprecated: true - security: - - bearerAuth: [] post: tags: - table-data-endpoint @@ -251,15 +233,37 @@ paths: $ref: '#/components/schemas/TableCsvDto' required: true responses: - "200": - description: OK + "403": + description: Access to the database is forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "202": + description: Inserted data successfully + content: + '*/*': + schema: + type: object + "404": + description: Table or database could not be found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Insert table data is malformed + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] delete: tags: - table-data-endpoint summary: Delete data - operationId: delete_7 + operationId: delete_6 parameters: - name: databaseId in: path @@ -280,8 +284,26 @@ paths: $ref: '#/components/schemas/TableCsvDeleteDto' required: true responses: - "200": - description: OK + "202": + description: Deleted table data successfully + "403": + description: Access to the database is forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Table or database could not be found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Table data or query is malformed + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] head: @@ -334,8 +356,32 @@ paths: schema: type: string responses: - "200": - description: OK + "403": + description: Access to the database is forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Table data is malformed or image is not supported + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Table or database could not be found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "422": + description: Could not import csv via sidecar + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "202": + description: Get table data successfully content: '*/*': schema: @@ -356,19 +402,19 @@ paths: type: string format: uuid responses: - "200": - description: Found user - content: - application/json: - schema: - $ref: '#/components/schemas/UserDto' "404": description: User was not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "405": + "200": + description: Found user + content: + application/json: + schema: + $ref: '#/components/schemas/UserDto' + "403": description: Find user is not permitted content: application/json: @@ -395,14 +441,14 @@ paths: $ref: '#/components/schemas/UserUpdateDto' required: true responses: - "405": - description: Modify user is not permitted + "400": + description: Modify user query is malformed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "404": - description: User attribute was not found + "403": + description: Modify user is not permitted content: application/json: schema: @@ -413,6 +459,18 @@ paths: application/json: schema: $ref: '#/components/schemas/UserDto' + "404": + description: User attribute was not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "405": + description: Foreign user modification + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] /api/user/{id}/theme: @@ -435,12 +493,6 @@ paths: $ref: '#/components/schemas/UserThemeSetDto' required: true responses: - "405": - description: Modify user is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' "404": description: User or user attribute was not found content: @@ -453,6 +505,18 @@ paths: application/json: schema: $ref: '#/components/schemas/UserDto' + "403": + description: Modify user is not permitted + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "405": + description: Foreign user modification + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] /api/user/{id}/password: @@ -475,24 +539,36 @@ paths: $ref: '#/components/schemas/UserPasswordDto' required: true responses: - "202": - description: Modified user password + "403": + description: Modify is not allowed content: application/json: schema: - $ref: '#/components/schemas/UserDto' + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: User was not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' "405": - description: Modify user is not permitted + description: Foreign user modification content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "404": - description: User was not found + "503": + description: Authentication service does not respond content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' + "202": + description: Modified user password + content: + application/json: + schema: + $ref: '#/components/schemas/UserDto' security: - bearerAuth: [] /api/semantic/ontology/{id}: @@ -509,18 +585,18 @@ paths: type: integer format: int64 responses: - "404": - description: Could not find ontology - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' "200": description: Find one ontology content: application/json: schema: $ref: '#/components/schemas/OntologyDto' + "404": + description: Could not find ontology + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' put: tags: - ontology-endpoint @@ -540,18 +616,18 @@ paths: $ref: '#/components/schemas/OntologyModifyDto' required: true responses: - "404": - description: Could not find ontology - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' "202": description: Updated ontology successfully content: application/json: schema: $ref: '#/components/schemas/OntologyDto' + "404": + description: Could not find ontology + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] delete: @@ -579,87 +655,6 @@ paths: $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] - /api/pid/{id}: - put: - tags: - - persistence-endpoint - summary: Update some identifier - operationId: update_1 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/IdentifierSaveDto' - required: true - responses: - "406": - description: Updating identifier not allowed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Updating identifier not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Updated identifier - content: - application/json: - schema: - $ref: '#/components/schemas/IdentifierDto' - "404": - description: Identifier or user could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Identifier data is not valid to the form - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - delete: - tags: - - persistence-endpoint - summary: Delete some identifier - operationId: delete_1 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "405": - description: Deleting identifier not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Deleted identifier - "404": - description: Identifier could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] /api/maintenance/message/{id}: get: tags: @@ -674,6 +669,12 @@ paths: type: integer format: int64 responses: + "404": + description: Could not find message + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' "200": description: Get messages content: @@ -684,7 +685,7 @@ paths: tags: - maintenance-endpoint summary: Update maintenance message - operationId: update_2 + operationId: update_1 parameters: - name: id in: path @@ -704,7 +705,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/BannerMessageNotFoundException' + $ref: '#/components/schemas/ApiErrorDto' "202": description: Updated message content: @@ -724,16 +725,16 @@ paths: type: integer format: int64 responses: - "202": - description: Deleted message - content: - application/json: {} "404": description: Could not find message content: application/json: schema: - $ref: '#/components/schemas/BannerMessageNotFoundException' + $ref: '#/components/schemas/ApiErrorDto' + "202": + description: Deleted message + content: + application/json: {} /api/image/{id}: get: tags: @@ -748,23 +749,23 @@ paths: type: integer format: int64 responses: - "404": - description: Image could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' "200": description: Found image content: application/json: schema: $ref: '#/components/schemas/ImageDto' + "404": + description: Image could not be found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' put: tags: - image-endpoint summary: Update some image - operationId: update_3 + operationId: update_2 parameters: - name: id in: path @@ -779,18 +780,18 @@ paths: $ref: '#/components/schemas/ImageChangeDto' required: true responses: - "404": - description: Image could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' "202": description: Updated image successfully content: application/json: schema: $ref: '#/components/schemas/ImageDto' + "404": + description: Image could not be found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] delete: @@ -836,7 +837,13 @@ paths: $ref: '#/components/schemas/DatabaseModifyVisibilityDto' required: true responses: - "405": + "404": + description: Database could not be found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": description: Visibility modification is not permitted content: application/json: @@ -848,12 +855,6 @@ paths: application/json: schema: $ref: '#/components/schemas/DatabaseDto' - "404": - description: Database or user could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] /api/database/{id}/transfer: @@ -876,8 +877,8 @@ paths: $ref: '#/components/schemas/DatabaseTransferDto' required: true responses: - "405": - description: Transfer of ownership is not permitted + "404": + description: Database or user could not be found content: application/json: schema: @@ -888,8 +889,8 @@ paths: application/json: schema: $ref: '#/components/schemas/DatabaseDto' - "404": - description: Database or user could not be found + "403": + description: Transfer of ownership is not permitted content: application/json: schema: @@ -901,7 +902,7 @@ paths: tags: - table-column-endpoint summary: Update a table column semantic mapping - operationId: update_4 + operationId: update_3 parameters: - name: id in: path @@ -933,19 +934,6 @@ paths: $ref: '#/components/schemas/ColumnSemanticsUpdateDto' required: true responses: - "405": - description: Update column semantics not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ColumnDto' - "404": - description: "Table, database, semantic concept, unit of measurement or\ - \ container could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' "403": description: Access to the database is forbidden content: @@ -958,6 +946,12 @@ paths: application/json: schema: $ref: '#/components/schemas/ColumnDto' + "404": + description: Table or database could not be found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' "400": description: Update semantic concept query is malformed or update unit of measurement query is malformed @@ -972,7 +966,7 @@ paths: tags: - access-endpoint summary: Modify access to some database - operationId: update_5 + operationId: update_4 parameters: - name: id in: path @@ -993,6 +987,12 @@ paths: $ref: '#/components/schemas/DatabaseModifyAccessDto' required: true responses: + "404": + description: Database or user not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' "403": description: Modify access not permitted when no access is granted in the first place @@ -1000,20 +1000,14 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Modify access succeeded "400": description: Modify access query or database connection is malformed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Database or user not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' + "202": + description: Modify access succeeded security: - bearerAuth: [] post: @@ -1041,14 +1035,6 @@ paths: $ref: '#/components/schemas/DatabaseGiveAccessDto' required: true responses: - "202": - description: Granting access succeeded - "400": - description: Granting access query or database connection is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' "405": description: Granting access not permitted content: @@ -1061,6 +1047,20 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Failed giving access + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "202": + description: Granting access succeeded + "400": + description: Granting access query or database connection is malformed + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] delete: @@ -1082,28 +1082,22 @@ paths: type: string format: uuid responses: - "403": - description: Revoke of access not permitted as no access was found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Revoke of access not permitted + "202": + description: Revoked access successfully + "400": + description: Modify access query or database connection is malformed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' "404": - description: User with access was not found + description: "User, database with access was not found" content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Revoked access successfully - "400": - description: Modify access query or database connection is malformed + "403": + description: Revoke of access not permitted as no access was found content: application/json: schema: @@ -1130,8 +1124,8 @@ paths: type: integer format: int64 responses: - "503": - description: Connection to the database failed + "501": + description: Image is not supported content: application/json: schema: @@ -1142,8 +1136,8 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Database, query or user could not be found" + "503": + description: Connection to the database failed content: application/json: schema: @@ -1154,8 +1148,8 @@ paths: application/json: schema: $ref: '#/components/schemas/QueryDto' - "501": - description: Image is not supported + "404": + description: "Database, query or user could not be found" content: application/json: schema: @@ -1193,14 +1187,14 @@ paths: $ref: '#/components/schemas/QueryPersistDto' required: true responses: - "409": - description: Query is already persisted + "405": + description: Persist query is not permitted content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "504": - description: Query store failed to persist query + "403": + description: Not allowed to persist query content: application/json: schema: @@ -1211,20 +1205,20 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Persist query successful + "400": + description: Image not supported content: application/json: schema: - $ref: '#/components/schemas/QueryDto' - "501": - description: Image is not supported + $ref: '#/components/schemas/ApiErrorDto' + "200": + description: Persist query successful content: application/json: schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Persist query is not permitted + $ref: '#/components/schemas/QueryDto' + "412": + description: Query is already persisted content: application/json: schema: @@ -1258,16 +1252,6 @@ paths: $ref: '#/components/schemas/SignupRequestDto' required: true responses: - "201": - description: Created user - content: - application/json: - schema: - $ref: '#/components/schemas/UserBriefDto' - "400": - description: Parameters are not well-formed (likely email) - content: - application/json: {} "409": description: User with username already exists content: @@ -1280,47 +1264,22 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "404": - description: default role not found + "201": + description: Created user content: application/json: schema: - $ref: '#/components/schemas/ApiErrorDto' - /api/semantic/unit: - get: - tags: - - semantics-endpoint - summary: List semantic units - operationId: findAllUnits - responses: - "200": - description: Find all semantic units + $ref: '#/components/schemas/UserBriefDto' + "404": + description: default role not found content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/UnitDto' - post: - tags: - - semantics-endpoint - summary: Save a semantic unit - operationId: saveUnit - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UnitSaveDto' - required: true - responses: - "202": - description: Saved a semantic unit + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Parameters are not well-formed (likely email) content: - application/json: - schema: - $ref: '#/components/schemas/UnitDto' - security: - - bearerAuth: [] + application/json: {} /api/semantic/ontology: get: tags: @@ -1349,46 +1308,11 @@ paths: required: true responses: "201": - description: Could not find user - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/semantic/concept: - get: - tags: - - semantics-endpoint - summary: List semantic concepts - operationId: findAllConcepts - responses: - "200": - description: Find all semantic concepts - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/ConceptDto' - post: - tags: - - semantics-endpoint - summary: Create or update a semantic concept - operationId: saveUnit_1 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ConceptSaveDto' - required: true - responses: - "202": - description: Saved a semantic concept + description: Registered ontology successfully content: application/json: schema: - $ref: '#/components/schemas/ConceptDto' + $ref: '#/components/schemas/OntologyDto' security: - bearerAuth: [] /api/maintenance/message: @@ -1451,14 +1375,14 @@ paths: $ref: '#/components/schemas/ImageCreateDto' required: true responses: - "409": - description: Image already exists + "400": + description: Image specification is invalid content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "404": - description: User could not be found + "409": + description: Image already exists content: application/json: schema: @@ -1469,18 +1393,6 @@ paths: application/json: schema: $ref: '#/components/schemas/ImageDto' - "502": - description: Failed to connect - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Image specification is invalid - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] /api/identifier: @@ -1508,6 +1420,12 @@ paths: schema: type: integer format: int64 + - name: tid + in: query + required: false + schema: + type: integer + format: int64 - name: type in: query required: false @@ -1516,6 +1434,7 @@ paths: enum: - database - subset + - table - view responses: "200": @@ -1538,32 +1457,26 @@ paths: $ref: '#/components/schemas/IdentifierSaveDto' required: true responses: - "406": - description: Creating identifier not allowed + "409": + description: Identifier for this resource already exists content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "201": - description: Created identifier - content: - application/json: - schema: - $ref: '#/components/schemas/IdentifierDto' "400": description: Identifier form contains invalid request data content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Insufficient access rights or authorities + "503": + description: DataCite system did not respond content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Identifier for this resource already exists + "406": + description: Creating identifier not allowed content: application/json: schema: @@ -1574,12 +1487,36 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' + "201": + description: Created identifier + content: + application/json: + schema: + $ref: '#/components/schemas/IdentifierDto' "405": description: Creating identifier not permitted content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' + "204": + description: Identifier could not be created + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: "Failed to find database, table or view" + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Insufficient access rights or authorities + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] /api/database: @@ -1603,6 +1540,12 @@ paths: type: array items: $ref: '#/components/schemas/DatabaseBriefDto' + "404": + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' post: tags: - database-endpoint @@ -1615,45 +1558,21 @@ paths: $ref: '#/components/schemas/DatabaseCreateDto' required: true responses: - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "501": - description: Container image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Container, user or database could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": + "403": description: Database create permission is missing or grant permissions at broker service failed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Database name already exist or query store could not be created - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Database create query is malformed + "503": + description: Connection to the database failed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "502": - description: Connection to the container failed + "409": + description: Query store could not be created content: application/json: schema: @@ -1664,9 +1583,14 @@ paths: application/json: schema: $ref: '#/components/schemas/DatabaseBriefDto' - "406": - description: Failed to create user at broker service or virtual host could - not be reached at broker service + "400": + description: Database create query is malformed or image is not supported + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: "Container, user or database could not be found" content: application/json: schema: @@ -1685,8 +1609,20 @@ paths: schema: type: string responses: + "404": + description: User not found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' "200": description: Count databases + content: + '*/*': + schema: + type: array + items: + $ref: '#/components/schemas/DatabaseDto' /api/database/{databaseId}/view: get: tags: @@ -1709,12 +1645,6 @@ paths: type: array items: $ref: '#/components/schemas/ViewBriefDto' - "405": - description: Find views is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' "404": description: Database or user could not be found content: @@ -1742,31 +1672,31 @@ paths: $ref: '#/components/schemas/ViewCreateDto' required: true responses: - "503": - description: Connection to the database failed + "423": + description: Create view resulted in an invalid query statement content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "201": - description: Create view successfully + "400": + description: Create view query is malformed content: application/json: schema: - $ref: '#/components/schemas/ViewBriefDto' - "401": + $ref: '#/components/schemas/ApiErrorDto' + "403": description: Credentials missing content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "423": - description: Create view resulted in an invalid query statement + "503": + description: Connection to the database failed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "403": + "401": description: Credentials missing content: application/json: @@ -1778,18 +1708,18 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Create view query is malformed + "405": + description: Create view is not permitted content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Create view is not permitted + "201": + description: Create view successfully content: application/json: schema: - $ref: '#/components/schemas/ApiErrorDto' + $ref: '#/components/schemas/ViewBriefDto' security: - bearerAuth: [] /api/database/{databaseId}/table: @@ -1820,7 +1750,7 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "405": + "403": description: List tables not permitted content: application/json: @@ -1847,14 +1777,8 @@ paths: $ref: '#/components/schemas/TableCreateDto' required: true responses: - "409": - description: Create table conflicts with existing table name - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "504": - description: Broker service failed to create queue + "403": + description: Create table not permitted content: application/json: schema: @@ -1871,14 +1795,8 @@ paths: application/json: schema: $ref: '#/components/schemas/TableBriefDto' - "405": - description: Create table not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "501": - description: Image is not supported + "409": + description: Create table conflicts with existing table name content: application/json: schema: @@ -1917,18 +1835,42 @@ paths: $ref: '#/components/schemas/ImportDto' required: true responses: - "200": - description: OK - security: - - bearerAuth: [] - /api/database/{databaseId}/query: - get: - tags: - - store-endpoint - summary: Find queries - operationId: findAll_4 - parameters: - - name: databaseId + "202": + description: Import table data successfully + "403": + description: Access to the database is forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Table or database could not be found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "422": + description: Could not import csv via sidecar + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Table data is malformed + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + security: + - bearerAuth: [] + /api/database/{databaseId}/query: + get: + tags: + - store-endpoint + summary: Find queries + operationId: findAll_4 + parameters: + - name: databaseId in: path required: true schema: @@ -1940,8 +1882,8 @@ paths: schema: type: boolean responses: - "503": - description: Connection to the database failed + "501": + description: Image is not supported content: application/json: schema: @@ -1952,21 +1894,21 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "423": - description: Selection of time-versioned query resulted in an invalid query - statement + "404": + description: "Database, container or user could not be found" content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Database, container or user could not be found" + "423": + description: Selection of time-versioned query resulted in an invalid query + statement content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "501": - description: Image is not supported + "503": + description: Connection to the database failed content: application/json: schema: @@ -2031,12 +1973,42 @@ paths: $ref: '#/components/schemas/ExecuteStatementDto' required: true responses: - "200": - description: OK + "409": + description: Could not store query in query store content: - '*/*': + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "417": + description: Could not parse columns + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Image is not supported + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Execute query not permitted + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "202": + description: Executed query + content: + application/json: schema: $ref: '#/components/schemas/QueryResultDto' + "404": + description: "Database, query or user could not be found" + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] /api/container: @@ -2073,20 +2045,14 @@ paths: $ref: '#/components/schemas/ContainerCreateRequestDto' required: true responses: - "409": - description: Container name already exists - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "502": - description: Failed to connect + "404": + description: Container image or user could not be found content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Container image or user could not be found + "409": + description: Container name already exists content: application/json: schema: @@ -2099,6 +2065,21 @@ paths: $ref: '#/components/schemas/ContainerBriefDto' security: - bearerAuth: [] + /api/semantic/unit: + get: + tags: + - semantics-endpoint + summary: List semantic units + operationId: findAllUnits + responses: + "200": + description: Find all semantic units + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/UnitDto' /api/semantic/ontology/{id}/entity: get: tags: @@ -2123,20 +2104,26 @@ paths: schema: type: string responses: - "417": - description: Generated query or uri is malformed + "422": + description: Ontology does not have rdf or sparql endpoint content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Filter params are invalid + "404": + description: Could not find ontology content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Could not find ontology + "417": + description: Generated query or uri is malformed + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Filter params are invalid content: application/json: schema: @@ -2177,6 +2164,12 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' + "422": + description: Ontology does not have rdf or sparql endpoint + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' "200": description: Suggested table semantics successfully content: @@ -2219,14 +2212,20 @@ paths: type: integer format: int64 responses: + "417": + description: Generated query is malformed + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' "404": description: Could not find the table column content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "417": - description: Generated query is malformed + "422": + description: Ontology does not have rdf or sparql endpoint content: application/json: schema: @@ -2241,6 +2240,21 @@ paths: $ref: '#/components/schemas/TableColumnEntityDto' security: - bearerAuth: [] + /api/semantic/concept: + get: + tags: + - semantics-endpoint + summary: List semantic concepts + operationId: findAllConcepts + responses: + "200": + description: Find all semantic concepts + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ConceptDto' /api/pid/{pid}: get: tags: @@ -2260,6 +2274,37 @@ paths: schema: type: string responses: + "400": + description: "Identifier could not be exported, the requested style is not\ + \ known" + content: + text/bibliography: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "422": + description: Failed to retrieve from database sidecar + content: + text/csv: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "503": + description: Identifier could not exported from database as it is not reachable + content: + text/csv: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Exported resource was not found + content: + text/csv: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "410": + description: Failed to retrieve from S3 endpoint + content: + text/csv: + schema: + $ref: '#/components/schemas/ApiErrorDto' "200": description: Found identifier successfully content: @@ -2273,25 +2318,11 @@ paths: text/bibliography; style=ieee: {} text/bibliography; style=bibtex: {} "404": - description: Identifier could not be exported from database as the resource - was not found - content: - text/csv: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "502": - description: Identifier could not exported from database as it is not reachable + description: Identifier could not be found content: text/csv: schema: $ref: '#/components/schemas/ApiErrorDto' - "400": - description: "Identifier could not be exported, the requested style is not\ - \ known" - content: - text/bibliography: - schema: - $ref: '#/components/schemas/ApiErrorDto' /api/oai: get: tags: @@ -2331,7 +2362,7 @@ paths: tags: - identifier-endpoint summary: Retrieve metadata from identifier - operationId: create_10 + operationId: retrieve parameters: - name: url in: query @@ -2359,25 +2390,32 @@ paths: type: integer format: int64 responses: - "404": - description: Database could not be found + "200": + description: Database found successfully + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseDto' + "503": + description: Connection to the broker service could not be established content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Database found successfully + "404": + description: Database or exchange could not be found content: application/json: schema: - $ref: '#/components/schemas/DatabaseDto' + $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] - delete: + /api/database/{id}/table/{tableId}/export: + get: tags: - - database-endpoint - summary: Delete some database - operationId: delete_4 + - export-endpoint + summary: Export table + operationId: export parameters: - name: id in: path @@ -2385,65 +2423,69 @@ paths: 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: - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "501": - description: Container image is not supported + "403": + description: Operation is not allowed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Database delete permission is missing or revoke permissions - at broker service failed + "503": + description: Database connection could not be established content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' "201": - description: Deleted a database + description: Created identifier content: application/json: schema: - $ref: '#/components/schemas/DatabaseBriefDto' - "406": - description: Failed to delete user at broker service or virtual host could - not be reached at broker service + $ref: '#/components/schemas/IdentifierDto' + "422": + description: Sidecar operation could not be completed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "502": - description: Connection to the container failed + "400": + description: Images is not supported or table/query is malformed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Database delete query is malformed + "404": + description: "Table, database or user was not found" content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Container or database could not be found + "410": + description: Blob storage operation could not be completed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] - /api/database/{id}/table/{tableId}/export: + /api/database/{id}/access: get: tags: - - export-endpoint - summary: Export table - operationId: export + - access-endpoint + summary: Check access to some database + operationId: find_5 parameters: - name: id in: path @@ -2451,44 +2493,15 @@ paths: 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: - "200": - description: OK + "403": + description: No access to this database content: - '*/*': + application/json: schema: - type: string - format: binary - security: - - bearerAuth: [] - /api/database/{id}/access: - get: - tags: - - access-endpoint - summary: Check access to some database - operationId: find_5 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "405": - description: Check access is not permitted + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Database not found content: application/json: schema: @@ -2499,12 +2512,6 @@ paths: application/json: schema: $ref: '#/components/schemas/DatabaseAccessDto' - "403": - description: No access to this database - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] /api/database/{databaseId}/view/{viewId}: @@ -2527,8 +2534,8 @@ paths: type: integer format: int64 responses: - "404": - description: "Database, view or user could not be found" + "403": + description: Find view is not permitted content: application/json: schema: @@ -2539,8 +2546,8 @@ paths: application/json: schema: $ref: '#/components/schemas/ViewDto' - "405": - description: Find view is not permitted + "404": + description: "Database, view or user could not be found" content: application/json: schema: @@ -2551,7 +2558,7 @@ paths: tags: - view-endpoint summary: Delete one view - operationId: delete_5 + operationId: delete_4 parameters: - name: databaseId in: path @@ -2566,46 +2573,40 @@ paths: type: integer format: int64 responses: - "200": - description: Delete view successfully - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Database, view or user could not be found" + "405": + description: Delete view is not permitted content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "401": - description: Credentials missing + "400": + description: Delete view query is malformed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Delete view is not permitted + "423": + description: Delete view resulted in an invalid query statement content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "423": - description: Delete view resulted in an invalid query statement + "200": + description: Delete view successfully + "503": + description: Connection to the database failed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Delete view query is malformed + "403": + description: Deletion not allowed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Credentials missing + "404": + description: "Database, view or user could not be found" content: application/json: schema: @@ -2644,68 +2645,26 @@ paths: type: integer format: int64 responses: - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Pagination not in valid range or find data query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Find data is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "401": - description: Credentials missing - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "417": - description: Parsing of resulting columns failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Database, view, container or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Credentials missing - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' "200": description: Find data successfully content: application/json: schema: $ref: '#/components/schemas/QueryResultDto' - "423": - description: Find data resulted in an invalid query statement + "403": + description: View data not allowed content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "501": - description: Image is not supported + "404": + description: "Database, view, container or user could not be found" content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "504": - description: Query store failed to query view data + "400": + description: Pagination not in valid range or find data query is malformed content: application/json: schema: @@ -2733,12 +2692,36 @@ paths: format: int64 responses: "200": - description: OK + description: Count data successfully content: - '*/*': + application/json: schema: type: integer format: int64 + "403": + description: Count data not allowed + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: "Database, view, container or user could not be found" + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Pagination not in valid range or find data query is malformed + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Could not count query data + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] /api/database/{databaseId}/table/{tableId}: @@ -2767,20 +2750,20 @@ paths: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Find table successfully - content: - application/json: - schema: - $ref: '#/components/schemas/TableDto' "404": description: "Table, database or container could not be found" content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Find table not permitted + "200": + description: Find table successfully + content: + application/json: + schema: + $ref: '#/components/schemas/TableDto' + "503": + description: Could not communicate with the broker service content: application/json: schema: @@ -2791,7 +2774,7 @@ paths: tags: - table-endpoint summary: Delete a table - operationId: delete_6 + operationId: delete_5 parameters: - name: databaseId in: path @@ -2806,44 +2789,22 @@ paths: type: integer format: int64 responses: - "400": - description: Delete table query resulted in an invalid query statement - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' "202": description: Delete table successfully - content: - application/json: - schema: - $ref: '#/components/schemas/TableDto' - "423": - description: Delete table resulted in an invalid state - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' "403": description: Access to the database is forbidden content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "501": - description: Image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Delete table not permitted + "404": + description: "Table, database or container could not be found" content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Table, database or container could not be found" + "400": + description: Delete table query resulted in an invalid query statement content: application/json: schema: @@ -2876,8 +2837,32 @@ paths: type: string format: date-time responses: - "200": - description: OK + "403": + description: Access to the database is forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Table data is malformed or image is not supported + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Table or database could not be found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "422": + description: Could not import csv via sidecar + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "202": + description: Get table data count successfully content: '*/*': schema: @@ -2911,11 +2896,47 @@ paths: type: string responses: "200": - description: OK + description: Executed query content: '*/*': schema: type: object + "422": + description: Sidecar failed to export + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Image is not supported + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Execute query not permitted + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "410": + description: Could not find in S3 storage + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "409": + description: Export of query failed + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "404": + description: Database or query could not be found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] /api/database/{databaseId}/query/{queryId}/data: @@ -2963,12 +2984,42 @@ paths: schema: type: string responses: - "200": - description: OK + "409": + description: Could not store query in query store content: - '*/*': + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "417": + description: Could not parse columns + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Image is not supported + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Execute query not permitted + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "202": + description: Executed query + content: + application/json: schema: $ref: '#/components/schemas/QueryResultDto' + "404": + description: Database or query could not be found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] /api/database/{databaseId}/query/{queryId}/data/count: @@ -2991,13 +3042,36 @@ paths: type: integer format: int64 responses: - "200": - description: OK + "417": + description: Could not parse columns content: - '*/*': + application/json: schema: - type: integer - format: int64 + $ref: '#/components/schemas/ApiErrorDto' + "400": + description: Image is not supported + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "403": + description: Execute query not permitted + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "202": + description: Executed query + content: + application/json: + schema: + $ref: '#/components/schemas/QueryResultDto' + "404": + description: Database or query could not be found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' security: - bearerAuth: [] /api/database/license: @@ -3029,12 +3103,6 @@ paths: type: integer format: int64 responses: - "502": - description: Connection to the container failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' "200": description: Found container content: @@ -3051,7 +3119,7 @@ paths: tags: - container-endpoint summary: Delete some container - operationId: delete_8 + operationId: delete_7 parameters: - name: id in: path @@ -3060,16 +3128,48 @@ paths: type: integer format: int64 responses: - "410": - description: Container is already removed + "404": + description: Container not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorDto' "202": description: Deleted container successfully - "409": - description: Container is still running + content: + '*/*': + schema: + type: object + security: + - bearerAuth: [] + /api/pid/{id}: + delete: + tags: + - persistence-endpoint + summary: Delete some identifier + operationId: delete_1 + parameters: + - name: id + in: path + required: true + schema: + type: integer + format: int64 + responses: + "404": + description: Identifier or database could not be found + content: + application/json: + schema: + $ref: '#/components/schemas/ApiErrorDto' + "202": + description: Deleted identifier + content: + '*/*': + schema: + type: object + "403": + description: Deleting identifier not permitted content: application/json: schema: @@ -3078,6 +3178,23 @@ paths: - bearerAuth: [] components: schemas: + TableHistoryDto: + required: + - event + - timestamp + - total + type: object + properties: + timestamp: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + event: + type: string + total: + type: integer + format: int64 + example: 1 ApiErrorDto: required: - code @@ -3164,23 +3281,6 @@ components: code: type: string example: error.service.code - TableHistoryDto: - required: - - event - - timestamp - - total - type: object - properties: - timestamp: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - event: - type: string - total: - type: integer - format: int64 - example: 1 QueryResultDto: required: - headers @@ -3235,7 +3335,6 @@ components: UserDto: required: - attributes - - email - id - username type: object @@ -3253,9 +3352,6 @@ components: example: Josiah Carberry attributes: $ref: '#/components/schemas/UserAttributesDto' - email: - type: string - example: jcarberry@brown.edu qualified_name: type: string example: Josiah Carberry — @jcarberry @@ -3295,6 +3391,9 @@ components: sparql_endpoint: type: string example: Ontology SPARQL endpoint + rdf_path: + type: string + example: rdf/om-2.0.rdf OntologyDto: required: - created @@ -3332,6 +3431,9 @@ components: sparql_endpoint: type: string example: https://query.wikidata.org/sparql + rdf_path: + type: string + example: rdf/om-2.0.rdf UserBriefDto: required: - id @@ -3361,106 +3463,619 @@ components: family_name: type: string example: Carberry - CreatorSaveDto: + BannerMessageUpdateDto: required: - - creator_name - - firstname - - lastname - - name_type + - message + - type type: object properties: - id: - type: integer - format: int64 - firstname: + type: type: string - example: Josiah - lastname: + enum: + - error + - warning + - info + message: type: string - example: Carberry - affiliation: + example: Maintenance starts on 8am on Monday + link: type: string - example: Wesleyan University - creator_name: + example: https://example.com + link_text: type: string - example: "Carberry, Josiah" - name_type: + example: More + display_start: type: string - example: Personal - enum: - - Personal - - Organizational - name_identifier: + format: date-time + example: 2021-03-12T15:26:21Z + display_end: type: string - example: 0000-0002-1825-0097 - name_identifier_scheme: + format: date-time + example: 2021-03-12T15:26:21Z + BannerMessageBriefDto: + required: + - message + - type + type: object + properties: + type: type: string - example: ORCID enum: - - ORCID - - ROR - - ISNI - - GRID - affiliation_identifier: + - error + - warning + - info + message: type: string - example: https://ror.org/04d836q62 - affiliation_identifier_scheme: + example: Maintenance starts on 8am on Monday + link: type: string - example: ROR - enum: - - ROR - - GRID - - ISNI - IdentifierFunderSaveDto: + example: https://example.com + link_text: + type: string + example: More + ImageChangeDto: required: - - funder_name + - dialect + - driver_class + - jdbc_method + - registry + type: object + properties: + registry: + type: string + example: docker.io/library + defaultPort: + maximum: 65535 + minimum: 1024 + type: integer + format: int32 + example: 5432 + dialect: + type: string + example: Postgres + driver_class: + type: string + example: org.postgresql.Driver + jdbc_method: + type: string + example: postgresql + ImageDateDto: + required: + - created_at + - database_format + - example + - has_time + - id + - unix_format type: object properties: id: type: integer format: int64 - funder_name: + example: type: string - example: European Commission - funder_identifier: + example: 30.01.2022 + database_format: type: string - example: http://doi.org/10.13039/501100000780 - funder_identifier_type: + example: '%d.%c.%Y' + unix_format: type: string - example: Crossref Funder ID + example: dd.MM.YYYY + has_time: + type: boolean + example: false + created_at: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + ImageDto: + required: + - default_port + - dialect + - driver_class + - id + - jdbc_method + - name + - registry + - version + type: object + properties: + id: + type: integer + format: int64 + registry: + type: string + example: docker.io/library + name: + type: string + example: mariadb + version: + type: string + example: "10.5" + dialect: + type: string + example: org.hibernate.dialect.MariaDBDialect + driver_class: + type: string + example: org.mariadb.jdbc.Driver + date_formats: + type: array + items: + $ref: '#/components/schemas/ImageDateDto' + jdbc_method: + type: string + example: mariadb + default_port: + type: integer + format: int32 + example: 3306 + DatabaseModifyVisibilityDto: + required: + - is_public + type: object + properties: + is_public: + type: boolean + example: true + ColumnBriefDto: + required: + - column_type + - database_id + - id + - internal_name + - name + - table_id + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: date + alias: + type: string + database_id: + type: integer + format: int64 + table_id: + type: integer + format: int64 + internal_name: + type: string + example: mdb_date + column_type: + type: string + example: date enum: - - Crossref Funder ID - - ROR - - GND - - ISNI - - Other - scheme_uri: + - char + - varchar + - binary + - varbinary + - tinyblob + - tinytext + - text + - blob + - mediumtext + - mediumblob + - longtext + - longblob + - enum + - set + - bit + - tinyint + - bool + - smallint + - mediumint + - int + - bigint + - float + - double + - decimal + - date + - datetime + - timestamp + - time + - year + ColumnDto: + required: + - auto_generated + - column_type + - database_id + - id + - internal_name + - is_null_allowed + - is_primary_key + - is_public + - name + - table_id + type: object + properties: + id: + type: integer + format: int64 + name: type: string - example: http://doi.org/ - award_number: + example: Date + alias: type: string - example: "824087" - award_title: + size: + type: integer + format: int64 + example: 255 + d: + type: integer + format: int64 + example: 0 + dataLength: + type: integer + format: int64 + example: 34300 + maxDataLength: + type: integer + format: int64 + example: 34300 + numRows: + type: integer + format: int64 + example: 32 + valMin: + type: number + example: 0 + valMax: + type: number + example: 100 + mean: + type: number + example: 45.4 + median: + type: number + example: 51 + stdDev: + type: number + example: 5.32 + concept: + $ref: '#/components/schemas/ConceptDto' + unit: + $ref: '#/components/schemas/UnitDto' + enums: + type: array + items: + type: string + sets: + type: array + items: + type: string + database_id: + type: integer + format: int64 + table_id: + type: integer + format: int64 + internal_name: type: string - example: EOSC-Life - IdentifierSaveDescriptionDto: + example: mdb_date + date_format: + $ref: '#/components/schemas/ImageDateDto' + auto_generated: + type: boolean + example: false + is_primary_key: + type: boolean + example: true + index_length: + type: integer + format: int64 + length: + type: integer + format: int64 + column_type: + type: string + example: string + enum: + - char + - varchar + - binary + - varbinary + - tinyblob + - tinytext + - text + - blob + - mediumtext + - mediumblob + - longtext + - longblob + - enum + - set + - bit + - tinyint + - bool + - smallint + - mediumint + - int + - bigint + - float + - double + - decimal + - date + - datetime + - timestamp + - time + - year + is_public: + type: boolean + example: true + is_null_allowed: + type: boolean + example: false + ConceptDto: + required: + - columns + - created + - id + - uri type: object properties: id: type: integer format: int64 + uri: + type: string + name: + type: string description: type: string - example: "Air quality reports at Stephansplatz, Vienna" - language: + created: type: string - example: en - enum: - - ab - - aa - - af - - ak - - sq + format: date-time + example: 2021-03-12T15:26:21Z + columns: + type: array + items: + $ref: '#/components/schemas/ColumnBriefDto' + ConstraintsDto: + type: object + properties: + uniques: + type: array + items: + $ref: '#/components/schemas/UniqueDto' + checks: + type: array + items: + type: string + foreign_keys: + type: array + items: + $ref: '#/components/schemas/ForeignKeyDto' + ContainerDto: + required: + - created + - host + - id + - internal_name + - name + - sidecar_host + - sidecar_port + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + host: + type: string + port: + type: integer + format: int32 + image: + $ref: '#/components/schemas/ImageDto' + created: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + internal_name: + type: string + example: data-db + sidecar_host: + type: string + sidecar_port: + type: integer + format: int32 + ui_host: + type: string + ui_port: + type: integer + format: int32 + CreatorDto: + required: + - creator_name + - id + type: object + properties: + id: + type: integer + format: int64 + firstname: + type: string + example: Josiah + lastname: + type: string + example: Carberry + affiliation: + type: string + example: Brown University + creator_name: + type: string + example: "Carberry, Josiah" + name_type: + type: string + example: Personal + enum: + - Personal + - Organizational + name_identifier: + type: string + example: 0000-0002-1825-0097 + name_identifier_scheme: + type: string + example: ORCID + enum: + - ORCID + - ROR + - ISNI + - GRID + name_identifier_scheme_uri: + type: string + example: https://orcid.org/ + affiliation_identifier: + type: string + example: https://ror.org/05gq02987 + affiliation_identifier_scheme: + type: string + example: ROR + enum: + - ROR + - GRID + - ISNI + affiliation_identifier_scheme_uri: + type: string + example: https://ror.org/ + DatabaseAccessDto: + required: + - created + - type + - user + type: object + properties: + user: + $ref: '#/components/schemas/UserDto' + type: + type: string + enum: + - read + - write_own + - write_all + created: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + DatabaseDto: + required: + - contact + - created + - creator + - exchange_name + - id + - internal_name + - name + - owner + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: Air Quality + description: + type: string + example: Air Quality + tables: + type: array + items: + $ref: '#/components/schemas/TableDto' + views: + type: array + items: + $ref: '#/components/schemas/ViewDto' + container: + $ref: '#/components/schemas/ContainerDto' + accesses: + type: array + items: + $ref: '#/components/schemas/DatabaseAccessDto' + identifiers: + type: array + items: + $ref: '#/components/schemas/IdentifierDto' + subsets: + type: array + items: + $ref: '#/components/schemas/IdentifierDto' + creator: + $ref: '#/components/schemas/UserDto' + contact: + $ref: '#/components/schemas/UserDto' + owner: + $ref: '#/components/schemas/UserDto' + created: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + exchange_name: + type: string + example: dbrepo + exchange_type: + type: string + example: topic + internal_name: + type: string + example: air_quality + is_public: + type: boolean + example: true + ForeignKeyDto: + type: object + properties: + columns: + type: array + items: + $ref: '#/components/schemas/ColumnDto' + referenced_table: + $ref: '#/components/schemas/TableBriefDto' + referenced_columns: + type: array + items: + $ref: '#/components/schemas/ColumnDto' + on_update: + type: string + enum: + - restrict + - cascade + - set_null + - no_action + - set_default + on_delete: + type: string + enum: + - restrict + - cascade + - set_null + - no_action + - set_default + IdentifierDescriptionDto: + required: + - id + type: object + properties: + id: + type: integer + format: int64 + description: + type: string + example: "Air quality reports at Stephansplatz, Vienna" + language: + type: string + example: en + enum: + - ab + - aa + - af + - ak + - sq - am - ar - an @@ -3650,44 +4265,55 @@ components: - TableOfContents - TechnicalInfo - Other - IdentifierSaveDto: + IdentifierDto: required: + - created - creators - - database_id + - execution + - id + - last_modified - publication_year + - query + - query_hash + - query_normalized + - result_hash + - result_number - type - - visibility type: object properties: + id: + type: integer + format: int64 type: type: string - example: database enum: - database - subset + - table - view titles: type: array items: - $ref: '#/components/schemas/IdentifierSaveTitleDto' + $ref: '#/components/schemas/IdentifierTitleDto' descriptions: type: array items: - $ref: '#/components/schemas/IdentifierSaveDescriptionDto' + $ref: '#/components/schemas/IdentifierDescriptionDto' funders: type: array items: - $ref: '#/components/schemas/IdentifierFunderSaveDto' - licenses: - type: array - items: - $ref: '#/components/schemas/LicenseDto' - visibility: + $ref: '#/components/schemas/IdentifierFunderDto' + query: type: string - example: everyone - enum: - - everyone - - self + example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ + \ = \"09:STEF\"" + execution: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + doi: + type: string + example: 10.1038/nphys1170 publisher: type: string example: TU Wien @@ -3878,10 +4504,18 @@ components: - yo - za - zu + licenses: + type: array + items: + $ref: '#/components/schemas/LicenseDto' creators: type: array items: - $ref: '#/components/schemas/CreatorSaveDto' + $ref: '#/components/schemas/CreatorDto' + created: + type: string + format: date-time + example: 2021-03-12T15:26:21Z database_id: type: integer format: int64 @@ -3889,9 +4523,33 @@ components: query_id: type: integer format: int64 + example: 1 + table_id: + type: integer + format: int64 + example: 1 view_id: type: integer format: int64 + example: 1 + query_normalized: + type: string + example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ + \ = \"09:STEF\"" + related_identifiers: + type: array + items: + $ref: '#/components/schemas/RelatedIdentifierDto' + query_hash: + type: string + description: query hash in sha512 + result_hash: + type: string + example: 34fe82cda2c53f13f8d90cfd7a3469e3a939ff311add50dce30d9136397bf8e5 + result_number: + type: integer + format: int64 + example: 1 publication_day: type: integer format: int32 @@ -3904,11 +4562,46 @@ components: type: integer format: int32 example: 2022 - related_identifiers: - type: array - items: - $ref: '#/components/schemas/RelatedIdentifierSaveDto' - IdentifierSaveTitleDto: + last_modified: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + IdentifierFunderDto: + required: + - funder_name + - id + type: object + properties: + id: + type: integer + format: int64 + funder_name: + type: string + example: European Commission + funder_identifier: + type: string + example: http://doi.org/10.13039/501100000780 + funder_identifier_type: + type: string + example: Crossref Funder ID + enum: + - Crossref Funder ID + - ROR + - GND + - ISNI + - Other + scheme_uri: + type: string + example: http://doi.org/ + award_number: + type: string + example: "824087" + award_title: + type: string + example: EOSC-Life + IdentifierTitleDto: + required: + - id type: object properties: id: @@ -4107,7 +4800,6 @@ components: - zu type: type: string - example: Subtitle enum: - AlternativeTitle - Subtitle @@ -4125,11 +4817,16 @@ components: uri: type: string example: https://opensource.org/licenses/MIT - RelatedIdentifierSaveDto: + RelatedIdentifierDto: required: + - created + - id - value type: object properties: + id: + type: integer + format: int64 value: type: string example: 10.70124/dc4zh-9ce78 @@ -4193,14 +4890,23 @@ components: - Requires - IsObsoletedBy - Obsoletes - ColumnBriefDto: + created: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + last_modified: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + TableBriefDto: required: - - column_type - - database_id + - columns + - description - id - internal_name + - is_versioned - name - - table_id + - owner type: object properties: id: @@ -4208,296 +4914,477 @@ components: format: int64 name: type: string - example: date - alias: + example: Air Quality + description: type: string - database_id: - type: integer - format: int64 - table_id: - type: integer - format: int64 + example: Air Quality in Austria + owner: + $ref: '#/components/schemas/UserBriefDto' + columns: + type: array + items: + $ref: '#/components/schemas/ColumnBriefDto' internal_name: type: string - example: mdb_date - column_type: - type: string - example: date - enum: - - char - - varchar - - binary - - varbinary - - tinyblob - - tinytext - - text - - blob - - mediumtext - - mediumblob - - longtext - - longblob - - enum - - set - - bit - - tinyint - - bool - - smallint - - mediumint - - int - - bigint - - float - - double - - decimal - - date - - datetime - - timestamp - - time - - year - ContainerDto: + example: air_quality + is_versioned: + type: boolean + example: true + TableDto: required: + - columns - created - - host + - created_by + - creator - id - internal_name + - is_public + - is_versioned - name + - owner + - queue_name + - routing_key + - tdbid type: object properties: id: type: integer format: int64 + tdbid: + type: integer + format: int64 name: type: string example: Air Quality - host: + identifiers: + type: array + items: + $ref: '#/components/schemas/IdentifierDto' + creator: + $ref: '#/components/schemas/UserDto' + owner: + $ref: '#/components/schemas/UserDto' + description: type: string - port: - type: integer - format: int32 - image: - $ref: '#/components/schemas/ImageBriefDto' + example: Air Quality in Austria created: type: string format: date-time example: 2021-03-12T15:26:21Z + columns: + type: array + items: + $ref: '#/components/schemas/ColumnDto' + constraints: + $ref: '#/components/schemas/ConstraintsDto' internal_name: type: string - example: data-db - CreatorBriefDto: - required: - - creator_name - type: object - properties: - affiliation: + example: air_quality + is_versioned: + type: boolean + example: true + created_by: type: string - example: Wesleyan University - name_identifier: + format: uuid + queue_name: type: string - example: https://orcid.org/0000-0002-1825-0097 - name_type: + example: air_quality + queue_type: type: string - example: Personal - enum: - - Personal - - Organizational - creator_name: + example: quorum + routing_key: type: string - example: "Carberry, Josiah" - CreatorDto: + example: dbrepo.database.air_quality + is_public: + type: boolean + example: true + UniqueDto: required: - - creator_name - - id + - columns + - table + - uid type: object properties: - id: + uid: type: integer format: int64 - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Brown University - creator_name: - type: string - example: "Carberry, Josiah" - name_type: - type: string - example: Personal - enum: - - Personal - - Organizational - name_identifier: - type: string - example: 0000-0002-1825-0097 - name_identifier_scheme: - type: string - example: ORCID - enum: - - ORCID - - ROR - - ISNI - - GRID - name_identifier_scheme_uri: - type: string - example: https://orcid.org/ - affiliation_identifier: - type: string - example: https://ror.org/05gq02987 - affiliation_identifier_scheme: - type: string - example: ROR - enum: - - ROR - - GRID - - ISNI - affiliation_identifier_scheme_uri: - type: string - example: https://ror.org/ - DatabaseAccessDto: + table: + $ref: '#/components/schemas/TableDto' + columns: + type: array + items: + $ref: '#/components/schemas/ColumnDto' + UnitDto: required: + - columns - created - - type - - user + - id + - uri type: object properties: - user: - $ref: '#/components/schemas/UserDto' - type: + id: + type: integer + format: int64 + uri: + type: string + name: + type: string + description: type: string - enum: - - read - - write_own - - write_all created: type: string format: date-time example: 2021-03-12T15:26:21Z - DatabaseDto: + columns: + type: array + items: + $ref: '#/components/schemas/ColumnBriefDto' + ViewDto: required: + - columns - created - creator - - exchange_name + - database + - database_id - id - internal_name - name - - owner + - query + - query_hash type: object properties: id: type: integer format: int64 + database: + $ref: '#/components/schemas/DatabaseDto' name: type: string example: Air Quality - identifier: - $ref: '#/components/schemas/IdentifierDto' - description: - type: string - example: Air Quality - tables: - type: array - items: - $ref: '#/components/schemas/TableBriefDto' - views: - type: array - items: - $ref: '#/components/schemas/ViewBriefDto' - image: - $ref: '#/components/schemas/ImageDto' - container: - $ref: '#/components/schemas/ContainerDto' - accesses: + identifiers: type: array items: - $ref: '#/components/schemas/DatabaseAccessDto' - creator: - $ref: '#/components/schemas/UserBriefDto' - owner: - $ref: '#/components/schemas/UserBriefDto' + $ref: '#/components/schemas/IdentifierDto' + query: + type: string + example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC created: type: string format: date-time example: 2021-03-12T15:26:21Z - exchange_name: - type: string - example: dbrepo - exchange_type: - type: string - example: topic + creator: + $ref: '#/components/schemas/UserDto' + columns: + type: array + items: + $ref: '#/components/schemas/ColumnDto' + database_id: + type: integer + format: int64 internal_name: type: string example: air_quality is_public: type: boolean example: true - IdentifierBriefDto: + initial_view: + type: boolean + description: True if it is the default view for the database + example: true + query_hash: + type: string + example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 + last_modified: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + DatabaseTransferDto: + required: + - username + type: object + properties: + username: + type: string + ColumnSemanticsUpdateDto: + type: object + properties: + concept_uri: + type: string + unit_uri: + type: string + DatabaseModifyAccessDto: required: - - creators - - id - - publication_year - type type: object + properties: + type: + type: string + enum: + - read + - write_own + - write_all + QueryPersistDto: + required: + - persist + type: object + properties: + persist: + type: boolean + example: true + QueryDto: + required: + - created + - creator + - database_id + - execution + - id + - is_persisted + - last_modified + - query + - query_hash + type: object properties: id: type: integer format: int64 + creator: + $ref: '#/components/schemas/UserDto' + execution: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + query: + type: string + example: SELECT `id` FROM `air_quality` type: type: string + example: query enum: - - database - - subset + - query - view - titles: + identifiers: type: array items: - $ref: '#/components/schemas/IdentifierTitleDto' - doi: - type: string - example: 10.1038/nphys1170 - publisher: + $ref: '#/components/schemas/IdentifierDto' + created: type: string - example: TU Wien - creators: - type: array - items: - $ref: '#/components/schemas/CreatorBriefDto' + format: date-time + example: 2021-03-12T15:26:21Z database_id: type: integer format: int64 - example: 1 - query_id: + query_normalized: + type: string + example: SELECT `id` FROM `air_quality` + query_hash: + type: string + example: 17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76 + is_persisted: + type: boolean + example: true + result_hash: + type: string + example: 17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76 + result_number: type: integer format: int64 example: 1 - publication_year: - type: integer - format: int32 - example: 2022 - IdentifierDescriptionDto: + last_modified: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + SignupRequestDto: required: - - id + - email + - password + - username type: object properties: - id: - type: integer - format: int64 - description: + username: + pattern: "^[a-z0-9]{3,}$" type: string - example: "Air quality reports at Stephansplatz, Vienna" - language: + example: user + email: type: string - example: en - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar + example: user@example.com + password: + type: string + OntologyCreateDto: + required: + - prefix + - uri + type: object + properties: + uri: + type: string + example: Ontology URI + prefix: + type: string + example: Ontology prefix + sparql_endpoint: + type: string + example: Ontology SPARQL endpoint + BannerMessageCreateDto: + required: + - message + - type + type: object + properties: + type: + type: string + enum: + - error + - warning + - info + message: + type: string + example: Maintenance starts on 8am on Monday + link: + type: string + example: https://example.com + link_text: + type: string + example: More + display_start: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + display_end: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + ImageCreateDto: + required: + - default_port + - dialect + - driver_class + - jdbc_method + - name + - registry + - version + type: object + properties: + registry: + type: string + example: docker.io/library + name: + type: string + example: mariadb + version: + type: string + dialect: + type: string + driver_class: + type: string + jdbc_method: + type: string + default_port: + maximum: 65535 + minimum: 1024 + type: integer + format: int32 + CreatorSaveDto: + required: + - creator_name + - firstname + - lastname + - name_type + type: object + properties: + id: + type: integer + format: int64 + firstname: + type: string + example: Josiah + lastname: + type: string + example: Carberry + affiliation: + type: string + example: Wesleyan University + creator_name: + type: string + example: "Carberry, Josiah" + name_type: + type: string + example: Personal + enum: + - Personal + - Organizational + name_identifier: + type: string + example: 0000-0002-1825-0097 + name_identifier_scheme: + type: string + example: ORCID + enum: + - ORCID + - ROR + - ISNI + - GRID + affiliation_identifier: + type: string + example: https://ror.org/04d836q62 + affiliation_identifier_scheme: + type: string + example: ROR + enum: + - ROR + - GRID + - ISNI + IdentifierFunderSaveDto: + required: + - funder_name + type: object + properties: + id: + type: integer + format: int64 + funder_name: + type: string + example: European Commission + funder_identifier: + type: string + example: http://doi.org/10.13039/501100000780 + funder_identifier_type: + type: string + example: Crossref Funder ID + enum: + - Crossref Funder ID + - ROR + - GND + - ISNI + - Other + scheme_uri: + type: string + example: http://doi.org/ + award_number: + type: string + example: "824087" + award_title: + type: string + example: EOSC-Life + IdentifierSaveDescriptionDto: + type: object + properties: + id: + type: integer + format: int64 + description: + type: string + example: "Air quality reports at Stephansplatz, Vienna" + language: + type: string + example: en + enum: + - ab + - aa + - af + - ak + - sq + - am + - ar - an - hy - as @@ -4685,64 +5572,38 @@ components: - TableOfContents - TechnicalInfo - Other - IdentifierDto: + IdentifierSaveDto: required: - - created - creators - - database - - execution - - id - - last_modified + - database_id - publication_year - - query - - query_hash - - query_normalized - - result_hash - - result_number - type - - visibility type: object properties: - id: - type: integer - format: int64 type: type: string + example: database enum: - database - subset + - table - view titles: type: array items: - $ref: '#/components/schemas/IdentifierTitleDto' + $ref: '#/components/schemas/IdentifierSaveTitleDto' descriptions: type: array items: - $ref: '#/components/schemas/IdentifierDescriptionDto' + $ref: '#/components/schemas/IdentifierSaveDescriptionDto' funders: type: array items: - $ref: '#/components/schemas/IdentifierFunderDto' - query: - type: string - example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ - \ = \"09:STEF\"" - database: - $ref: '#/components/schemas/DatabaseDto' - execution: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - visibility: - type: string - example: everyone - enum: - - everyone - - self - doi: - type: string - example: 10.1038/nphys1170 + $ref: '#/components/schemas/IdentifierFunderSaveDto' + licenses: + type: array + items: + $ref: '#/components/schemas/LicenseDto' publisher: type: string example: TU Wien @@ -4933,18 +5794,10 @@ components: - yo - za - zu - licenses: - type: array - items: - $ref: '#/components/schemas/LicenseDto' creators: type: array items: - $ref: '#/components/schemas/CreatorDto' - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z + $ref: '#/components/schemas/CreatorSaveDto' database_id: type: integer format: int64 @@ -4952,29 +5805,12 @@ components: query_id: type: integer format: int64 - example: 1 view_id: type: integer format: int64 - example: 1 - query_normalized: - type: string - example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ - \ = \"09:STEF\"" - related_identifiers: - type: array - items: - $ref: '#/components/schemas/RelatedIdentifierDto' - query_hash: - type: string - description: query hash in sha512 - result_hash: - type: string - example: 34fe82cda2c53f13f8d90cfd7a3469e3a939ff311add50dce30d9136397bf8e5 - result_number: + table_id: type: integer format: int64 - example: 1 publication_day: type: integer format: int32 @@ -4987,46 +5823,11 @@ components: type: integer format: int32 example: 2022 - last_modified: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - IdentifierFunderDto: - required: - - funder_name - - id - type: object - properties: - id: - type: integer - format: int64 - funder_name: - type: string - example: European Commission - funder_identifier: - type: string - example: http://doi.org/10.13039/501100000780 - funder_identifier_type: - type: string - example: Crossref Funder ID - enum: - - Crossref Funder ID - - ROR - - GND - - ISNI - - Other - scheme_uri: - type: string - example: http://doi.org/ - award_number: - type: string - example: "824087" - award_title: - type: string - example: EOSC-Life - IdentifierTitleDto: - required: - - id + related_identifiers: + type: array + items: + $ref: '#/components/schemas/RelatedIdentifierSaveDto' + IdentifierSaveTitleDto: type: object properties: id: @@ -5225,841 +6026,80 @@ components: - zu type: type: string + example: Subtitle enum: - - AlternativeTitle - - Subtitle - - TranslatedTitle - - Other - ImageBriefDto: - required: - - id - - name - - version - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: mariadb - version: - type: string - example: "10.5" - ImageDateDto: - required: - - created_at - - database_format - - example - - has_time - - id - - unix_format - type: object - properties: - id: - type: integer - format: int64 - example: - type: string - example: 30.01.2022 - database_format: - type: string - example: '%d.%c.%Y' - unix_format: - type: string - example: dd.MM.YYYY - has_time: - type: boolean - example: false - created_at: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - ImageDto: - required: - - default_port - - dialect - - driver_class - - id - - jdbc_method - - name - - registry - - version - type: object - properties: - id: - type: integer - format: int64 - registry: - type: string - example: docker.io/library - name: - type: string - example: mariadb - version: - type: string - example: "10.5" - dialect: - type: string - example: org.hibernate.dialect.MariaDBDialect - driver_class: - type: string - example: org.mariadb.jdbc.Driver - date_formats: - type: array - items: - $ref: '#/components/schemas/ImageDateDto' - jdbc_method: - type: string - example: mariadb - default_port: - type: integer - format: int32 - example: 3306 - RelatedIdentifierDto: - required: - - created - - id - - value - type: object - properties: - id: - type: integer - format: int64 - value: - type: string - example: 10.70124/dc4zh-9ce78 - type: - type: string - example: DOI - enum: - - DOI - - URL - - URN - - ARK - - arXiv - - bibcode - - EAN13 - - EISSN - - Handle - - IGSN - - ISBN - - ISTC - - LISSN - - LSID - - PMID - - PURL - - UPC - - w3id - relation: - type: string - example: Cites - enum: - - IsCitedBy - - Cites - - IsSupplementTo - - IsSupplementedBy - - IsContinuedBy - - Continues - - IsDescribedBy - - Describes - - HasMetadata - - IsMetadataFor - - HasVersion - - IsVersionOf - - IsNewVersionOf - - IsPreviousVersionOf - - IsPartOf - - HasPart - - IsPublishedIn - - IsReferencedBy - - References - - IsDocumentedBy - - Documents - - IsCompiledBy - - Compiles - - IsVariantFormOf - - IsOriginalFormOf - - IsIdenticalTo - - IsReviewedBy - - Reviews - - IsDerivedFrom - - IsSourceOf - - IsRequiredBy - - Requires - - IsObsoletedBy - - Obsoletes - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - last_modified: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - TableBriefDto: - required: - - columns - - description - - id - - internal_name - - is_versioned - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - description: - type: string - example: Air Quality in Austria - owner: - $ref: '#/components/schemas/UserBriefDto' - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - internal_name: - type: string - example: air_quality - is_versioned: - type: boolean - example: true - ViewBriefDto: - required: - - created - - creator - - id - - internal_name - - name - - query - - query_hash - - vdbid - type: object - properties: - id: - type: integer - format: int64 - vdbid: - type: integer - format: int64 - name: - type: string - example: Air Quality - identifier: - $ref: '#/components/schemas/IdentifierBriefDto' - query: - type: string - example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - creator: - $ref: '#/components/schemas/UserDto' - internal_name: - type: string - example: air_quality - is_public: - type: boolean - example: true - initial_view: - type: boolean - description: True if it is the default view for the database - example: true - query_hash: - type: string - example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 - last_modified: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - BannerMessageUpdateDto: - required: - - message - - type - type: object - properties: - type: - type: string - enum: - - error - - warning - - info - message: - type: string - example: Maintenance starts on 8am on Monday - link: - type: string - example: https://example.com - link_text: - type: string - example: More - display_start: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - display_end: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - BannerMessageNotFoundException: - type: object - properties: - cause: - type: object - properties: - stackTrace: - type: array - items: - type: object - properties: - classLoaderName: - type: string - moduleName: - type: string - moduleVersion: - type: string - methodName: - type: string - fileName: - type: string - lineNumber: - type: integer - format: int32 - nativeMethod: - type: boolean - className: - type: string - message: - type: string - suppressed: - type: array - items: - type: object - properties: - stackTrace: - type: array - items: - type: object - properties: - classLoaderName: - type: string - moduleName: - type: string - moduleVersion: - type: string - methodName: - type: string - fileName: - type: string - lineNumber: - type: integer - format: int32 - nativeMethod: - type: boolean - className: - type: string - message: - type: string - localizedMessage: - type: string - localizedMessage: - type: string - stackTrace: - type: array - items: - type: object - properties: - classLoaderName: - type: string - moduleName: - type: string - moduleVersion: - type: string - methodName: - type: string - fileName: - type: string - lineNumber: - type: integer - format: int32 - nativeMethod: - type: boolean - className: - type: string - message: - type: string - suppressed: - type: array - items: - type: object - properties: - stackTrace: - type: array - items: - type: object - properties: - classLoaderName: - type: string - moduleName: - type: string - moduleVersion: - type: string - methodName: - type: string - fileName: - type: string - lineNumber: - type: integer - format: int32 - nativeMethod: - type: boolean - className: - type: string - message: - type: string - localizedMessage: - type: string - localizedMessage: - type: string - BannerMessageBriefDto: - required: - - message - - type - type: object - properties: - type: - type: string - enum: - - error - - warning - - info - message: - type: string - example: Maintenance starts on 8am on Monday - link: - type: string - example: https://example.com - link_text: - type: string - example: More - ImageChangeDto: - required: - - dialect - - driver_class - - jdbc_method - - registry - type: object - properties: - registry: - type: string - example: docker.io/library - defaultPort: - maximum: 65535 - minimum: 1024 - type: integer - format: int32 - example: 5432 - dialect: - type: string - example: Postgres - driver_class: - type: string - example: org.postgresql.Driver - jdbc_method: - type: string - example: postgresql - DatabaseModifyVisibilityDto: - required: - - is_public - type: object - properties: - is_public: - type: boolean - example: true - DatabaseTransferDto: - required: - - username - type: object - properties: - username: - type: string - ColumnSemanticsUpdateDto: - type: object - properties: - concept_uri: - type: string - unit_uri: - type: string - ColumnDto: - required: - - auto_generated - - column_type - - database_id - - id - - internal_name - - is_null_allowed - - is_primary_key - - is_public - - name - - table_id - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Date - alias: - type: string - size: - type: integer - format: int32 - example: 255 - d: - type: integer - format: int32 - example: 0 - concept: - $ref: '#/components/schemas/ConceptDto' - unit: - $ref: '#/components/schemas/UnitDto' - enums: - type: array - items: - type: string - sets: - type: array - items: - type: string - database_id: - type: integer - format: int64 - table_id: - type: integer - format: int64 - internal_name: - type: string - example: mdb_date - date_format: - $ref: '#/components/schemas/ImageDateDto' - auto_generated: - type: boolean - example: false - is_primary_key: - type: boolean - example: true - index_length: - type: integer - format: int32 - column_type: - type: string - example: string - enum: - - char - - varchar - - binary - - varbinary - - tinyblob - - tinytext - - text - - blob - - mediumtext - - mediumblob - - longtext - - longblob - - enum - - set - - bit - - tinyint - - bool - - smallint - - mediumint - - int - - bigint - - float - - double - - decimal - - date - - datetime - - timestamp - - time - - year - is_public: - type: boolean - example: true - is_null_allowed: - type: boolean - example: false - ConceptDto: - required: - - columns - - created - - id - - uri - type: object - properties: - id: - type: integer - format: int64 - uri: - type: string - name: - type: string - description: - type: string - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - UnitDto: - required: - - columns - - created - - id - - uri - type: object - properties: - id: - type: integer - format: int64 - uri: - type: string - name: - type: string - description: - type: string - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - DatabaseModifyAccessDto: - required: - - type - type: object - properties: - type: - type: string - enum: - - read - - write_own - - write_all - TableCsvUpdateDto: - required: - - data - - keys - type: object - properties: - data: - type: object - additionalProperties: - type: object - keys: - type: object - additionalProperties: - type: object - QueryPersistDto: - required: - - persist - type: object - properties: - persist: - type: boolean - example: true - QueryDto: - required: - - cid - - created - - creator - - dbid - - execution - - id - - is_persisted - - last_modified - - query - - query_hash - type: object - properties: - id: - type: integer - format: int64 - cid: - type: integer - format: int64 - dbid: - type: integer - format: int64 - creator: - $ref: '#/components/schemas/UserDto' - execution: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - query: - type: string - example: SELECT `id` FROM `air_quality` - type: - type: string - example: query - enum: - - query - - view - identifier: - $ref: '#/components/schemas/IdentifierDto' - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - query_normalized: - type: string - example: SELECT `id` FROM `air_quality` - query_hash: - type: string - example: 17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76 - is_persisted: - type: boolean - example: true - result_hash: - type: string - example: 17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76 - result_number: - type: integer - format: int64 - example: 1 - last_modified: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - SignupRequestDto: - required: - - email - - password - - username - type: object - properties: - username: - pattern: "^[a-z0-9]{3,}$" - type: string - example: user - email: - type: string - example: user@example.com - password: - type: string - UnitSaveDto: - required: - - description - - name - - uri - type: object - properties: - uri: - type: string - name: - type: string - description: - type: string - OntologyCreateDto: - required: - - prefix - - uri - type: object - properties: - uri: - type: string - example: Ontology URI - prefix: - type: string - example: Ontology prefix - sparql_endpoint: - type: string - example: Ontology SPARQL endpoint - ConceptSaveDto: - required: - - description - - name - - uri - type: object - properties: - uri: - type: string - name: - type: string - description: - type: string - BannerMessageCreateDto: - required: - - message - - type - type: object - properties: - type: - type: string - enum: - - error - - warning - - info - message: - type: string - example: Maintenance starts on 8am on Monday - link: - type: string - example: https://example.com - link_text: - type: string - example: More - display_start: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - display_end: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - ImageCreateDto: - required: - - default_port - - dialect - - driver_class - - jdbc_method - - name - - registry - - version + - AlternativeTitle + - Subtitle + - TranslatedTitle + - Other + RelatedIdentifierSaveDto: + required: + - value type: object properties: - registry: - type: string - example: docker.io/library - name: - type: string - example: mariadb - version: - type: string - dialect: + value: type: string - driver_class: + example: 10.70124/dc4zh-9ce78 + type: type: string - jdbc_method: + example: DOI + enum: + - DOI + - URL + - URN + - ARK + - arXiv + - bibcode + - EAN13 + - EISSN + - Handle + - IGSN + - ISBN + - ISTC + - LISSN + - LSID + - PMID + - PURL + - UPC + - w3id + relation: type: string - default_port: - maximum: 65535 - minimum: 1024 - type: integer - format: int32 + example: Cites + enum: + - IsCitedBy + - Cites + - IsSupplementTo + - IsSupplementedBy + - IsContinuedBy + - Continues + - IsDescribedBy + - Describes + - HasMetadata + - IsMetadataFor + - HasVersion + - IsVersionOf + - IsNewVersionOf + - IsPreviousVersionOf + - IsPartOf + - HasPart + - IsPublishedIn + - IsReferencedBy + - References + - IsDocumentedBy + - Documents + - IsCompiledBy + - Compiles + - IsVariantFormOf + - IsOriginalFormOf + - IsIdenticalTo + - IsReviewedBy + - Reviews + - IsDerivedFrom + - IsSourceOf + - IsRequiredBy + - Requires + - IsObsoletedBy + - Obsoletes DatabaseCreateDto: required: - container_id @@ -6082,6 +6122,7 @@ components: - created - hash - id + - image - internal_name - name - running @@ -6096,6 +6137,8 @@ components: name: type: string example: Air Quality + image: + $ref: '#/components/schemas/ImageBriefDto' running: type: boolean example: true @@ -6106,11 +6149,32 @@ components: internal_name: type: string example: air-quality + CreatorBriefDto: + required: + - creator_name + type: object + properties: + affiliation: + type: string + example: Wesleyan University + name_identifier: + type: string + example: https://orcid.org/0000-0002-1825-0097 + name_type: + type: string + example: Personal + enum: + - Personal + - Organizational + creator_name: + type: string + example: "Carberry, Josiah" DatabaseBriefDto: required: - created + - creator + - exchange_name - id - - image - internal_name - name - owner @@ -6122,32 +6186,160 @@ components: name: type: string example: Air Quality - description: - type: string - example: Air Quality in Austria identifier: - $ref: '#/components/schemas/IdentifierBriefDto' - engine: + $ref: '#/components/schemas/IdentifierDto' + description: type: string - example: mariadb:10.5 - owner: - $ref: '#/components/schemas/UserBriefDto' + example: Air Quality + tables: + type: array + items: + $ref: '#/components/schemas/TableBriefDto' + views: + type: array + items: + $ref: '#/components/schemas/ViewBriefDto' + image: + $ref: '#/components/schemas/ImageDto' container: $ref: '#/components/schemas/ContainerBriefDto' + accesses: + type: array + items: + $ref: '#/components/schemas/DatabaseAccessDto' creator: $ref: '#/components/schemas/UserBriefDto' + owner: + $ref: '#/components/schemas/UserBriefDto' created: type: string format: date-time example: 2021-03-12T15:26:21Z - image: - $ref: '#/components/schemas/ImageBriefDto' + exchange_name: + type: string + example: dbrepo + exchange_type: + type: string + example: topic + internal_name: + type: string + example: air_quality + is_public: + type: boolean + example: true + IdentifierBriefDto: + required: + - creators + - id + - publication_year + - type + type: object + properties: + id: + type: integer + format: int64 + type: + type: string + enum: + - database + - subset + - table + - view + titles: + type: array + items: + $ref: '#/components/schemas/IdentifierTitleDto' + doi: + type: string + example: 10.1038/nphys1170 + publisher: + type: string + example: TU Wien + creators: + type: array + items: + $ref: '#/components/schemas/CreatorBriefDto' + database_id: + type: integer + format: int64 + example: 1 + query_id: + type: integer + format: int64 + example: 1 + publication_year: + type: integer + format: int32 + example: 2022 + ImageBriefDto: + required: + - id + - jdbc_method + - name + - version + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + example: mariadb + version: + type: string + example: "10.5" + jdbc_method: + type: string + example: mariadb + ViewBriefDto: + required: + - created + - creator + - id + - internal_name + - name + - query + - query_hash + - vdbid + type: object + properties: + id: + type: integer + format: int64 + vdbid: + type: integer + format: int64 + name: + type: string + example: Air Quality + identifier: + $ref: '#/components/schemas/IdentifierBriefDto' + query: + type: string + example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC + created: + type: string + format: date-time + example: 2021-03-12T15:26:21Z + creator: + $ref: '#/components/schemas/UserDto' internal_name: type: string example: air_quality is_public: type: boolean example: true + initial_view: + type: boolean + description: True if it is the default view for the database + example: true + query_hash: + type: string + example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 + last_modified: + type: string + format: date-time + example: 2021-03-12T15:26:21Z DatabaseGiveAccessDto: required: - type @@ -6221,11 +6413,11 @@ components: - year size: type: integer - format: int32 + format: int64 example: 255 d: type: integer - format: int32 + format: int64 example: 0 dfid: type: integer @@ -6248,7 +6440,7 @@ components: example: false index_length: type: integer - format: int32 + format: int64 null_allowed: type: boolean example: true @@ -6333,7 +6525,7 @@ components: properties: location: type: string - example: /tmp/file.csv + example: file.csv separator: type: string example: "," @@ -6517,14 +6709,23 @@ components: type: string internalName: type: string - imageId: - type: integer - format: int64 host: type: string port: type: integer format: int32 + sidecarHost: + type: string + sidecarPort: + type: integer + format: int32 + uiHost: + type: string + uiPort: + type: integer + format: int32 + uiAdditionalFlags: + type: string databases: type: array items: @@ -6611,8 +6812,8 @@ components: nameType: type: string enum: - - Personal - - Organizational + - PERSONAL + - ORGANIZATIONAL nameIdentifier: type: string nameIdentifierScheme: @@ -6638,12 +6839,12 @@ components: type: string identifier: $ref: '#/components/schemas/Identifier' + ieeeName: + type: string apaName: type: string bibtexName: type: string - ieeeName: - type: string Database: type: object properties: @@ -6678,8 +6879,14 @@ components: format: uuid contact: $ref: '#/components/schemas/User' - identifier: - $ref: '#/components/schemas/Identifier' + identifiers: + type: array + items: + $ref: '#/components/schemas/Identifier' + subsets: + type: array + items: + $ref: '#/components/schemas/Identifier' tables: type: array items: @@ -6688,6 +6895,10 @@ components: type: array items: $ref: '#/components/schemas/View' + accesses: + type: array + items: + $ref: '#/components/schemas/DatabaseAccess' isPublic: type: boolean created: @@ -6774,6 +6985,9 @@ components: queryId: type: integer format: int64 + tableId: + type: integer + format: int64 viewId: type: integer format: int64 @@ -6991,6 +7205,7 @@ components: enum: - DATABASE - SUBSET + - TABLE - VIEW query: type: string @@ -7015,11 +7230,6 @@ components: publicationDay: type: integer format: int32 - visibility: - type: string - enum: - - VisibilityType.EVERYONE - - VisibilityType.SELF database: $ref: '#/components/schemas/Database' relatedIdentifiers: @@ -7583,10 +7793,26 @@ components: type: array items: $ref: '#/components/schemas/TableColumn' + identifiers: + type: array + items: + $ref: '#/components/schemas/Identifier' constraints: $ref: '#/components/schemas/Constraints' isVersioned: type: boolean + numRows: + type: integer + format: int64 + dataLength: + type: integer + format: int64 + maxDataLength: + type: integer + format: int64 + avgRowLength: + type: integer + format: int64 created: type: string format: date-time @@ -7617,7 +7843,7 @@ components: type: boolean indexLength: type: integer - format: int32 + format: int64 alias: type: string columnType: @@ -7654,7 +7880,7 @@ components: - TableColumnType.YEAR length: type: integer - format: int32 + format: int64 isNullAllowed: type: boolean ordinalPosition: @@ -7677,10 +7903,20 @@ components: type: string size: type: integer - format: int32 + format: int64 d: type: integer - format: int32 + format: int64 + valMin: + type: number + valMax: + type: number + mean: + type: number + median: + type: number + stdDev: + type: number lastModified: type: string format: date-time @@ -7772,6 +8008,8 @@ components: createdBy: type: string format: uuid + creator: + $ref: '#/components/schemas/User' name: type: string internalName: @@ -7784,10 +8022,12 @@ components: type: string queryHash: type: string + identifiers: + type: array + items: + $ref: '#/components/schemas/Identifier' database: $ref: '#/components/schemas/Database' - identifier: - $ref: '#/components/schemas/Identifier' columns: type: array items: @@ -7798,194 +8038,14 @@ components: lastModified: type: string format: date-time - ViewDto: - required: - - columns - - created - - creator - - database - - database_id - - id - - internal_name - - name - - query - - query_hash - type: object - properties: - id: - type: integer - format: int64 - database: - $ref: '#/components/schemas/DatabaseDto' - name: - type: string - example: Air Quality - identifier: - $ref: '#/components/schemas/IdentifierDto' - query: - type: string - example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - creator: - $ref: '#/components/schemas/UserDto' - columns: - type: array - items: - $ref: '#/components/schemas/ColumnDto' - database_id: - type: integer - format: int64 - internal_name: - type: string - example: air_quality - is_public: - type: boolean - example: true - initial_view: - type: boolean - description: True if it is the default view for the database - example: true - query_hash: - type: string - example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 - last_modified: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - ConstraintsDto: - type: object - properties: - uniques: - type: array - items: - $ref: '#/components/schemas/UniqueDto' - checks: - type: array - items: - type: string - foreign_keys: - type: array - items: - $ref: '#/components/schemas/ForeignKeyDto' - ForeignKeyDto: - type: object - properties: - columns: - type: array - items: - $ref: '#/components/schemas/ColumnDto' - referenced_table: - $ref: '#/components/schemas/TableBriefDto' - referenced_columns: - type: array - items: - $ref: '#/components/schemas/ColumnDto' - on_update: - type: string - enum: - - restrict - - cascade - - set_null - - no_action - - set_default - on_delete: - type: string - enum: - - restrict - - cascade - - set_null - - no_action - - set_default - TableDto: - required: - - columns - - created - - created_by - - creator - - database - - id - - internal_name - - is_public - - is_versioned - - name - - owner - - queue_name - - routing_key - type: object - properties: - id: - type: integer - format: int64 - database: - $ref: '#/components/schemas/DatabaseDto' - name: - type: string - example: Air Quality - creator: - $ref: '#/components/schemas/UserDto' - owner: - $ref: '#/components/schemas/UserDto' - description: - type: string - example: Air Quality in Austria - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - columns: - type: array - items: - $ref: '#/components/schemas/ColumnDto' - constraints: - $ref: '#/components/schemas/ConstraintsDto' - internal_name: - type: string - example: air_quality - is_versioned: - type: boolean - example: true - created_by: - type: string - format: uuid - queue_name: - type: string - example: air_quality - queue_type: - type: string - example: quorum - routing_key: - type: string - example: dbrepo.database.air_quality - is_public: - type: boolean - example: true - UniqueDto: - required: - - columns - - table - - uid - type: object - properties: - uid: - type: integer - format: int64 - table: - $ref: '#/components/schemas/TableDto' - columns: - type: array - items: - $ref: '#/components/schemas/ColumnDto' QueryBriefDto: required: - - cid - created - creator - - dbid + - database_id - execution - id + - is_persisted - last_modified - query - query_hash @@ -7994,12 +8054,6 @@ components: id: type: integer format: int64 - cid: - type: integer - format: int64 - dbid: - type: integer - format: int64 creator: $ref: '#/components/schemas/UserDto' execution: @@ -8014,12 +8068,17 @@ components: enum: - query - view - identifier: - $ref: '#/components/schemas/IdentifierBriefDto' + identifiers: + type: array + items: + $ref: '#/components/schemas/IdentifierBriefDto' created: type: string format: date-time example: 2021-03-12T15:26:21Z + database_id: + type: integer + format: int64 query_normalized: type: string example: SELECT `id` FROM `air_quality` @@ -8033,6 +8092,9 @@ components: type: integer format: int64 example: 1 + is_persisted: + type: boolean + example: true last_modified: type: string format: date-time diff --git a/.docs/.swagger/api-mirror.yaml b/.docs/.swagger/api-mirror.yaml deleted file mode 100644 index 2310a7fd8baeb4fbc8d33224dc36869b8777a14e..0000000000000000000000000000000000000000 --- a/.docs/.swagger/api-mirror.yaml +++ /dev/null @@ -1,14 +0,0 @@ -openapi: 3.0.1 -info: - title: OpenAPI definition - version: v0 -servers: -- url: http://localhost:9050 - description: Generated server url -paths: {} -components: - securitySchemes: - bearerAuth: - type: http - scheme: bearer - bearerFormat: JWT diff --git a/.docs/.swagger/api-query.yaml b/.docs/.swagger/api-query.yaml deleted file mode 100644 index 16168d93b08fc5f2d3b79131526ad2c8a027b0eb..0000000000000000000000000000000000000000 --- a/.docs/.swagger/api-query.yaml +++ /dev/null @@ -1,2520 +0,0 @@ -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.2.0 -externalDocs: - description: Sourcecode Documentation - url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services -servers: -- url: http://localhost:9093 - description: Generated server url -- url: https://dbrepo2.tuwien.ac.at - description: Sandbox -paths: - /api/container/{id}/database/{databaseId}/table/{tableId}/history: - get: - tags: - - table-history-endpoint - summary: Find all history - 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 - responses: - "405": - description: Find table history is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Find table history successfully - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/TableHistoryDto' - "404": - description: "Table, database or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "504": - description: Query store failed to query table history - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Table history query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - head: - tags: - - table-history-endpoint - summary: Find all history - 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 - responses: - "405": - description: Find table history is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Find table history successfully - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/TableHistoryDto' - "404": - description: "Table, database or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "504": - description: Query store failed to query table history - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Table history query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/table/{tableId}/data: - get: - tags: - - table-data-endpoint - summary: Find data - operationId: getAll_2 - 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 - - name: sortDirection - in: query - required: false - schema: - type: string - enum: - - asc - - desc - - name: sortColumn - in: query - required: false - schema: - type: string - responses: - "200": - description: OK - content: - '*/*': - schema: - $ref: '#/components/schemas/QueryResultDto' - security: - - bearerAuth: [] - put: - tags: - - table-data-endpoint - summary: Update data - 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: tableId - in: path - required: true - schema: - type: integer - format: int64 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/TableCsvUpdateDto' - required: true - responses: - "200": - description: OK - deprecated: true - security: - - bearerAuth: [] - 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: - "200": - description: OK - security: - - bearerAuth: [] - delete: - tags: - - table-data-endpoint - summary: Delete data - operationId: delete_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 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/TableCsvDeleteDto' - required: true - responses: - "200": - description: OK - security: - - bearerAuth: [] - head: - tags: - - table-data-endpoint - summary: Find data - operationId: getAll_3 - 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 - - name: sortDirection - in: query - required: false - schema: - type: string - enum: - - asc - - desc - - name: sortColumn - in: query - required: false - schema: - type: string - responses: - "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_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: queryId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "200": - description: List queries - content: - application/json: - schema: - $ref: '#/components/schemas/QueryDto' - "404": - description: "Database, query or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Find query is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "501": - description: Image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "504": - description: Query store failed to select query - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - put: - tags: - - store-endpoint - summary: Persist some query - operationId: persist - 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: "Database, query or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "501": - description: Image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Persist query successful - content: - application/json: - schema: - $ref: '#/components/schemas/QueryDto' - "405": - description: Persist query is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "504": - description: Query store failed to persist query - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Query is already persisted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/view: - get: - tags: - - view-endpoint - summary: Find all views - 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: Database or user could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Find views is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Find views successfully - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/ViewBriefDto' - security: - - bearerAuth: [] - post: - tags: - - view-endpoint - summary: Create a view - 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/ViewCreateDto' - required: true - responses: - "401": - description: Credentials missing - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Database or user could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Create view is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Credentials missing - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "201": - description: Create view successfully - content: - application/json: - schema: - $ref: '#/components/schemas/ViewBriefDto' - "423": - description: Create view resulted in an invalid query statement - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Create view query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - 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: - "200": - description: OK - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/query: - get: - tags: - - store-endpoint - summary: Find queries - operationId: findAll_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: persisted - in: query - required: false - schema: - type: boolean - responses: - "405": - description: Find all queries is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "501": - description: Image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "504": - description: Query store failed to select query - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Database, container or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "423": - description: Selection of time-versioned query resulted in an invalid query - statement - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: List queries - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/QueryBriefDto' - security: - - bearerAuth: [] - post: - 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 - - name: sortDirection - in: query - required: false - schema: - type: string - enum: - - asc - - desc - - name: sortColumn - in: query - required: false - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ExecuteStatementDto' - required: true - responses: - "200": - description: OK - content: - '*/*': - schema: - $ref: '#/components/schemas/QueryResultDto' - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/view/{viewId}: - get: - tags: - - view-endpoint - summary: Find one view - 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: viewId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "200": - description: Find view successfully - content: - application/json: - schema: - $ref: '#/components/schemas/ViewDto' - "404": - description: "Database, view or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Find view is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - delete: - tags: - - view-endpoint - summary: Delete one view - 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: viewId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "401": - description: Credentials missing - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Credentials missing - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Database, view or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Delete view query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Delete view successfully - "423": - description: Delete view resulted in an invalid query statement - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Delete view is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/view/{viewId}/data: - get: - tags: - - view-endpoint - summary: Find view data - operationId: data - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: viewId - 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: - "200": - description: Find data successfully - content: - application/json: - schema: - $ref: '#/components/schemas/QueryResultDto' - "401": - description: Credentials missing - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "423": - description: Find data resulted in an invalid query statement - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Credentials missing - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "417": - description: Parsing of resulting columns failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "504": - description: Query store failed to query view data - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Database, view, container or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Pagination not in valid range or find data query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "501": - description: Image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Find data is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/view/{viewId}/data/count: - get: - tags: - - view-endpoint - summary: Find view data count - operationId: count - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: viewId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "200": - description: OK - content: - '*/*': - schema: - type: integer - format: int64 - 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: - "200": - description: OK - content: - '*/*': - schema: - type: string - format: binary - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/table/{tableId}/data/count: - get: - tags: - - table-data-endpoint - summary: Find data - operationId: getCount - 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: - "200": - description: OK - content: - '*/*': - schema: - type: integer - format: int64 - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/query/{queryId}/export: - get: - tags: - - query-endpoint - summary: Exports some query - operationId: export_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: queryId - in: path - required: true - schema: - type: integer - format: int64 - - name: Accept - in: header - required: true - schema: - type: string - responses: - "200": - description: OK - content: - '*/*': - schema: - type: object - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/query/{queryId}/data: - get: - 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 - - name: sortDirection - in: query - required: false - schema: - type: string - enum: - - asc - - desc - - name: sortColumn - in: query - required: false - schema: - type: string - responses: - "200": - description: OK - content: - '*/*': - schema: - $ref: '#/components/schemas/QueryResultDto' - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/query/{queryId}/data/count: - get: - tags: - - query-endpoint - summary: Re-execute some query - operationId: reExecuteCount - 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: - "200": - description: OK - content: - '*/*': - schema: - type: integer - format: int64 - security: - - bearerAuth: [] -components: - schemas: - ApiErrorDto: - required: - - code - - message - - status - type: object - properties: - status: - type: string - example: STATUS - enum: - - 100 CONTINUE - - 101 SWITCHING_PROTOCOLS - - 102 PROCESSING - - 103 EARLY_HINTS - - 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 - example: Error message - code: - type: string - example: error.service.code - TableHistoryDto: - required: - - event - - timestamp - - total - type: object - properties: - timestamp: - type: string - format: date-time - event: - type: string - total: - type: integer - format: int64 - example: 1 - QueryResultDto: - required: - - id - - result - type: object - properties: - result: - type: array - items: - type: object - additionalProperties: - type: object - id: - type: integer - format: int64 - result_number: - type: integer - format: int64 - example: 1 - TableCsvUpdateDto: - required: - - data - - keys - type: object - properties: - data: - type: object - additionalProperties: - type: object - keys: - type: object - additionalProperties: - type: object - ColumnBriefDto: - required: - - column_type - - database_id - - id - - internal_name - - name - - table_id - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: date - database_id: - type: integer - format: int64 - table_id: - type: integer - format: int64 - internal_name: - type: string - example: mdb_date - column_type: - type: string - example: date - enum: - - enum - - number - - decimal - - string - - text - - boolean - - date - - timestamp - - blob - ContainerDto: - required: - - created - - hash - - id - - internal_name - - name - - running - type: object - properties: - id: - type: integer - format: int64 - hash: - type: string - example: f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50 - name: - type: string - example: Air Quality - state: - type: string - example: running - enum: - - created - - restarting - - running - - paused - - exited - - dead - database: - $ref: '#/components/schemas/DatabaseDto' - running: - type: boolean - example: true - image: - $ref: '#/components/schemas/ImageBriefDto' - port: - type: integer - format: int32 - owner: - $ref: '#/components/schemas/UserBriefDto' - created: - type: string - format: date-time - example: 2021-03-12T15:26:21.678396092Z - internal_name: - type: string - example: air-quality - ip_address: - type: string - CreatorDto: - required: - - firstname - - id - - lastname - type: object - properties: - id: - type: integer - format: int64 - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Wesleyan University - orcid: - type: string - example: 0000-0002-1825-0097 - DatabaseAccessDto: - required: - - type - - user - type: object - properties: - user: - $ref: '#/components/schemas/UserDto' - type: - type: string - enum: - - read - - write_own - - write_all - created: - type: string - format: date-time - DatabaseDto: - required: - - creator - - exchange_name - - id - - internal_name - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - identifier: - $ref: '#/components/schemas/IdentifierDto' - description: - type: string - example: Weather Australia 2009-2021 - tables: - type: array - items: - $ref: '#/components/schemas/TableBriefDto' - views: - type: array - items: - $ref: '#/components/schemas/ViewBriefDto' - image: - $ref: '#/components/schemas/ImageDto' - container: - $ref: '#/components/schemas/ContainerDto' - accesses: - type: array - items: - $ref: '#/components/schemas/DatabaseAccessDto' - creator: - $ref: '#/components/schemas/UserBriefDto' - owner: - $ref: '#/components/schemas/UserBriefDto' - created: - type: string - format: date-time - exchange_name: - type: string - example: dbrepo/air_quality - internal_name: - type: string - example: weather_australia - is_public: - type: boolean - example: true - IdentifierDto: - required: - - container id - - creators - - database id - - execution - - publication_year - - query - - query_hash - - query_normalized - - result_hash - - result_number - - title - - type - - visibility - type: object - properties: - id: - type: integer - format: int64 - type: - type: string - enum: - - database - - subset - title: - type: string - example: "Airquality Stephansplatz, Vienna, Austria" - description: - type: string - example: "Air quality reports at Stephansplatz, Vienna" - query: - type: string - example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ - \ = \"09:STEF\"" - execution: - type: string - format: date-time - visibility: - type: string - example: everyone - enum: - - everyone - - self - doi: - type: string - example: 10.1038/nphys1170 - publisher: - type: string - example: TU Wien - language: - type: string - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - license: - $ref: '#/components/schemas/LicenseDto' - creators: - type: array - items: - $ref: '#/components/schemas/CreatorDto' - created: - type: string - format: date-time - container id: - type: integer - format: int64 - example: 1 - database id: - type: integer - format: int64 - example: 1 - query id: - type: integer - format: int64 - example: 1 - query_normalized: - type: string - example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ - \ = \"09:STEF\"" - related: - type: array - items: - $ref: '#/components/schemas/RelatedIdentifierDto' - query_hash: - type: string - description: query hash in sha512 - result_hash: - type: string - result_number: - type: integer - format: int64 - example: 1 - publication_day: - type: integer - format: int32 - example: 15 - publication_month: - type: integer - format: int32 - example: 12 - publication_year: - type: integer - format: int32 - example: 2022 - last_modified: - type: string - format: date-time - ImageBriefDto: - required: - - id - - registry - - repository - - tag - type: object - properties: - id: - type: integer - format: int64 - registry: - type: string - example: docker.io/library - repository: - type: string - example: mariadb - tag: - type: string - example: "10.5" - ImageDateDto: - required: - - database_format - - example - - has_time - - id - - unix_format - type: object - properties: - id: - type: integer - format: int64 - example: - type: string - example: 30.01.2022 - database_format: - type: string - example: '%d.%c.%Y' - unix_format: - type: string - example: dd.MM.YYYY - has_time: - type: boolean - example: false - created_at: - type: string - format: date-time - ImageDto: - required: - - default_port - - dialect - - driver_class - - id - - jdbc_method - - registry - - repository - - tag - type: object - properties: - id: - type: integer - format: int64 - registry: - type: string - example: docker.io/library - repository: - type: string - example: mariadb - tag: - type: string - example: "10.5" - dialect: - type: string - example: org.hibernate.dialect.MariaDBDialect - hash: - type: string - example: sha256:c5ec7353d87dfc35067e7bffeb25d6a0d52dad41e8b7357213e3b12d6e7ff78e - compiled: - type: string - format: date-time - example: 2021-03-12T15:26:21.678396092Z - size: - type: integer - example: 314295447 - driver_class: - type: string - example: org.mariadb.jdbc.Driver - date_formats: - type: array - items: - $ref: '#/components/schemas/ImageDateDto' - jdbc_method: - type: string - example: mariadb - default_port: - type: integer - format: int32 - example: 3306 - LicenseDto: - required: - - identifier - - uri - type: object - properties: - identifier: - type: string - example: MIT - uri: - type: string - example: https://opensource.org/licenses/MIT - QueryDto: - required: - - cid - - created - - creator - - dbid - - id - - is_persisted - - query - - query_hash - type: object - properties: - id: - type: integer - format: int64 - cid: - type: integer - format: int64 - dbid: - type: integer - format: int64 - creator: - $ref: '#/components/schemas/UserDto' - execution: - type: string - format: date-time - query: - type: string - example: SELECT `id` FROM `air_quality` - type: - type: string - example: query - enum: - - query - - view - identifier: - $ref: '#/components/schemas/IdentifierDto' - created: - type: string - format: date-time - query_normalized: - type: string - example: SELECT `id` FROM `air_quality` - query_hash: - type: string - example: 17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76 - is_persisted: - type: boolean - example: true - result_hash: - type: string - example: 17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76 - result_number: - type: integer - format: int64 - example: 1 - last_modified: - type: string - format: date-time - RelatedIdentifierDto: - required: - - created - - id - - value - type: object - properties: - id: - type: integer - format: int64 - value: - type: string - example: 10.70124/dc4zh-9ce78 - type: - type: string - example: DOI - enum: - - DOI - - URL - - URN - - ARK - - arXiv - - bibcode - - EAN13 - - EISSN - - Handle - - IGSN - - ISBN - - ISTC - - LISSN - - LSID - - PMID - - PURL - - UPC - - w3id - relation: - type: string - example: Cites - enum: - - IsCitedBy - - Cites - - IsSupplementTo - - IsSupplementedBy - - IsContinuedBy - - Continues - - IsDescribedBy - - Describes - - HasMetadata - - IsMetadataFor - - HasVersion - - IsVersionOf - - IsNewVersionOf - - IsPreviousVersionOf - - IsPartOf - - HasPart - - IsPublishedIn - - IsReferencedBy - - References - - IsDocumentedBy - - Documents - - IsCompiledBy - - Compiles - - IsVariantFormOf - - IsOriginalFormOf - - IsIdenticalTo - - IsReviewedBy - - Reviews - - IsDerivedFrom - - IsSourceOf - - IsRequiredBy - - Requires - - IsObsoletedBy - - Obsoletes - created: - type: string - format: date-time - last_modified: - type: string - format: date-time - TableBriefDto: - required: - - columns - - description - - id - - internal_name - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - description: - type: string - example: Air Quality in Austria - owner: - $ref: '#/components/schemas/UserBriefDto' - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - internal_name: - type: string - example: air_quality - UserAttributeDto: - type: object - properties: - name: - type: string - example: theme_dark - value: - type: string - example: "true" - UserBriefDto: - required: - - id - - username - type: object - properties: - id: - type: string - format: uuid - example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 - username: - type: string - description: Only contains lowercase characters - example: jcarberry - name: - type: string - example: Josiah Carberry - orcid: - type: string - example: 0000-0002-1825-0097 - given_name: - type: string - example: Josiah - family_name: - type: string - example: Carberry - email_verified: - type: boolean - example: true - UserDto: - required: - - email - - email_verified - - id - - username - type: object - properties: - id: - type: string - format: uuid - example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 - username: - type: string - description: Only contains lowercase characters - example: jcarberry - name: - type: string - example: Josiah Carberry - orcid: - type: string - example: 0000-0002-1825-0097 - attributes: - type: array - items: - $ref: '#/components/schemas/UserAttributeDto' - 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 - example: jcarberry@brown.edu - given_name: - type: string - example: Josiah - family_name: - type: string - example: Carberry - email_verified: - type: boolean - example: true - ViewBriefDto: - required: - - created - - creator - - id - - internal_name - - name - - query - - vdbid - type: object - properties: - id: - type: integer - format: int64 - vdbid: - type: integer - format: int64 - name: - type: string - example: Air Quality - query: - type: string - example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC - created: - type: string - format: date-time - creator: - $ref: '#/components/schemas/UserDto' - internal_name: - type: string - example: air_quality - is_public: - type: boolean - example: true - initial_view: - type: boolean - description: True if it is the default view for the database - example: true - last_modified: - type: string - format: date-time - ViewCreateDto: - required: - - is_public - - name - - query - type: object - properties: - name: - type: string - example: Air Quality - query: - type: string - example: SELECT `id` FROM `air_quality` - is_public: - type: boolean - example: true - TableCsvDto: - required: - - data - type: object - properties: - data: - type: object - additionalProperties: - type: object - ImportDto: - required: - - location - - separator - type: object - properties: - location: - type: string - example: /tmp/file.csv - separator: - type: string - example: "," - quote: - type: string - example: '"' - skip_lines: - minimum: 0 - type: integer - format: int64 - false_element: - type: string - true_element: - type: string - null_element: - type: string - example: NA - ExecuteStatementDto: - required: - - statement - type: object - properties: - statement: - type: string - example: SELECT `id` FROM `air_quality` - timestamp: - type: string - description: Execute query for data at this timestamp - format: date-time - ViewDto: - required: - - created - - creator - - database - - id - - internalName - - name - - query - - vdbid - type: object - properties: - id: - type: integer - format: int64 - vdbid: - type: integer - format: int64 - database: - $ref: '#/components/schemas/DatabaseDto' - name: - type: string - example: Air Quality - internalName: - type: string - example: air_quality - query: - type: string - example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC - created: - type: string - format: date-time - creator: - $ref: '#/components/schemas/UserDto' - is_public: - type: boolean - example: true - initial_view: - type: boolean - description: True if it is the default view for the database - example: true - last_modified: - type: string - format: date-time - CreatorBriefDto: - required: - - firstname - - lastname - type: object - properties: - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Wesleyan University - IdentifierBriefDto: - required: - - container id - - creators - - database id - - id - - publication_year - - title - - type - type: object - properties: - id: - type: integer - format: int64 - title: - type: string - example: "Airquality Stephansplatz, Vienna, Austria" - type: - type: string - enum: - - database - - subset - doi: - type: string - example: 10.1038/nphys1170 - publisher: - type: string - example: TU Wien - creators: - type: array - items: - $ref: '#/components/schemas/CreatorBriefDto' - container id: - type: integer - format: int64 - example: 1 - database id: - type: integer - format: int64 - example: 1 - query id: - type: integer - format: int64 - example: 1 - publication_year: - type: integer - format: int32 - example: 2022 - QueryBriefDto: - required: - - cid - - created - - creator - - dbid - - id - - query - - query_hash - type: object - properties: - id: - type: integer - format: int64 - cid: - type: integer - format: int64 - dbid: - type: integer - format: int64 - creator: - $ref: '#/components/schemas/UserDto' - execution: - type: string - format: date-time - query: - type: string - example: SELECT `id` FROM `air_quality` - type: - type: string - example: query - enum: - - query - - view - identifier: - $ref: '#/components/schemas/IdentifierBriefDto' - created: - type: string - format: date-time - query_normalized: - type: string - example: SELECT `id` FROM `air_quality` - query_hash: - type: string - example: 17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76 - result_hash: - type: string - example: 17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76 - result_number: - type: integer - format: int64 - example: 1 - last_modified: - type: string - format: date-time - TableCsvDeleteDto: - required: - - keys - type: object - properties: - keys: - type: object - additionalProperties: - type: object - securitySchemes: - bearerAuth: - type: http - scheme: bearer - bearerFormat: JWT diff --git a/.docs/api-search.yaml b/.docs/.swagger/api-search.yaml similarity index 96% rename from .docs/api-search.yaml rename to .docs/.swagger/api-search.yaml index 78ad885e9bb5b663d754395218cac4a9a1656500..c600998d58f70c2216fd802af5d49c426a6558e5 100644 --- a/.docs/api-search.yaml +++ b/.docs/.swagger/api-search.yaml @@ -12,7 +12,7 @@ info: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 title: Database Repository Search Service API - version: 1.4.0 + version: dbrepo-latest openapi: 3.0.0 paths: {} servers: diff --git a/.docs/.swagger/api-semantics.yaml b/.docs/.swagger/api-semantics.yaml deleted file mode 100644 index c001c6d7bb3539f64f83b76b093d90ac679ce30b..0000000000000000000000000000000000000000 --- a/.docs/.swagger/api-semantics.yaml +++ /dev/null @@ -1,685 +0,0 @@ -openapi: 3.0.1 -info: - title: Database Repository Semantic Service API - description: Service that manages the tables - 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.2.0 -externalDocs: - description: Sourcecode Documentation - url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services -servers: -- url: http://localhost:9097 - description: Generated server url -- url: https://dbrepo2.tuwien.ac.at - description: Sandbox -paths: - /api/semantic/ontology/{id}: - get: - tags: - - ontology-endpoint - summary: Find one ontology - operationId: find - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "200": - description: Find one ontology - content: - application/json: - schema: - $ref: '#/components/schemas/OntologyDto' - "404": - description: Could not find ontology - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - put: - tags: - - ontology-endpoint - summary: Update an ontology - operationId: update - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/OntologyModifyDto' - required: true - responses: - "202": - description: Updated ontology successfully - content: - application/json: - schema: - $ref: '#/components/schemas/OntologyDto' - "404": - description: Could not find ontology - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - delete: - tags: - - ontology-endpoint - summary: Delete an ontology - operationId: delete - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "202": - description: Deleted ontology successfully - content: - application/json: {} - "404": - description: Could not find ontology - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/semantic/unit: - get: - tags: - - semantics-endpoint - summary: List semantic units - operationId: findAllUnits - responses: - "200": - description: Find all semantic units - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/UnitDto' - post: - tags: - - semantics-endpoint - summary: Save a semantic unit - operationId: saveUnit - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UnitSaveDto' - required: true - responses: - "202": - description: Saved a semantic unit - content: - application/json: - schema: - $ref: '#/components/schemas/UnitDto' - security: - - bearerAuth: [] - /api/semantic/ontology: - get: - tags: - - ontology-endpoint - summary: List all ontologies - operationId: findAll - responses: - "200": - description: List all ontologies - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/OntologyDto' - post: - tags: - - ontology-endpoint - summary: Register a new ontology - operationId: create - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/OntologyCreateDto' - required: true - responses: - "201": - description: Registered ontology successfully - content: - application/json: - schema: - $ref: '#/components/schemas/OntologyDto' - security: - - bearerAuth: [] - /api/semantic/concept: - get: - tags: - - semantics-endpoint - summary: List semantic concepts - operationId: findAllConcepts - responses: - "200": - description: Find all semantic concepts - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/ConceptDto' - post: - tags: - - semantics-endpoint - summary: Create or update a semantic concept - operationId: saveUnit_1 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ConceptSaveDto' - required: true - responses: - "202": - description: Saved a semantic concept - content: - application/json: - schema: - $ref: '#/components/schemas/ConceptDto' - security: - - bearerAuth: [] - /api/semantic/ontology/{id}/entity: - get: - tags: - - query-endpoint - summary: Find entities - operationId: find_1 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - - name: label - in: query - required: false - schema: - type: string - - name: uri - in: query - required: false - schema: - type: string - responses: - "200": - description: Found entities - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/EntityDto' - "417": - description: Generated query or uri is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Could not find ontology - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Filter params are invalid - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/semantic/database/{databaseId}/table/{tableId}: - get: - tags: - - table-endpoint - summary: Suggest table semantics - operationId: analyseTable - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: tableId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "417": - description: Generated query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Could not find the table - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Suggested table semantics successfully - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/TableColumnEntityDto' - security: - - bearerAuth: [] - /api/semantic/database/{databaseId}/table/{tableId}/column/{columnId}: - get: - tags: - - table-endpoint - summary: Suggest table column semantics - operationId: analyseTableColumn - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: tableId - in: path - required: true - schema: - type: integer - format: int64 - - name: columnId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "417": - description: Generated query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Suggested table column semantics successfully - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/TableColumnEntityDto' - "404": - description: Could not find the table column - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] -components: - schemas: - OntologyModifyDto: - required: - - prefix - - uri - type: object - properties: - uri: - type: string - example: Ontology URI - prefix: - type: string - example: Ontology prefix - sparql_endpoint: - type: string - example: Ontology SPARQL endpoint - OntologyDto: - required: - - created - - id - - prefix - - rdf - - sparql - - uri - type: object - properties: - id: - type: integer - format: int64 - uri: - type: string - example: Ontology URI - prefix: - type: string - example: Ontology prefix - sparql: - type: boolean - example: true - rdf: - type: boolean - example: true - creator: - $ref: '#/components/schemas/UserBriefDto' - created: - type: string - format: date-time - example: 2021-03-12T15:26:21.678396092Z - sparql_endpoint: - type: string - example: Ontology SPARQL endpoint - UserBriefDto: - required: - - id - - username - type: object - properties: - id: - type: string - format: uuid - example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 - username: - type: string - description: Only contains lowercase characters - example: jcarberry - name: - type: string - example: Josiah Carberry - orcid: - type: string - example: 0000-0002-1825-0097 - given_name: - type: string - example: Josiah - family_name: - type: string - example: Carberry - email_verified: - type: boolean - example: true - ApiErrorDto: - required: - - code - - message - - status - type: object - properties: - status: - type: string - example: STATUS - enum: - - 100 CONTINUE - - 101 SWITCHING_PROTOCOLS - - 102 PROCESSING - - 103 EARLY_HINTS - - 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 - example: Error message - code: - type: string - example: error.service.code - UnitSaveDto: - required: - - description - - name - - uri - type: object - properties: - uri: - type: string - name: - type: string - description: - type: string - ColumnBriefDto: - required: - - column_type - - database_id - - id - - internal_name - - name - - table_id - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: date - database_id: - type: integer - format: int64 - table_id: - type: integer - format: int64 - internal_name: - type: string - example: mdb_date - column_type: - type: string - example: date - enum: - - enum - - number - - decimal - - string - - text - - boolean - - date - - timestamp - - blob - UnitDto: - required: - - columns - - created - - uri - type: object - properties: - uri: - type: string - name: - type: string - description: - type: string - created: - type: string - format: date-time - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - OntologyCreateDto: - required: - - prefix - - uri - type: object - properties: - uri: - type: string - example: Ontology URI - prefix: - type: string - example: Ontology prefix - sparql_endpoint: - type: string - example: Ontology SPARQL endpoint - ConceptSaveDto: - required: - - description - - name - - uri - type: object - properties: - uri: - type: string - name: - type: string - description: - type: string - ConceptDto: - required: - - columns - - created - - uri - type: object - properties: - uri: - type: string - name: - type: string - description: - type: string - created: - type: string - format: date-time - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - EntityDto: - required: - - label - - uri - type: object - properties: - uri: - type: string - example: https://www.wikidata.org/entity/Q1686799 - label: - type: string - example: Apache Jena - description: - type: string - example: open source semantic web framework for Java - TableColumnEntityDto: - required: - - columnId - - databaseId - - tableId - - uri - type: object - properties: - databaseId: - type: integer - format: int64 - example: 1 - tableId: - type: integer - format: int64 - example: 1 - columnId: - type: integer - format: int64 - example: 1 - uri: - type: string - example: https://www.wikidata.org/entity/Q1686799 - label: - type: string - example: Apache Jena - description: - type: string - example: open source semantic web framework for Java - securitySchemes: - bearerAuth: - type: http - scheme: bearer - bearerFormat: JWT diff --git a/.docs/api-sidecar.yaml b/.docs/.swagger/api-sidecar.yaml similarity index 99% rename from .docs/api-sidecar.yaml rename to .docs/.swagger/api-sidecar.yaml index c10a7078fca83a3a7ccfe06b420fe96f9f849f28..30546cb5795fc887609416d0d2b3739273278156 100644 --- a/.docs/api-sidecar.yaml +++ b/.docs/.swagger/api-sidecar.yaml @@ -21,7 +21,7 @@ info: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 title: Database Repository Data Database sidecar API - version: 1.4.0 + version: dbrepo-latest openapi: 3.0.0 paths: /health: diff --git a/.docs/.swagger/api-table.yaml b/.docs/.swagger/api-table.yaml deleted file mode 100644 index 9639c5fc4e24d730136b88d16a7b5a526dc469d4..0000000000000000000000000000000000000000 --- a/.docs/.swagger/api-table.yaml +++ /dev/null @@ -1,860 +0,0 @@ -openapi: 3.0.1 -info: - title: Database Repository Table Service API - description: Service that manages the tables - 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.2.0 -externalDocs: - description: Sourcecode Documentation - url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services -servers: -- url: http://localhost:9094 - description: Generated server url -- url: https://dbrepo2.tuwien.ac.at - description: Sandbox -paths: - /api/container/{id}/database/{databaseId}/table/{tableId}/column/{columnId}: - put: - tags: - - table-column-endpoint - summary: Update a table column semantic mapping - 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: tableId - in: path - required: true - schema: - type: integer - format: int64 - - name: columnId - in: path - required: true - schema: - type: integer - format: int64 - - name: Authorization - in: header - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ColumnSemanticsUpdateDto' - required: true - responses: - "404": - description: "Table, database, semantic concept, unit of measurement or\ - \ container could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Updated column semantics successfully - content: - application/json: - schema: - $ref: '#/components/schemas/ColumnDto' - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Update semantic concept query is malformed or update unit of - measurement query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Update column semantics not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ColumnDto' - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/table: - get: - tags: - - table-endpoint - summary: List all tables - operationId: list - 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: Database could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: List tables not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: List tables - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/TableBriefDto' - security: - - bearerAuth: [] - post: - tags: - - table-endpoint - summary: Create a table - 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/TableCreateDto' - required: true - responses: - "501": - description: Image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "504": - description: Broker service failed to create queue - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Database, container or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Create table conflicts with existing table name - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Create table not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "201": - description: Created a new table - content: - application/json: - schema: - $ref: '#/components/schemas/TableBriefDto' - "400": - description: Create table query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/container/{id}/database/{databaseId}/table/{tableId}: - get: - tags: - - table-endpoint - summary: Get information about table - 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 - - name: tableId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "405": - description: Find table not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Find table successfully - content: - application/json: - schema: - $ref: '#/components/schemas/TableDto' - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Table, database or container could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - delete: - tags: - - table-endpoint - summary: Delete a table - 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: tableId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "501": - description: Image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Delete table successfully - content: - application/json: - schema: - $ref: '#/components/schemas/TableDto' - "405": - description: Delete table not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "423": - description: Delete table resulted in an invalid state - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Delete table query resulted in an invalid query statement - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Table, database or container could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] -components: - schemas: - ColumnSemanticsUpdateDto: - type: object - properties: - concept_uri: - type: string - unit_uri: - type: string - ApiErrorDto: - required: - - code - - message - - status - type: object - properties: - status: - type: string - example: STATUS - enum: - - 100 CONTINUE - - 101 SWITCHING_PROTOCOLS - - 102 PROCESSING - - 103 EARLY_HINTS - - 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 - example: Error message - code: - type: string - example: error.service.code - ColumnBriefDto: - required: - - column_type - - database_id - - id - - internal_name - - name - - table_id - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: date - database_id: - type: integer - format: int64 - table_id: - type: integer - format: int64 - internal_name: - type: string - example: mdb_date - column_type: - type: string - example: date - enum: - - enum - - number - - decimal - - string - - text - - boolean - - date - - timestamp - - blob - ColumnDto: - required: - - auto_generated - - column_type - - id - - internal_name - - is_null_allowed - - is_primary_key - - is_public - - name - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Date - length: - type: integer - format: int32 - example: 255 - concept: - $ref: '#/components/schemas/ConceptDto' - unit: - $ref: '#/components/schemas/UnitDto' - internal_name: - type: string - example: mdb_date - date_format: - $ref: '#/components/schemas/ImageDateDto' - auto_generated: - type: boolean - example: false - is_primary_key: - type: boolean - example: true - index_length: - type: integer - format: int32 - column_type: - type: string - example: string - enum: - - enum - - number - - decimal - - string - - text - - boolean - - date - - timestamp - - blob - is_public: - type: boolean - example: true - is_null_allowed: - type: boolean - example: false - enum_values: - type: array - items: - type: string - ConceptDto: - required: - - columns - - created - - uri - type: object - properties: - uri: - type: string - name: - type: string - description: - type: string - created: - type: string - format: date-time - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - ImageDateDto: - required: - - database_format - - example - - has_time - - id - - unix_format - type: object - properties: - id: - type: integer - format: int64 - example: - type: string - example: 30.01.2022 - database_format: - type: string - example: '%d.%c.%Y' - unix_format: - type: string - example: dd.MM.YYYY - has_time: - type: boolean - example: false - created_at: - type: string - format: date-time - UnitDto: - required: - - columns - - created - - uri - type: object - properties: - uri: - type: string - name: - type: string - description: - type: string - created: - type: string - format: date-time - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - ColumnCreateDto: - required: - - name - - null_allowed - - primary_key - - type - type: object - properties: - name: - type: string - example: Date - type: - type: string - example: string - enum: - - enum - - number - - decimal - - string - - text - - boolean - - date - - timestamp - - blob - length: - type: integer - format: int32 - example: 255 - dfid: - type: integer - description: date format id - format: int64 - primary_key: - type: boolean - example: false - index_length: - type: integer - format: int32 - null_allowed: - type: boolean - example: true - enum_values: - type: array - description: "enum values, only considered when type = ENUM" - items: - type: string - description: "enum values, only considered when type = ENUM" - ConstraintsCreateDto: - type: object - properties: - uniques: - type: array - items: - type: array - items: - type: string - checks: - type: array - items: - type: string - foreign_keys: - type: array - items: - $ref: '#/components/schemas/ForeignKeyCreateDto' - ForeignKeyCreateDto: - type: object - properties: - columns: - type: array - items: - type: string - referenced_table: - type: string - referenced_columns: - type: array - items: - type: string - on_update: - type: string - enum: - - restrict - - cascade - - set_null - - no_action - - set_default - on_delete: - type: string - enum: - - restrict - - cascade - - set_null - - no_action - - set_default - TableCreateDto: - required: - - columns - - description - - name - type: object - properties: - name: - type: string - example: Air Quality - description: - type: string - example: Air Quality in Austria - columns: - type: array - items: - $ref: '#/components/schemas/ColumnCreateDto' - constraints: - $ref: '#/components/schemas/ConstraintsCreateDto' - TableBriefDto: - required: - - columns - - description - - id - - internal_name - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - description: - type: string - example: Air Quality in Austria - owner: - $ref: '#/components/schemas/UserBriefDto' - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - internal_name: - type: string - example: air_quality - UserBriefDto: - required: - - id - - username - type: object - properties: - id: - type: string - format: uuid - example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 - username: - type: string - description: Only contains lowercase characters - example: jcarberry - name: - type: string - example: Josiah Carberry - orcid: - type: string - example: 0000-0002-1825-0097 - given_name: - type: string - example: Josiah - family_name: - type: string - example: Carberry - email_verified: - type: boolean - example: true - ConstraintsDto: - type: object - properties: - uniques: - type: array - items: - type: array - items: - $ref: '#/components/schemas/ColumnDto' - checks: - type: array - items: - type: string - foreign_keys: - type: array - items: - $ref: '#/components/schemas/ForeignKeyDto' - ForeignKeyDto: - type: object - properties: - columns: - type: array - items: - $ref: '#/components/schemas/ColumnDto' - referenced_table: - $ref: '#/components/schemas/TableBriefDto' - referenced_columns: - type: array - items: - $ref: '#/components/schemas/ColumnDto' - on_update: - type: string - enum: - - restrict - - cascade - - set_null - - no_action - - set_default - on_delete: - type: string - enum: - - restrict - - cascade - - set_null - - no_action - - set_default - TableDto: - required: - - columns - - creator - - description - - id - - internal_name - - is_public - - name - - owner - - queue_name - - routing_key - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - creator: - $ref: '#/components/schemas/UserBriefDto' - owner: - $ref: '#/components/schemas/UserBriefDto' - description: - type: string - example: Air Quality in Austria - created: - type: string - format: date-time - columns: - type: array - items: - $ref: '#/components/schemas/ColumnDto' - constraints: - $ref: '#/components/schemas/ConstraintsDto' - internal_name: - type: string - example: air_quality - queue_name: - type: string - example: dbrepo/air_quality/air_quality - routing_key: - type: string - example: dbrepo/air_quality/air_quality/1 - is_public: - type: boolean - example: true - securitySchemes: - bearerAuth: - type: http - scheme: bearer - bearerFormat: JWT diff --git a/.docs/.swagger/api-upload.yaml b/.docs/.swagger/api-upload.yaml index 6f93138b86ac7312d0f05c8cf4c90e08013b4749..ed8e50707366c62c8f6ecb44170c21487e879f74 100644 --- a/.docs/.swagger/api-upload.yaml +++ b/.docs/.swagger/api-upload.yaml @@ -1,4 +1,4 @@ -openapi: 3.0.1 +openapi: 3.0.0 info: title: Database Repository Upload Service API description: Service that manages the uploads @@ -8,23 +8,23 @@ info: license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 - version: 1.3.0 + version: 1.4.9 externalDocs: description: Sourcecode Documentation url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services servers: -- url: http://localhost:1080 - description: Generated server url -- url: https://test.dbrepo.tuwien.ac.at - description: Sandbox + - url: http://localhost:1080 + description: Generated server url + - url: https://test.dbrepo.tuwien.ac.at + description: Sandbox paths: /api/upload/files: post: tags: - - upload-endpoint + - upload-endpoint summary: Uploads a file operationId: upload responses: "201": description: "Successfully uploaded a file" - security: {} \ No newline at end of file + security: { } \ No newline at end of file diff --git a/.docs/.swagger/api-user.yaml b/.docs/.swagger/api-user.yaml deleted file mode 100644 index 56bd25f5380528b7f08b44b29c83363103d9bd93..0000000000000000000000000000000000000000 --- a/.docs/.swagger/api-user.yaml +++ /dev/null @@ -1,1521 +0,0 @@ -openapi: 3.0.1 -info: - title: Database Repository User Service API - description: Service that manages the users - 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.2.0 -externalDocs: - description: Wiki Documentation - url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/wikis -servers: -- url: http://localhost:9098 - description: Generated server url -paths: - /api/user/{id}: - get: - tags: - - user-endpoint - summary: Get a user info - operationId: find - parameters: - - name: id - in: path - required: true - schema: - type: string - responses: - "404": - description: User was not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Find user is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Found user - content: - application/json: - schema: - $ref: '#/components/schemas/UserDto' - security: - - bearerAuth: [] - put: - tags: - - user-endpoint - summary: Modify user information - operationId: modify - parameters: - - name: id - in: path - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UserUpdateDto' - required: true - responses: - "202": - description: Modified user information - content: - application/json: - schema: - $ref: '#/components/schemas/UserDto' - "405": - description: Modify user is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: User attribute was not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/user/{id}/theme: - put: - tags: - - user-endpoint - summary: Modify user theme - operationId: theme - parameters: - - name: id - in: path - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UserThemeSetDto' - required: true - responses: - "405": - description: Modify user is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: User or user attribute was not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Modified user theme - content: - application/json: - schema: - $ref: '#/components/schemas/UserDto' - security: - - bearerAuth: [] - /api/user/{id}/password: - put: - tags: - - user-endpoint - summary: Modify user password - operationId: password - parameters: - - name: id - in: path - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UserPasswordDto' - required: true - responses: - "404": - description: User was not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Modify user is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Modified user password - content: - application/json: - schema: - $ref: '#/components/schemas/UserDto' - security: - - bearerAuth: [] - /api/maintenance/message/{id}: - get: - tags: - - maintenance-endpoint - summary: Find one maintenance message - operationId: find_1 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "200": - description: Get messages - content: - application/json: - schema: - $ref: '#/components/schemas/BannerMessageDto' - put: - tags: - - maintenance-endpoint - summary: Update maintenance message - operationId: update - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/BannerMessageUpdateDto' - required: true - responses: - "404": - description: Could not find message - content: - application/json: - schema: - $ref: '#/components/schemas/BannerMessageNotFoundException' - "202": - description: Updated message - content: - application/json: - schema: - $ref: '#/components/schemas/BannerMessageBriefDto' - delete: - tags: - - maintenance-endpoint - summary: Delete maintenance message - operationId: delete - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "202": - description: Deleted message - content: - application/json: {} - "404": - description: Could not find message - content: - application/json: - schema: - $ref: '#/components/schemas/BannerMessageNotFoundException' - /api/user: - get: - tags: - - user-endpoint - summary: Find all users - operationId: findAll - responses: - "200": - description: List users - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/UserBriefDto' - post: - tags: - - user-endpoint - summary: Create user - operationId: create - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/SignupRequestDto' - required: true - responses: - "409": - description: User with username already exists - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Realm or default role not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "201": - description: Created user - content: - application/json: - schema: - $ref: '#/components/schemas/UserBriefDto' - "417": - description: User with e-mail already exists - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - /api/maintenance/message: - get: - tags: - - maintenance-endpoint - summary: Find maintenance messages - operationId: list - responses: - "200": - description: List messages - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/BannerMessageDto' - post: - tags: - - maintenance-endpoint - summary: Create maintenance message - operationId: create_1 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/BannerMessageCreateDto' - required: true - responses: - "201": - description: Created message - content: - application/json: - schema: - $ref: '#/components/schemas/BannerMessageBriefDto' - /api/maintenance/message/active: - get: - tags: - - maintenance-endpoint - summary: Find active maintenance messages - operationId: active - responses: - "200": - description: List messages - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/BannerMessageBriefDto' -components: - schemas: - UserUpdateDto: - type: object - properties: - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Brown University - orcid: - type: string - example: 0000-0002-1825-0097 - ColumnBriefDto: - required: - - column_type - - database_id - - id - - internal_name - - name - - table_id - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: date - database_id: - type: integer - format: int64 - table_id: - type: integer - format: int64 - internal_name: - type: string - example: mdb_date - column_type: - type: string - example: date - enum: - - enum - - number - - decimal - - string - - text - - boolean - - date - - timestamp - - blob - ContainerDto: - required: - - created - - hash - - id - - internal_name - - name - - running - type: object - properties: - id: - type: integer - format: int64 - hash: - type: string - example: f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50 - name: - type: string - example: Air Quality - state: - type: string - example: running - enum: - - created - - restarting - - running - - paused - - exited - - dead - database: - $ref: '#/components/schemas/DatabaseDto' - running: - type: boolean - example: true - image: - $ref: '#/components/schemas/ImageBriefDto' - port: - type: integer - format: int32 - owner: - $ref: '#/components/schemas/UserBriefDto' - created: - type: string - format: date-time - example: 2021-03-12T15:26:21.678396092Z - internal_name: - type: string - example: air-quality - ip_address: - type: string - CreatorDto: - required: - - firstname - - id - - lastname - type: object - properties: - id: - type: integer - format: int64 - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Wesleyan University - orcid: - type: string - example: 0000-0002-1825-0097 - DatabaseAccessDto: - required: - - type - - user - type: object - properties: - user: - $ref: '#/components/schemas/UserDto' - type: - type: string - enum: - - read - - write_own - - write_all - created: - type: string - format: date-time - DatabaseDto: - required: - - creator - - exchange_name - - id - - internal_name - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - identifier: - $ref: '#/components/schemas/IdentifierDto' - description: - type: string - example: Weather Australia 2009-2021 - tables: - type: array - items: - $ref: '#/components/schemas/TableBriefDto' - views: - type: array - items: - $ref: '#/components/schemas/ViewBriefDto' - image: - $ref: '#/components/schemas/ImageDto' - container: - $ref: '#/components/schemas/ContainerDto' - accesses: - type: array - items: - $ref: '#/components/schemas/DatabaseAccessDto' - creator: - $ref: '#/components/schemas/UserBriefDto' - owner: - $ref: '#/components/schemas/UserBriefDto' - created: - type: string - format: date-time - exchange_name: - type: string - example: dbrepo/air_quality - internal_name: - type: string - example: weather_australia - is_public: - type: boolean - example: true - IdentifierDto: - required: - - container id - - creators - - database id - - execution - - publication_year - - query - - query_hash - - query_normalized - - result_hash - - result_number - - title - - type - - visibility - type: object - properties: - id: - type: integer - format: int64 - type: - type: string - enum: - - database - - subset - title: - type: string - example: "Airquality Stephansplatz, Vienna, Austria" - description: - type: string - example: "Air quality reports at Stephansplatz, Vienna" - query: - type: string - example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ - \ = \"09:STEF\"" - execution: - type: string - format: date-time - visibility: - type: string - example: everyone - enum: - - everyone - - self - doi: - type: string - example: 10.1038/nphys1170 - publisher: - type: string - example: TU Wien - language: - type: string - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - license: - $ref: '#/components/schemas/LicenseDto' - creators: - type: array - items: - $ref: '#/components/schemas/CreatorDto' - created: - type: string - format: date-time - container id: - type: integer - format: int64 - example: 1 - database id: - type: integer - format: int64 - example: 1 - query id: - type: integer - format: int64 - example: 1 - query_normalized: - type: string - example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ - \ = \"09:STEF\"" - related: - type: array - items: - $ref: '#/components/schemas/RelatedIdentifierDto' - query_hash: - type: string - description: query hash in sha512 - result_hash: - type: string - result_number: - type: integer - format: int64 - example: 1 - publication_day: - type: integer - format: int32 - example: 15 - publication_month: - type: integer - format: int32 - example: 12 - publication_year: - type: integer - format: int32 - example: 2022 - last_modified: - type: string - format: date-time - ImageBriefDto: - required: - - id - - registry - - repository - - tag - type: object - properties: - id: - type: integer - format: int64 - registry: - type: string - example: docker.io/library - repository: - type: string - example: mariadb - tag: - type: string - example: "10.5" - ImageDateDto: - required: - - database_format - - example - - has_time - - id - - unix_format - type: object - properties: - id: - type: integer - format: int64 - example: - type: string - example: 30.01.2022 - database_format: - type: string - example: '%d.%c.%Y' - unix_format: - type: string - example: dd.MM.YYYY - has_time: - type: boolean - example: false - created_at: - type: string - format: date-time - ImageDto: - required: - - default_port - - dialect - - driver_class - - id - - jdbc_method - - registry - - repository - - tag - type: object - properties: - id: - type: integer - format: int64 - registry: - type: string - example: docker.io/library - repository: - type: string - example: mariadb - tag: - type: string - example: "10.5" - dialect: - type: string - example: org.hibernate.dialect.MariaDBDialect - hash: - type: string - example: sha256:c5ec7353d87dfc35067e7bffeb25d6a0d52dad41e8b7357213e3b12d6e7ff78e - compiled: - type: string - format: date-time - example: 2021-03-12T15:26:21.678396092Z - size: - type: integer - example: 314295447 - driver_class: - type: string - example: org.mariadb.jdbc.Driver - date_formats: - type: array - items: - $ref: '#/components/schemas/ImageDateDto' - jdbc_method: - type: string - example: mariadb - default_port: - type: integer - format: int32 - example: 3306 - LicenseDto: - required: - - identifier - - uri - type: object - properties: - identifier: - type: string - example: MIT - uri: - type: string - example: https://opensource.org/licenses/MIT - RelatedIdentifierDto: - required: - - created - - id - - value - type: object - properties: - id: - type: integer - format: int64 - value: - type: string - example: 10.70124/dc4zh-9ce78 - type: - type: string - example: DOI - enum: - - DOI - - URL - - URN - - ARK - - arXiv - - bibcode - - EAN13 - - EISSN - - Handle - - IGSN - - ISBN - - ISTC - - LISSN - - LSID - - PMID - - PURL - - UPC - - w3id - relation: - type: string - example: Cites - enum: - - IsCitedBy - - Cites - - IsSupplementTo - - IsSupplementedBy - - IsContinuedBy - - Continues - - IsDescribedBy - - Describes - - HasMetadata - - IsMetadataFor - - HasVersion - - IsVersionOf - - IsNewVersionOf - - IsPreviousVersionOf - - IsPartOf - - HasPart - - IsPublishedIn - - IsReferencedBy - - References - - IsDocumentedBy - - Documents - - IsCompiledBy - - Compiles - - IsVariantFormOf - - IsOriginalFormOf - - IsIdenticalTo - - IsReviewedBy - - Reviews - - IsDerivedFrom - - IsSourceOf - - IsRequiredBy - - Requires - - IsObsoletedBy - - Obsoletes - created: - type: string - format: date-time - last_modified: - type: string - format: date-time - TableBriefDto: - required: - - columns - - description - - id - - internal_name - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - description: - type: string - example: Air Quality in Austria - owner: - $ref: '#/components/schemas/UserBriefDto' - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - internal_name: - type: string - example: air_quality - UserAttributeDto: - type: object - properties: - name: - type: string - example: theme_dark - value: - type: string - example: "true" - UserBriefDto: - required: - - id - - username - type: object - properties: - id: - type: string - format: uuid - example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 - username: - type: string - description: Only contains lowercase characters - example: jcarberry - name: - type: string - example: Josiah Carberry - orcid: - type: string - example: 0000-0002-1825-0097 - given_name: - type: string - example: Josiah - family_name: - type: string - example: Carberry - email_verified: - type: boolean - example: true - UserDto: - required: - - email - - email_verified - - id - - username - type: object - properties: - id: - type: string - format: uuid - example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 - username: - type: string - description: Only contains lowercase characters - example: jcarberry - name: - type: string - example: Josiah Carberry - orcid: - type: string - example: 0000-0002-1825-0097 - attributes: - type: array - items: - $ref: '#/components/schemas/UserAttributeDto' - 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 - example: jcarberry@brown.edu - given_name: - type: string - example: Josiah - family_name: - type: string - example: Carberry - email_verified: - type: boolean - example: true - ViewBriefDto: - required: - - created - - creator - - id - - internal_name - - name - - query - - vdbid - type: object - properties: - id: - type: integer - format: int64 - vdbid: - type: integer - format: int64 - name: - type: string - example: Air Quality - query: - type: string - example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC - created: - type: string - format: date-time - creator: - $ref: '#/components/schemas/UserDto' - internal_name: - type: string - example: air_quality - is_public: - type: boolean - example: true - initial_view: - type: boolean - description: True if it is the default view for the database - example: true - last_modified: - type: string - format: date-time - ApiErrorDto: - required: - - code - - message - - status - type: object - properties: - status: - type: string - example: STATUS - enum: - - 100 CONTINUE - - 101 SWITCHING_PROTOCOLS - - 102 PROCESSING - - 103 EARLY_HINTS - - 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 - example: Error message - code: - type: string - example: error.service.code - UserThemeSetDto: - required: - - theme_dark - type: object - properties: - theme_dark: - type: boolean - example: true - UserPasswordDto: - required: - - password - type: object - properties: - password: - type: string - BannerMessageUpdateDto: - required: - - message - - type - type: object - properties: - type: - type: string - enum: - - error - - warning - - info - message: - type: string - example: Maintenance starts on 8am on Monday - link: - type: string - example: https://example.com - link_text: - type: string - example: More - display_start: - type: string - format: date-time - display_end: - type: string - format: date-time - BannerMessageNotFoundException: - type: object - properties: - cause: - type: object - properties: - stackTrace: - type: array - items: - type: object - properties: - classLoaderName: - type: string - moduleName: - type: string - moduleVersion: - type: string - methodName: - type: string - fileName: - type: string - lineNumber: - type: integer - format: int32 - nativeMethod: - type: boolean - className: - type: string - message: - type: string - suppressed: - type: array - items: - type: object - properties: - stackTrace: - type: array - items: - type: object - properties: - classLoaderName: - type: string - moduleName: - type: string - moduleVersion: - type: string - methodName: - type: string - fileName: - type: string - lineNumber: - type: integer - format: int32 - nativeMethod: - type: boolean - className: - type: string - message: - type: string - localizedMessage: - type: string - localizedMessage: - type: string - stackTrace: - type: array - items: - type: object - properties: - classLoaderName: - type: string - moduleName: - type: string - moduleVersion: - type: string - methodName: - type: string - fileName: - type: string - lineNumber: - type: integer - format: int32 - nativeMethod: - type: boolean - className: - type: string - message: - type: string - suppressed: - type: array - items: - type: object - properties: - stackTrace: - type: array - items: - type: object - properties: - classLoaderName: - type: string - moduleName: - type: string - moduleVersion: - type: string - methodName: - type: string - fileName: - type: string - lineNumber: - type: integer - format: int32 - nativeMethod: - type: boolean - className: - type: string - message: - type: string - localizedMessage: - type: string - localizedMessage: - type: string - BannerMessageBriefDto: - required: - - message - - type - type: object - properties: - type: - type: string - enum: - - error - - warning - - info - message: - type: string - example: Maintenance starts on 8am on Monday - link: - type: string - example: https://example.com - link_text: - type: string - example: More - SignupRequestDto: - required: - - email - - password - - username - type: object - properties: - username: - pattern: "^[a-z0-9]{3,}$" - type: string - example: user - email: - type: string - example: user@example.com - password: - type: string - BannerMessageCreateDto: - required: - - message - - type - type: object - properties: - type: - type: string - enum: - - error - - warning - - info - message: - type: string - example: Maintenance starts on 8am on Monday - link: - type: string - example: https://example.com - link_text: - type: string - example: More - display_start: - type: string - format: date-time - display_end: - type: string - format: date-time - BannerMessageDto: - required: - - id - - message - - type - type: object - properties: - id: - type: integer - format: int64 - type: - type: string - enum: - - error - - warning - - info - message: - type: string - example: Maintenance starts on 8am on Monday - link: - type: string - example: https://example.com - link_text: - type: string - example: More - display_start: - type: string - format: date-time - display_end: - type: string - format: date-time - securitySchemes: - bearerAuth: - type: http - scheme: bearer - bearerFormat: JWT diff --git a/.docs/.swagger/fetch.sh b/.docs/.swagger/fetch.sh deleted file mode 100644 index 378878f0ad59e76184a4ed1febf6784e34d4256d..0000000000000000000000000000000000000000 --- a/.docs/.swagger/fetch.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -# This script is executed before pushing to the pipeline for the moment. -# @author: Martin Weise - -declare -A services -services[5000]=analyse -services[9050]=mirror -services[9093]=data -services[9099]=metadata - -function retrieve () { - if [[ "$2" == analyse ]]; then - echo "... retrieve json api from localhost:$1" - wget "http://localhost:$1/api-$2.json" -O "./.docs/.swagger/api-$2.yaml" -q - else - echo "... retrieve yaml api from localhost:$1" - wget "http://localhost:$1/v3/api-docs.yaml" -O "./.docs/.swagger/api-$2.yaml" -q - fi -} - -for key in "${!services[@]}"; do - echo "Generating ${services[$key]} API" - retrieve "$key" "${services[$key]}" -done \ No newline at end of file diff --git a/.docs/.swagger/generate.sh b/.docs/.swagger/generate.sh deleted file mode 100644 index 5752f1578ea0e538844b5b5acfddd7a6d86e1921..0000000000000000000000000000000000000000 --- a/.docs/.swagger/generate.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -# clean up -echo "clean up ./dist ./site" -rm -rf ./dist ./site - -# ensure target directories are present -echo "ensure target directory ./site are present" -mkdir -p ./site - -# extract static site -echo "extract static site .docs/.swagger/dist.tar.gz" -tar xzf .docs/.swagger/dist.tar.gz -for service in "analyse" "mirror" "data" "metadata" "upload"; do - mkdir -p ./site/$service - echo "extract static site ./dist -> ./site/$service" - cp -r ./dist/* ./site/$service - echo "placing .docs/.swagger/api-$service.yaml -> ./site/$service/api.yaml" - cp ".docs/.swagger/api-$service.yaml" "./site/$service/api.yaml" -done \ No newline at end of file diff --git a/.docs/generate_swagger.sh b/.docs/.swagger/swagger-generate.sh similarity index 72% rename from .docs/generate_swagger.sh rename to .docs/.swagger/swagger-generate.sh index 2c4fa9f572cc8a8ed84e52ff8596d656c5a65185..1469a23bd056649994670c213782686898745abb 100644 --- a/.docs/generate_swagger.sh +++ b/.docs/.swagger/swagger-generate.sh @@ -9,23 +9,14 @@ services[3305]=sidecar function retrieve () { if [[ "$2" == analyse ]] || [[ "$2" == search ]] || [[ "$2" == sidecar ]]; then echo "... retrieve json api from localhost:$1" - curl -sSL "http://localhost:$1/api-$2.json" | yq -y > "./.docs/api-$2.yaml" + curl -sSL "http://localhost:$1/api-$2.json" | yq -y > "./.docs/.swagger/api-$2.yaml" else echo "... retrieve yaml api from localhost:$1" - curl -sSL "http://localhost:$1/v3/api-docs.yaml" > "./.docs/api-$2.yaml" + curl -sSL "http://localhost:$1/v3/api-docs.yaml" > "./.docs/.swagger/api-$2.yaml" fi } -function version () { - echo "... version to ${TAG}" - REGEX="s/dbrepo-latest/${TAG}/g" - sed -i $REGEX ./.docs/api-$1.yaml -} - for key in "${!services[@]}"; do echo "Generating ${services[$key]} API" retrieve "$key" "${services[$key]}" - version "${services[$key]}" done -echo "Generating upload API" -version upload \ No newline at end of file diff --git a/.docs/.swagger/swagger-site.sh b/.docs/.swagger/swagger-site.sh new file mode 100644 index 0000000000000000000000000000000000000000..98b8056a7773ac0288b3a6f7eaede10444ad0836 --- /dev/null +++ b/.docs/.swagger/swagger-site.sh @@ -0,0 +1,27 @@ +#!/bin/bash +declare -A services +services[1080]=upload +services[4000]=search +services[5000]=analyse +services[9093]=data +services[9099]=metadata +services[3305]=sidecar + +# clean up +echo "clean up ./dist ./site" +rm -rf ./dist ./site + +# ensure target directories are present +echo "ensure target directory ./site are present" +mkdir -p ./site + +# extract static site +echo "extract static site .docs/.swagger/dist.tar.gz" +tar xzf .docs/.swagger/dist.tar.gz +for key in "${!services[@]}"; do + mkdir -p ./site/${services[$key]} + echo "extract static site ./dist -> ./site/${services[$key]}" + cp -r ./dist/* ./site/${services[$key]} + echo "placing .docs/.swagger/api-${services[$key]}.yaml -> ./site/${services[$key]}/api.yaml" + cp ".docs/.swagger/api-${services[$key]}.yaml" "./site/${services[$key]}/api.yaml" +done \ No newline at end of file diff --git a/.docs/.swagger/swagger-version.sh b/.docs/.swagger/swagger-version.sh new file mode 100644 index 0000000000000000000000000000000000000000..1d400055baa6a7aec96e59ed9d396e0ef4de93dd --- /dev/null +++ b/.docs/.swagger/swagger-version.sh @@ -0,0 +1,17 @@ +#!/bin/bash +declare -A services +services[1080]=upload +services[4000]=search +services[5000]=analyse +services[9093]=data +services[9099]=metadata +services[3305]=sidecar + +function version () { + sed -i "s/dbrepo-latest/${TAG}/g" "./.docs/.swagger/api-$1.yaml" +} + +for key in "${!services[@]}"; do + echo "Version ${services[$key]} API" + version "${services[$key]}" +done diff --git a/.docs/api-analyse.yaml b/.docs/api-analyse.yaml deleted file mode 100644 index b05862a7fef01438b9d7603131394a9f5fd70d85..0000000000000000000000000000000000000000 --- a/.docs/api-analyse.yaml +++ /dev/null @@ -1,105 +0,0 @@ -components: - schemas: {} -externalDocs: - description: Sourcecode Documentation - url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services -info: - contact: - email: andreas.rauber@tuwien.ac.at - name: Prof. Andreas Rauber - description: Service that analyses data structures - license: - name: Apache 2.0 - url: https://www.apache.org/licenses/LICENSE-2.0 - title: Database Repository Analyse Service API - version: 1.4.0 -openapi: 3.0.0 -paths: - /api/analyse/determinedt: - post: - consumes: - - application/json - description: This is a simple API which returns the datatypes of a (path) csv - file - parameters: - - description: to-do description - in: body - name: body - required: true - schema: - properties: - enum: - example: true - type: boolean - enum_tol: - example: 0.1 - filename: - example: sample.csv - type: string - separator: - example: ',' - type: string - type: object - produces: - - application/json - responses: - '200': - description: OK - '405': - description: Invalid input - summary: Determine datatypes - /api/analyse/determinepk: - post: - consumes: - - application/json - description: This is a simple API which returns the primary keys + ranking of - a (path) csv file - parameters: - - description: to-do description - in: body - name: body - required: true - schema: - properties: - filepath: - example: /data/testdt08.csv - type: string - seperator: - example: ',' - type: string - type: object - produces: - - application/json - responses: - '200': - description: OK - '405': - description: Invalid input - summary: Determine primary keys - /health: - get: - consumes: - - application/json - description: This is a simple API which checks if the application is healthy - parameters: - - description: to-do description - in: body - name: body - required: true - schema: - properties: - status: - example: UP - type: string - type: object - produces: - - application/json - responses: - '200': - description: OK - summary: Check if application is running -servers: - - description: Generated server url - url: http://localhost:5000 - - description: Sandbox - url: https://dbrepo2.tuwien.ac.at diff --git a/.docs/api-data.yaml b/.docs/api-data.yaml deleted file mode 100644 index e50267b7b7fdb0bc532a2deab644fef177abbd2e..0000000000000000000000000000000000000000 --- a/.docs/api-data.yaml +++ /dev/null @@ -1,26 +0,0 @@ -openapi: 3.0.1 -info: - title: Database Repository Data Service API - description: Service that manages the data - 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.4.0 -externalDocs: - description: Sourcecode Documentation - url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services -servers: -- url: http://localhost:9093 - description: Generated server url -- url: https://test.dbrepo.tuwien.ac.at - description: Sandbox -paths: {} -components: - securitySchemes: - bearerAuth: - type: http - scheme: bearer - bearerFormat: JWT diff --git a/.docs/api-metadata.yaml b/.docs/api-metadata.yaml deleted file mode 100644 index 547c365fd6d1df5b40a744e6d902fbcb77ab467a..0000000000000000000000000000000000000000 --- a/.docs/api-metadata.yaml +++ /dev/null @@ -1,8115 +0,0 @@ -openapi: 3.0.1 -info: - title: Database Repository Metadata Service API - description: Service that manages the metadata - 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.4.0 -externalDocs: - description: Sourcecode Documentation - url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services -servers: -- url: http://localhost:9099 - description: Generated server url -- url: https://test.dbrepo.tuwien.ac.at - description: Sandbox -paths: - /api/database/{databaseId}/table/{tableId}/history: - get: - tags: - - table-history-endpoint - summary: Find all history - operationId: getAll - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: tableId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "200": - description: Find table history successfully - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/TableHistoryDto' - "404": - description: "Table, database or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Table history query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Query store failed to query table history - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Find table history is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - head: - tags: - - table-history-endpoint - summary: Find all history - operationId: getAll_1 - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: tableId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "200": - description: Find table history successfully - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/TableHistoryDto' - "404": - description: "Table, database or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Table history query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Query store failed to query table history - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Find table history is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{databaseId}/table/{tableId}/data: - get: - tags: - - table-data-endpoint - summary: Find data - operationId: getAll_2 - parameters: - - 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 - - name: sortDirection - in: query - required: false - schema: - type: string - enum: - - asc - - desc - - name: sortColumn - in: query - required: false - schema: - type: string - responses: - "404": - description: Table or database could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Get table data successfully - content: - '*/*': - schema: - $ref: '#/components/schemas/QueryResultDto' - "422": - description: Could not import csv via sidecar - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Table data is malformed or image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - post: - tags: - - table-data-endpoint - summary: Insert data - operationId: insert - parameters: - - 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: - "202": - description: Inserted data successfully - content: - '*/*': - schema: - type: object - "404": - description: Table or database could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Insert table data is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - delete: - tags: - - table-data-endpoint - summary: Delete data - operationId: delete_6 - parameters: - - 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/TableCsvDeleteDto' - required: true - responses: - "202": - description: Deleted table data successfully - "404": - description: Table or database could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Table data or query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - head: - tags: - - table-data-endpoint - summary: Find data - operationId: getAll_3 - parameters: - - 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 - - name: sortDirection - in: query - required: false - schema: - type: string - enum: - - asc - - desc - - name: sortColumn - in: query - required: false - schema: - type: string - responses: - "404": - description: Table or database could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Get table data successfully - content: - '*/*': - schema: - $ref: '#/components/schemas/QueryResultDto' - "422": - description: Could not import csv via sidecar - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Table data is malformed or image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/user/{id}: - get: - tags: - - user-endpoint - summary: Get a user info - operationId: find - parameters: - - name: id - in: path - required: true - schema: - type: string - format: uuid - responses: - "404": - description: User was not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Find user is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Found user - content: - application/json: - schema: - $ref: '#/components/schemas/UserDto' - security: - - bearerAuth: [] - put: - tags: - - user-endpoint - summary: Modify user information - operationId: modify - parameters: - - name: id - in: path - required: true - schema: - type: string - format: uuid - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UserUpdateDto' - required: true - responses: - "400": - description: Modify user query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Modified user information - content: - application/json: - schema: - $ref: '#/components/schemas/UserDto' - "403": - description: Modify user is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Foreign user modification - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: User attribute was not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/user/{id}/theme: - put: - tags: - - user-endpoint - summary: Modify user theme - operationId: theme - parameters: - - name: id - in: path - required: true - schema: - type: string - format: uuid - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UserThemeSetDto' - required: true - responses: - "404": - description: User or user attribute was not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Modify user is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Modified user theme - content: - application/json: - schema: - $ref: '#/components/schemas/UserDto' - "405": - description: Foreign user modification - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/user/{id}/password: - put: - tags: - - user-endpoint - summary: Modify user password - operationId: password - parameters: - - name: id - in: path - required: true - schema: - type: string - format: uuid - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/UserPasswordDto' - required: true - responses: - "202": - description: Modified user password - content: - application/json: - schema: - $ref: '#/components/schemas/UserDto' - "404": - description: User was not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Modify is not allowed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Foreign user modification - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Authentication service does not respond - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/semantic/ontology/{id}: - get: - tags: - - ontology-endpoint - summary: Find one ontology - operationId: find_1 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "404": - description: Could not find ontology - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Find one ontology - content: - application/json: - schema: - $ref: '#/components/schemas/OntologyDto' - put: - tags: - - ontology-endpoint - summary: Update an ontology - operationId: update - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/OntologyModifyDto' - required: true - responses: - "404": - description: Could not find ontology - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Updated ontology successfully - content: - application/json: - schema: - $ref: '#/components/schemas/OntologyDto' - security: - - bearerAuth: [] - delete: - tags: - - ontology-endpoint - summary: Delete an ontology - operationId: delete - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "404": - description: Could not find ontology - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Deleted ontology successfully - content: - application/json: {} - security: - - bearerAuth: [] - /api/maintenance/message/{id}: - get: - tags: - - maintenance-endpoint - summary: Find one maintenance message - operationId: find_4 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "404": - description: Could not find message - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Get messages - content: - application/json: - schema: - $ref: '#/components/schemas/BannerMessageDto' - put: - tags: - - maintenance-endpoint - summary: Update maintenance message - operationId: update_1 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/BannerMessageUpdateDto' - required: true - responses: - "404": - description: Could not find message - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Updated message - content: - application/json: - schema: - $ref: '#/components/schemas/BannerMessageBriefDto' - delete: - tags: - - maintenance-endpoint - summary: Delete maintenance message - operationId: delete_2 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "404": - description: Could not find message - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Deleted message - content: - application/json: {} - /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: - "404": - description: Image could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Found image - content: - application/json: - schema: - $ref: '#/components/schemas/ImageDto' - put: - tags: - - image-endpoint - summary: Update some image - operationId: update_2 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ImageChangeDto' - required: true - responses: - "202": - description: Updated image successfully - content: - application/json: - schema: - $ref: '#/components/schemas/ImageDto' - "404": - description: Image could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - delete: - tags: - - image-endpoint - summary: Delete some image - operationId: delete_3 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "404": - description: Image could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Deleted image successfully - security: - - bearerAuth: [] - /api/database/{id}/visibility: - put: - tags: - - database-endpoint - summary: Update database - operationId: visibility - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseModifyVisibilityDto' - required: true - responses: - "202": - description: Visibility modified successfully - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseDto' - "404": - description: Database could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Visibility modification is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{id}/transfer: - put: - tags: - - database-endpoint - summary: Transfer database - operationId: transfer - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseTransferDto' - required: true - responses: - "202": - description: Transfer of ownership was successful - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseDto' - "404": - description: Database or user could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Transfer of ownership is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{id}/table/{tableId}/column/{columnId}: - put: - tags: - - table-column-endpoint - summary: Update a table column semantic mapping - operationId: update_3 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - - name: tableId - in: path - required: true - schema: - type: integer - format: int64 - - name: columnId - in: path - required: true - schema: - type: integer - format: int64 - - name: Authorization - in: header - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ColumnSemanticsUpdateDto' - required: true - responses: - "404": - description: Table or database could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Updated column semantics successfully - content: - application/json: - schema: - $ref: '#/components/schemas/ColumnDto' - "400": - description: Update semantic concept query is malformed or update unit of - measurement query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{id}/access/{userId}: - put: - tags: - - access-endpoint - summary: Modify access to some database - operationId: update_4 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - - name: userId - in: path - required: true - schema: - type: string - format: uuid - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseModifyAccessDto' - required: true - responses: - "403": - description: Modify access not permitted when no access is granted in the - first place - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Database or user not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Modify access succeeded - "400": - description: Modify access query or database connection is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - post: - tags: - - access-endpoint - summary: Give access to some database - operationId: create_6 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - - name: userId - in: path - required: true - schema: - type: string - format: uuid - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseGiveAccessDto' - required: true - responses: - "405": - description: Granting access not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Failed giving access - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Database or user not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Granting access query or database connection is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Granting access succeeded - security: - - bearerAuth: [] - delete: - tags: - - access-endpoint - summary: Revoke access to some database - operationId: revoke - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - - name: userId - in: path - required: true - schema: - type: string - format: uuid - responses: - "403": - description: Revoke of access not permitted as no access was found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Revoked access successfully - "400": - description: Modify access query or database connection is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "User, database with access was not found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{databaseId}/query/{queryId}: - get: - tags: - - store-endpoint - summary: Find some query - operationId: find_7 - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: queryId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "501": - description: Image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "504": - description: Query store failed to select query - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: List queries - content: - application/json: - schema: - $ref: '#/components/schemas/QueryDto' - "405": - description: Find query is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Database, query or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - put: - tags: - - store-endpoint - summary: Persist some query - operationId: persist - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: queryId - in: path - required: true - schema: - type: integer - format: int64 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/QueryPersistDto' - required: true - responses: - "405": - description: Persist query is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "412": - description: Query is already persisted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Persist query successful - content: - application/json: - schema: - $ref: '#/components/schemas/QueryDto' - "400": - description: Image not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Not allowed to persist query - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Database, query or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/user: - get: - tags: - - user-endpoint - summary: Find all users - operationId: findAll - responses: - "200": - description: List users - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/UserBriefDto' - post: - tags: - - user-endpoint - summary: Create user - operationId: create - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/SignupRequestDto' - required: true - responses: - "404": - description: default role not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Parameters are not well-formed (likely email) - content: - application/json: {} - "201": - description: Created user - content: - application/json: - schema: - $ref: '#/components/schemas/UserBriefDto' - "417": - description: User with e-mail already exists - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: User with username already exists - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - /api/semantic/ontology: - get: - tags: - - ontology-endpoint - summary: List all ontologies - operationId: findAll_1 - responses: - "200": - description: List all ontologies - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/OntologyDto' - post: - tags: - - ontology-endpoint - summary: Register a new ontology - operationId: create_1 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/OntologyCreateDto' - required: true - responses: - "201": - description: Registered ontology successfully - content: - application/json: - schema: - $ref: '#/components/schemas/OntologyDto' - security: - - bearerAuth: [] - /api/maintenance/message: - get: - tags: - - maintenance-endpoint - summary: Find maintenance messages - operationId: list - responses: - "200": - description: List messages - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/BannerMessageDto' - post: - tags: - - maintenance-endpoint - summary: Create maintenance message - operationId: create_2 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/BannerMessageCreateDto' - required: true - responses: - "201": - description: Created message - content: - application/json: - schema: - $ref: '#/components/schemas/BannerMessageBriefDto' - /api/image: - get: - tags: - - image-endpoint - summary: Find all images - operationId: findAll_2 - responses: - "200": - description: List images - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/ContainerImage' - post: - tags: - - image-endpoint - summary: Create image - operationId: create_3 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ImageCreateDto' - required: true - responses: - "201": - description: Created image - content: - application/json: - schema: - $ref: '#/components/schemas/ImageDto' - "400": - description: Image specification is invalid - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Image already exists - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/identifier: - get: - tags: - - identifier-endpoint - summary: Find identifiers - operationId: list_1 - parameters: - - name: dbid - in: query - required: false - schema: - type: integer - format: int64 - - name: qid - in: query - required: false - schema: - type: integer - format: int64 - - name: vid - in: query - required: false - schema: - type: integer - format: int64 - - name: tid - in: query - required: false - schema: - type: integer - format: int64 - - name: type - in: query - required: false - schema: - type: string - enum: - - database - - subset - - table - - view - responses: - "200": - description: List identifiers - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/IdentifierDto' - post: - tags: - - identifier-endpoint - summary: Create identifier - operationId: create_4 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/IdentifierSaveDto' - required: true - responses: - "503": - description: DataCite system did not respond - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "201": - description: Created identifier - content: - application/json: - schema: - $ref: '#/components/schemas/IdentifierDto' - "400": - description: Identifier form contains invalid request data - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Failed to find database, table or view" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "204": - description: Identifier could not be created - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Insufficient access rights or authorities - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Identifier for this resource already exists - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Creating identifier not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "406": - description: Creating identifier not allowed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "502": - description: Query information could not be retrieved - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database: - get: - tags: - - database-endpoint - summary: List databases - operationId: list_2 - parameters: - - name: filter - in: query - required: false - schema: - type: string - responses: - "404": - description: User not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: List of databases - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/DatabaseBriefDto' - post: - tags: - - database-endpoint - summary: Create database - operationId: create_5 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseCreateDto' - required: true - responses: - "409": - description: Query store could not be created - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Database create permission is missing or grant permissions - at broker service failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Container, user or database could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Database create query is malformed or image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "201": - description: Created a new database - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseBriefDto' - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - head: - tags: - - database-endpoint - summary: Count databases - operationId: count - parameters: - - name: filter - in: query - required: false - schema: - type: string - responses: - "404": - description: User not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Count databases - content: - '*/*': - schema: - type: array - items: - $ref: '#/components/schemas/DatabaseDto' - /api/database/{databaseId}/view: - get: - tags: - - view-endpoint - summary: Find all views - operationId: findAll_3 - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "404": - description: Database or user could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Find views successfully - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/ViewBriefDto' - security: - - bearerAuth: [] - post: - tags: - - view-endpoint - summary: Create a view - operationId: create_7 - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ViewCreateDto' - required: true - responses: - "423": - description: Create view resulted in an invalid query statement - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "201": - description: Create view successfully - content: - application/json: - schema: - $ref: '#/components/schemas/ViewBriefDto' - "400": - description: Create view query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "401": - description: Credentials missing - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Database or user could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Create view is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Credentials missing - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{databaseId}/table: - get: - tags: - - table-endpoint - summary: List all tables - operationId: list_3 - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "200": - description: List tables - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/TableBriefDto' - "404": - description: Database could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: List tables not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - post: - tags: - - table-endpoint - summary: Create a table - operationId: create_8 - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/TableCreateDto' - required: true - responses: - "403": - description: Create table not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Create table query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Database, container or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "201": - description: Created a new table - content: - application/json: - schema: - $ref: '#/components/schemas/TableBriefDto' - "409": - description: Create table conflicts with existing table name - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{databaseId}/table/{tableId}/data/import: - post: - tags: - - table-data-endpoint - summary: Insert data from csv - operationId: importCsv - parameters: - - 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: - "202": - description: Import table data successfully - "404": - description: Table or database could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Table data is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "422": - description: Could not import csv via sidecar - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{databaseId}/query: - get: - tags: - - store-endpoint - summary: Find queries - operationId: findAll_4 - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: persisted - in: query - required: false - schema: - type: boolean - responses: - "501": - description: Image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "504": - description: Query store failed to select query - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: List queries - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/QueryBriefDto' - "404": - description: "Database, container or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "405": - description: Find all queries is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "423": - description: Selection of time-versioned query resulted in an invalid query - statement - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - post: - tags: - - query-endpoint - summary: Execute query - operationId: execute - parameters: - - 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 - - name: sortDirection - in: query - required: false - schema: - type: string - enum: - - asc - - desc - - name: sortColumn - in: query - required: false - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ExecuteStatementDto' - required: true - responses: - "403": - description: Execute query not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Could not store query in query store - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Executed query - content: - application/json: - schema: - $ref: '#/components/schemas/QueryResultDto' - "404": - description: "Database, query or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "417": - description: Could not parse columns - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/container: - get: - tags: - - container-endpoint - summary: Find all containers - operationId: findAll_5 - parameters: - - name: limit - in: query - required: false - schema: - type: integer - format: int32 - responses: - "200": - description: List containers - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/ContainerBriefDto' - post: - tags: - - container-endpoint - summary: Create container - operationId: create_9 - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ContainerCreateRequestDto' - required: true - responses: - "201": - description: Created a new container - content: - application/json: - schema: - $ref: '#/components/schemas/ContainerBriefDto' - "404": - description: Container image or user could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Container name already exists - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/semantic/unit: - get: - tags: - - semantics-endpoint - summary: List semantic units - operationId: findAllUnits - responses: - "200": - description: Find all semantic units - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/UnitDto' - /api/semantic/ontology/{id}/entity: - get: - tags: - - ontology-endpoint - summary: Find entities - operationId: find_2 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - - name: label - in: query - required: false - schema: - type: string - - name: uri - in: query - required: false - schema: - type: string - responses: - "417": - description: Generated query or uri is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Filter params are invalid - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Could not find ontology - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Found entities - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/EntityDto' - "422": - description: Ontology does not have rdf or sparql endpoint - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/semantic/database/{databaseId}/table/{tableId}: - get: - tags: - - semantics-endpoint - summary: Suggest table semantics - operationId: analyseTable - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: tableId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "417": - description: Generated query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "422": - description: Ontology does not have rdf or sparql endpoint - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Suggested table semantics successfully - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/TableColumnEntityDto' - "404": - description: Could not find the table - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/semantic/database/{databaseId}/table/{tableId}/column/{columnId}: - get: - tags: - - semantics-endpoint - summary: Suggest table column semantics - operationId: analyseTableColumn - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: tableId - in: path - required: true - schema: - type: integer - format: int64 - - name: columnId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "417": - description: Generated query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Suggested table column semantics successfully - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/TableColumnEntityDto' - "404": - description: Could not find the table column - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "422": - description: Ontology does not have rdf or sparql endpoint - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/semantic/concept: - get: - tags: - - semantics-endpoint - summary: List semantic concepts - operationId: findAllConcepts - responses: - "200": - description: Find all semantic concepts - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/ConceptDto' - /api/pid/{pid}: - get: - tags: - - persistence-endpoint - summary: Find some identifier - operationId: find_3 - parameters: - - name: pid - in: path - required: true - schema: - type: integer - format: int64 - - name: Accept - in: header - required: true - schema: - type: string - responses: - "409": - description: Exported resource was not found - content: - text/csv: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "422": - description: Failed to retrieve from database sidecar - content: - text/csv: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: "Identifier could not be exported, the requested style is not\ - \ known" - content: - text/bibliography: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "410": - description: Failed to retrieve from S3 endpoint - content: - text/csv: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Found identifier successfully - content: - application/json: - schema: - $ref: '#/components/schemas/IdentifierDto' - text/csv: {} - text/xml: {} - text/bibliography: {} - text/bibliography; style=apa: {} - text/bibliography; style=ieee: {} - text/bibliography; style=bibtex: {} - "404": - description: Identifier could not be found - content: - text/csv: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Identifier could not exported from database as it is not reachable - content: - text/csv: - schema: - $ref: '#/components/schemas/ApiErrorDto' - /api/oai: - get: - tags: - - metadata-endpoint - summary: Get the record - operationId: identify_1_1_1_1 - parameters: - - name: verb - in: query - - name: parameters - in: query - required: true - schema: - $ref: '#/components/schemas/OaiListIdentifiersParameters' - responses: - "200": - description: List containers - content: - text/xml: {} - /api/maintenance/message/active: - get: - tags: - - maintenance-endpoint - summary: Find active maintenance messages - operationId: active - responses: - "200": - description: List messages - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/BannerMessageBriefDto' - /api/identifier/retrieve: - get: - tags: - - identifier-endpoint - summary: Retrieve metadata from identifier - operationId: retrieve - parameters: - - name: url - in: query - required: true - schema: - type: string - responses: - "200": - description: Retrieved metadata from identifier - content: - application/json: - schema: - $ref: '#/components/schemas/IdentifierDto' - /api/database/{id}: - get: - tags: - - database-endpoint - summary: Find some database - operationId: findById_1 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "404": - description: Database or exchange could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the broker service could not be established - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Database found successfully - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseDto' - security: - - bearerAuth: [] - /api/database/{id}/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: tableId - in: path - required: true - schema: - type: integer - format: int64 - - name: timestamp - in: query - required: false - schema: - type: string - format: date-time - responses: - "403": - description: Operation is not allowed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "201": - description: Created identifier - content: - application/json: - schema: - $ref: '#/components/schemas/IdentifierDto' - "410": - description: Blob storage operation could not be completed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Images is not supported or table/query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "422": - description: Sidecar operation could not be completed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Table, database or user was not found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Database connection could not be established - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{id}/access: - get: - tags: - - access-endpoint - summary: Check access to some database - operationId: find_5 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "403": - description: No access to this database - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Database not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Found database access - content: - application/json: - schema: - $ref: '#/components/schemas/DatabaseAccessDto' - security: - - bearerAuth: [] - /api/database/{databaseId}/view/{viewId}: - get: - tags: - - view-endpoint - summary: Find one view - operationId: find_6 - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: viewId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "403": - description: Find view is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Database, view or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Find view successfully - content: - application/json: - schema: - $ref: '#/components/schemas/ViewDto' - security: - - bearerAuth: [] - delete: - tags: - - view-endpoint - summary: Delete one view - operationId: delete_4 - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: viewId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "405": - description: Delete view is not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "423": - description: Delete view resulted in an invalid query statement - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Delete view query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: "Database, view or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Deletion not allowed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Connection to the database failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Delete view successfully - security: - - bearerAuth: [] - /api/database/{databaseId}/view/{viewId}/data: - get: - tags: - - view-endpoint - summary: Find view data - operationId: data - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: viewId - 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: "Database, view, container or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Find data successfully - content: - application/json: - schema: - $ref: '#/components/schemas/QueryResultDto' - "400": - description: Pagination not in valid range or find data query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: View data not allowed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{databaseId}/view/{viewId}/data/count: - get: - tags: - - view-endpoint - summary: Find view data count - operationId: count_1 - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: viewId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "200": - description: Count data successfully - content: - application/json: - schema: - type: integer - format: int64 - "404": - description: "Database, view, container or user could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Pagination not in valid range or find data query is malformed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Could not count query data - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Count data not allowed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{databaseId}/table/{tableId}: - get: - tags: - - table-endpoint - summary: Get information about table - operationId: findById_2 - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: tableId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "404": - description: "Table, database or container could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "503": - description: Could not communicate with the broker service - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Find table successfully - content: - application/json: - schema: - $ref: '#/components/schemas/TableDto' - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - delete: - tags: - - table-endpoint - summary: Delete a table - operationId: delete_5 - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: tableId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "202": - description: Delete table successfully - "404": - description: "Table, database or container could not be found" - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Delete table query resulted in an invalid query statement - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{databaseId}/table/{tableId}/data/count: - get: - tags: - - table-data-endpoint - summary: Find data - operationId: getCount - parameters: - - 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: Table or database could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "422": - description: Could not import csv via sidecar - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Table data is malformed or image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Get table data count successfully - content: - '*/*': - schema: - type: integer - format: int64 - "403": - description: Access to the database is forbidden - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{databaseId}/query/{queryId}/export: - get: - tags: - - query-endpoint - summary: Exports some query - operationId: export_1 - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: queryId - in: path - required: true - schema: - type: integer - format: int64 - - name: Accept - in: header - required: true - schema: - type: string - responses: - "403": - description: Execute query not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Executed query - content: - '*/*': - schema: - type: object - "404": - description: Database or query could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "422": - description: Sidecar failed to export - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Export of query failed - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "410": - description: Could not find in S3 storage - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{databaseId}/query/{queryId}/data: - get: - tags: - - query-endpoint - summary: Re-execute some query - operationId: reExecute - parameters: - - 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 - - name: sortDirection - in: query - required: false - schema: - type: string - enum: - - asc - - desc - - name: sortColumn - in: query - required: false - schema: - type: string - responses: - "403": - description: Execute query not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "409": - description: Could not store query in query store - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Executed query - content: - application/json: - schema: - $ref: '#/components/schemas/QueryResultDto' - "404": - description: Database or query could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "417": - description: Could not parse columns - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/{databaseId}/query/{queryId}/data/count: - get: - tags: - - query-endpoint - summary: Re-execute some query - operationId: reExecuteCount - parameters: - - name: databaseId - in: path - required: true - schema: - type: integer - format: int64 - - name: queryId - in: path - required: true - schema: - type: integer - format: int64 - responses: - "403": - description: Execute query not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Executed query - content: - application/json: - schema: - $ref: '#/components/schemas/QueryResultDto' - "404": - description: Database or query could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "417": - description: Could not parse columns - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "400": - description: Image is not supported - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - security: - - bearerAuth: [] - /api/database/license: - get: - tags: - - license-endpoint - summary: Get all licenses - operationId: list_4 - responses: - "200": - description: List of licenses - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/LicenseDto' - /api/container/{id}: - get: - tags: - - container-endpoint - summary: Find some container - operationId: findById_3 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "404": - description: Container image could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "200": - description: Found container - content: - application/json: - schema: - $ref: '#/components/schemas/ContainerDto' - delete: - tags: - - container-endpoint - summary: Delete some container - operationId: delete_7 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "404": - description: Container not found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Deleted container successfully - content: - '*/*': - schema: - type: object - security: - - bearerAuth: [] - /api/pid/{id}: - delete: - tags: - - persistence-endpoint - summary: Delete some identifier - operationId: delete_1 - parameters: - - name: id - in: path - required: true - schema: - type: integer - format: int64 - responses: - "403": - description: Deleting identifier not permitted - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "404": - description: Identifier or database could not be found - content: - application/json: - schema: - $ref: '#/components/schemas/ApiErrorDto' - "202": - description: Deleted identifier - content: - '*/*': - schema: - type: object - security: - - bearerAuth: [] -components: - schemas: - TableHistoryDto: - required: - - event - - timestamp - - total - type: object - properties: - timestamp: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - event: - type: string - total: - type: integer - format: int64 - example: 1 - ApiErrorDto: - required: - - code - - message - - status - type: object - properties: - status: - type: string - example: NOT_FOUND - enum: - - 100 CONTINUE - - 101 SWITCHING_PROTOCOLS - - 102 PROCESSING - - 103 EARLY_HINTS - - 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 - example: Error message - code: - type: string - example: error.service.code - QueryResultDto: - required: - - headers - - id - - result - type: object - properties: - result: - type: array - items: - type: object - additionalProperties: - type: object - headers: - type: array - items: - type: object - additionalProperties: - type: integer - format: int32 - id: - type: integer - format: int64 - result_number: - type: integer - format: int64 - example: 1 - UserUpdateDto: - type: object - properties: - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Brown University - orcid: - type: string - example: 0000-0002-1825-0097 - UserAttributesDto: - type: object - properties: - orcid: - type: string - example: https://orcid.org/0000-0002-1825-0097 - affiliation: - type: string - example: Brown University - UserDto: - required: - - attributes - - id - - username - type: object - properties: - id: - type: string - format: uuid - example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 - username: - type: string - description: Only contains lowercase characters - example: jcarberry - name: - type: string - example: Josiah Carberry - attributes: - $ref: '#/components/schemas/UserAttributesDto' - qualified_name: - type: string - example: Josiah Carberry — @jcarberry - given_name: - type: string - example: Josiah - family_name: - type: string - example: Carberry - UserThemeSetDto: - required: - - theme_dark - type: object - properties: - theme_dark: - type: boolean - example: true - UserPasswordDto: - required: - - password - type: object - properties: - password: - type: string - OntologyModifyDto: - required: - - prefix - - uri - type: object - properties: - uri: - type: string - example: Ontology URI - prefix: - type: string - example: Ontology prefix - sparql_endpoint: - type: string - example: Ontology SPARQL endpoint - rdf_path: - type: string - example: rdf/om-2.0.rdf - OntologyDto: - required: - - created - - id - - prefix - - rdf - - sparql - - uri - type: object - properties: - id: - type: integer - format: int64 - uri: - type: string - example: http://www.wikidata.org/ - prefix: - type: string - example: wd - sparql: - type: boolean - example: true - rdf: - type: boolean - example: false - creator: - $ref: '#/components/schemas/UserBriefDto' - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - uri_pattern: - type: string - example: http://www.wikidata.org/entity/.* - sparql_endpoint: - type: string - example: https://query.wikidata.org/sparql - rdf_path: - type: string - example: rdf/om-2.0.rdf - UserBriefDto: - required: - - id - - username - type: object - properties: - id: - type: string - format: uuid - example: 1ffc7b0e-9aeb-4e8b-b8f1-68f3936155b4 - username: - type: string - description: Only contains lowercase characters - example: jcarberry - name: - type: string - example: Josiah Carberry - orcid: - type: string - example: 0000-0002-1825-0097 - qualified_name: - type: string - example: Josiah Carberry — @jcarberry - given_name: - type: string - example: Josiah - family_name: - type: string - example: Carberry - BannerMessageUpdateDto: - required: - - message - - type - type: object - properties: - type: - type: string - enum: - - error - - warning - - info - message: - type: string - example: Maintenance starts on 8am on Monday - link: - type: string - example: https://example.com - link_text: - type: string - example: More - display_start: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - display_end: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - BannerMessageBriefDto: - required: - - message - - type - type: object - properties: - type: - type: string - enum: - - error - - warning - - info - message: - type: string - example: Maintenance starts on 8am on Monday - link: - type: string - example: https://example.com - link_text: - type: string - example: More - ImageChangeDto: - required: - - dialect - - driver_class - - jdbc_method - - registry - type: object - properties: - registry: - type: string - example: docker.io/library - defaultPort: - maximum: 65535 - minimum: 1024 - type: integer - format: int32 - example: 5432 - dialect: - type: string - example: Postgres - driver_class: - type: string - example: org.postgresql.Driver - jdbc_method: - type: string - example: postgresql - ImageDateDto: - required: - - created_at - - database_format - - example - - has_time - - id - - unix_format - type: object - properties: - id: - type: integer - format: int64 - example: - type: string - example: 30.01.2022 - database_format: - type: string - example: '%d.%c.%Y' - unix_format: - type: string - example: dd.MM.YYYY - has_time: - type: boolean - example: false - created_at: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - ImageDto: - required: - - default_port - - dialect - - driver_class - - id - - jdbc_method - - name - - registry - - version - type: object - properties: - id: - type: integer - format: int64 - registry: - type: string - example: docker.io/library - name: - type: string - example: mariadb - version: - type: string - example: "10.5" - dialect: - type: string - example: org.hibernate.dialect.MariaDBDialect - driver_class: - type: string - example: org.mariadb.jdbc.Driver - date_formats: - type: array - items: - $ref: '#/components/schemas/ImageDateDto' - jdbc_method: - type: string - example: mariadb - default_port: - type: integer - format: int32 - example: 3306 - DatabaseModifyVisibilityDto: - required: - - is_public - type: object - properties: - is_public: - type: boolean - example: true - ColumnBriefDto: - required: - - column_type - - database_id - - id - - internal_name - - name - - table_id - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: date - alias: - type: string - database_id: - type: integer - format: int64 - table_id: - type: integer - format: int64 - internal_name: - type: string - example: mdb_date - column_type: - type: string - example: date - enum: - - char - - varchar - - binary - - varbinary - - tinyblob - - tinytext - - text - - blob - - mediumtext - - mediumblob - - longtext - - longblob - - enum - - set - - bit - - tinyint - - bool - - smallint - - mediumint - - int - - bigint - - float - - double - - decimal - - date - - datetime - - timestamp - - time - - year - ColumnDto: - required: - - auto_generated - - column_type - - database_id - - id - - internal_name - - is_null_allowed - - is_primary_key - - is_public - - name - - table_id - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Date - alias: - type: string - size: - type: integer - format: int64 - example: 255 - d: - type: integer - format: int64 - example: 0 - dataLength: - type: integer - format: int64 - example: 34300 - maxDataLength: - type: integer - format: int64 - example: 34300 - numRows: - type: integer - format: int64 - example: 32 - valMin: - type: number - example: 0 - valMax: - type: number - example: 100 - mean: - type: number - example: 45.4 - median: - type: number - example: 51 - stdDev: - type: number - example: 5.32 - concept: - $ref: '#/components/schemas/ConceptDto' - unit: - $ref: '#/components/schemas/UnitDto' - enums: - type: array - items: - type: string - sets: - type: array - items: - type: string - database_id: - type: integer - format: int64 - table_id: - type: integer - format: int64 - internal_name: - type: string - example: mdb_date - date_format: - $ref: '#/components/schemas/ImageDateDto' - auto_generated: - type: boolean - example: false - is_primary_key: - type: boolean - example: true - index_length: - type: integer - format: int64 - length: - type: integer - format: int64 - column_type: - type: string - example: string - enum: - - char - - varchar - - binary - - varbinary - - tinyblob - - tinytext - - text - - blob - - mediumtext - - mediumblob - - longtext - - longblob - - enum - - set - - bit - - tinyint - - bool - - smallint - - mediumint - - int - - bigint - - float - - double - - decimal - - date - - datetime - - timestamp - - time - - year - is_public: - type: boolean - example: true - is_null_allowed: - type: boolean - example: false - ConceptDto: - required: - - columns - - created - - id - - uri - type: object - properties: - id: - type: integer - format: int64 - uri: - type: string - name: - type: string - description: - type: string - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - ConstraintsDto: - type: object - properties: - uniques: - type: array - items: - $ref: '#/components/schemas/UniqueDto' - checks: - type: array - items: - type: string - foreign_keys: - type: array - items: - $ref: '#/components/schemas/ForeignKeyDto' - ContainerDto: - required: - - created - - host - - id - - internal_name - - name - - sidecar_host - - sidecar_port - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - host: - type: string - port: - type: integer - format: int32 - image: - $ref: '#/components/schemas/ImageDto' - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - internal_name: - type: string - example: data-db - sidecar_host: - type: string - sidecar_port: - type: integer - format: int32 - ui_host: - type: string - ui_port: - type: integer - format: int32 - CreatorDto: - required: - - creator_name - - id - type: object - properties: - id: - type: integer - format: int64 - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Brown University - creator_name: - type: string - example: "Carberry, Josiah" - name_type: - type: string - example: Personal - enum: - - Personal - - Organizational - name_identifier: - type: string - example: 0000-0002-1825-0097 - name_identifier_scheme: - type: string - example: ORCID - enum: - - ORCID - - ROR - - ISNI - - GRID - name_identifier_scheme_uri: - type: string - example: https://orcid.org/ - affiliation_identifier: - type: string - example: https://ror.org/05gq02987 - affiliation_identifier_scheme: - type: string - example: ROR - enum: - - ROR - - GRID - - ISNI - affiliation_identifier_scheme_uri: - type: string - example: https://ror.org/ - DatabaseAccessDto: - required: - - created - - type - - user - type: object - properties: - user: - $ref: '#/components/schemas/UserDto' - type: - type: string - enum: - - read - - write_own - - write_all - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - DatabaseDto: - required: - - contact - - created - - creator - - exchange_name - - id - - internal_name - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - description: - type: string - example: Air Quality - tables: - type: array - items: - $ref: '#/components/schemas/TableDto' - views: - type: array - items: - $ref: '#/components/schemas/ViewDto' - container: - $ref: '#/components/schemas/ContainerDto' - accesses: - type: array - items: - $ref: '#/components/schemas/DatabaseAccessDto' - identifiers: - type: array - items: - $ref: '#/components/schemas/IdentifierDto' - subsets: - type: array - items: - $ref: '#/components/schemas/IdentifierDto' - creator: - $ref: '#/components/schemas/UserDto' - contact: - $ref: '#/components/schemas/UserDto' - owner: - $ref: '#/components/schemas/UserDto' - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - exchange_name: - type: string - example: dbrepo - exchange_type: - type: string - example: topic - internal_name: - type: string - example: air_quality - is_public: - type: boolean - example: true - ForeignKeyDto: - type: object - properties: - columns: - type: array - items: - $ref: '#/components/schemas/ColumnDto' - referenced_table: - $ref: '#/components/schemas/TableBriefDto' - referenced_columns: - type: array - items: - $ref: '#/components/schemas/ColumnDto' - on_update: - type: string - enum: - - restrict - - cascade - - set_null - - no_action - - set_default - on_delete: - type: string - enum: - - restrict - - cascade - - set_null - - no_action - - set_default - IdentifierDescriptionDto: - required: - - id - type: object - properties: - id: - type: integer - format: int64 - description: - type: string - example: "Air quality reports at Stephansplatz, Vienna" - language: - type: string - example: en - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - type: - type: string - example: Abstract - enum: - - Abstract - - Methods - - SeriesInformation - - TableOfContents - - TechnicalInfo - - Other - IdentifierDto: - required: - - created - - creators - - execution - - id - - last_modified - - publication_year - - query - - query_hash - - query_normalized - - result_hash - - result_number - - type - type: object - properties: - id: - type: integer - format: int64 - type: - type: string - enum: - - database - - subset - - table - - view - titles: - type: array - items: - $ref: '#/components/schemas/IdentifierTitleDto' - descriptions: - type: array - items: - $ref: '#/components/schemas/IdentifierDescriptionDto' - funders: - type: array - items: - $ref: '#/components/schemas/IdentifierFunderDto' - query: - type: string - example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ - \ = \"09:STEF\"" - execution: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - doi: - type: string - example: 10.1038/nphys1170 - publisher: - type: string - example: TU Wien - language: - type: string - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - licenses: - type: array - items: - $ref: '#/components/schemas/LicenseDto' - creators: - type: array - items: - $ref: '#/components/schemas/CreatorDto' - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - database_id: - type: integer - format: int64 - example: 1 - query_id: - type: integer - format: int64 - example: 1 - table_id: - type: integer - format: int64 - example: 1 - view_id: - type: integer - format: int64 - example: 1 - query_normalized: - type: string - example: "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location`\ - \ = \"09:STEF\"" - related_identifiers: - type: array - items: - $ref: '#/components/schemas/RelatedIdentifierDto' - query_hash: - type: string - description: query hash in sha512 - result_hash: - type: string - example: 34fe82cda2c53f13f8d90cfd7a3469e3a939ff311add50dce30d9136397bf8e5 - result_number: - type: integer - format: int64 - example: 1 - publication_day: - type: integer - format: int32 - example: 15 - publication_month: - type: integer - format: int32 - example: 12 - publication_year: - type: integer - format: int32 - example: 2022 - last_modified: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - IdentifierFunderDto: - required: - - funder_name - - id - type: object - properties: - id: - type: integer - format: int64 - funder_name: - type: string - example: European Commission - funder_identifier: - type: string - example: http://doi.org/10.13039/501100000780 - funder_identifier_type: - type: string - example: Crossref Funder ID - enum: - - Crossref Funder ID - - ROR - - GND - - ISNI - - Other - scheme_uri: - type: string - example: http://doi.org/ - award_number: - type: string - example: "824087" - award_title: - type: string - example: EOSC-Life - IdentifierTitleDto: - required: - - id - type: object - properties: - id: - type: integer - format: int64 - title: - type: string - example: Airquality Demonstrator - language: - type: string - example: en - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - type: - type: string - enum: - - AlternativeTitle - - Subtitle - - TranslatedTitle - - Other - LicenseDto: - required: - - identifier - - uri - type: object - properties: - identifier: - type: string - example: MIT - uri: - type: string - example: https://opensource.org/licenses/MIT - RelatedIdentifierDto: - required: - - created - - id - - value - type: object - properties: - id: - type: integer - format: int64 - value: - type: string - example: 10.70124/dc4zh-9ce78 - type: - type: string - example: DOI - enum: - - DOI - - URL - - URN - - ARK - - arXiv - - bibcode - - EAN13 - - EISSN - - Handle - - IGSN - - ISBN - - ISTC - - LISSN - - LSID - - PMID - - PURL - - UPC - - w3id - relation: - type: string - example: Cites - enum: - - IsCitedBy - - Cites - - IsSupplementTo - - IsSupplementedBy - - IsContinuedBy - - Continues - - IsDescribedBy - - Describes - - HasMetadata - - IsMetadataFor - - HasVersion - - IsVersionOf - - IsNewVersionOf - - IsPreviousVersionOf - - IsPartOf - - HasPart - - IsPublishedIn - - IsReferencedBy - - References - - IsDocumentedBy - - Documents - - IsCompiledBy - - Compiles - - IsVariantFormOf - - IsOriginalFormOf - - IsIdenticalTo - - IsReviewedBy - - Reviews - - IsDerivedFrom - - IsSourceOf - - IsRequiredBy - - Requires - - IsObsoletedBy - - Obsoletes - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - last_modified: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - TableBriefDto: - required: - - columns - - description - - id - - internal_name - - is_versioned - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - description: - type: string - example: Air Quality in Austria - owner: - $ref: '#/components/schemas/UserBriefDto' - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - internal_name: - type: string - example: air_quality - is_versioned: - type: boolean - example: true - TableDto: - required: - - columns - - created - - created_by - - creator - - id - - internal_name - - is_public - - is_versioned - - name - - owner - - queue_name - - routing_key - - tdbid - type: object - properties: - id: - type: integer - format: int64 - tdbid: - type: integer - format: int64 - name: - type: string - example: Air Quality - identifiers: - type: array - items: - $ref: '#/components/schemas/IdentifierDto' - creator: - $ref: '#/components/schemas/UserDto' - owner: - $ref: '#/components/schemas/UserDto' - description: - type: string - example: Air Quality in Austria - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - columns: - type: array - items: - $ref: '#/components/schemas/ColumnDto' - constraints: - $ref: '#/components/schemas/ConstraintsDto' - internal_name: - type: string - example: air_quality - is_versioned: - type: boolean - example: true - created_by: - type: string - format: uuid - queue_name: - type: string - example: air_quality - queue_type: - type: string - example: quorum - routing_key: - type: string - example: dbrepo.database.air_quality - is_public: - type: boolean - example: true - UniqueDto: - required: - - columns - - table - - uid - type: object - properties: - uid: - type: integer - format: int64 - table: - $ref: '#/components/schemas/TableDto' - columns: - type: array - items: - $ref: '#/components/schemas/ColumnDto' - UnitDto: - required: - - columns - - created - - id - - uri - type: object - properties: - id: - type: integer - format: int64 - uri: - type: string - name: - type: string - description: - type: string - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - columns: - type: array - items: - $ref: '#/components/schemas/ColumnBriefDto' - ViewDto: - required: - - columns - - created - - creator - - database - - database_id - - id - - internal_name - - name - - query - - query_hash - type: object - properties: - id: - type: integer - format: int64 - database: - $ref: '#/components/schemas/DatabaseDto' - name: - type: string - example: Air Quality - identifiers: - type: array - items: - $ref: '#/components/schemas/IdentifierDto' - query: - type: string - example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - creator: - $ref: '#/components/schemas/UserDto' - columns: - type: array - items: - $ref: '#/components/schemas/ColumnDto' - database_id: - type: integer - format: int64 - internal_name: - type: string - example: air_quality - is_public: - type: boolean - example: true - initial_view: - type: boolean - description: True if it is the default view for the database - example: true - query_hash: - type: string - example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 - last_modified: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - DatabaseTransferDto: - required: - - username - type: object - properties: - username: - type: string - ColumnSemanticsUpdateDto: - type: object - properties: - concept_uri: - type: string - unit_uri: - type: string - DatabaseModifyAccessDto: - required: - - type - type: object - properties: - type: - type: string - enum: - - read - - write_own - - write_all - QueryPersistDto: - required: - - persist - type: object - properties: - persist: - type: boolean - example: true - QueryDto: - required: - - created - - creator - - database_id - - execution - - id - - is_persisted - - last_modified - - query - - query_hash - type: object - properties: - id: - type: integer - format: int64 - creator: - $ref: '#/components/schemas/UserDto' - execution: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - query: - type: string - example: SELECT `id` FROM `air_quality` - type: - type: string - example: query - enum: - - query - - view - identifiers: - type: array - items: - $ref: '#/components/schemas/IdentifierDto' - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - database_id: - type: integer - format: int64 - query_normalized: - type: string - example: SELECT `id` FROM `air_quality` - query_hash: - type: string - example: 17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76 - is_persisted: - type: boolean - example: true - result_hash: - type: string - example: 17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76 - result_number: - type: integer - format: int64 - example: 1 - last_modified: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - SignupRequestDto: - required: - - email - - password - - username - type: object - properties: - username: - pattern: "^[a-z0-9]{3,}$" - type: string - example: user - email: - type: string - example: user@example.com - password: - type: string - OntologyCreateDto: - required: - - prefix - - uri - type: object - properties: - uri: - type: string - example: Ontology URI - prefix: - type: string - example: Ontology prefix - sparql_endpoint: - type: string - example: Ontology SPARQL endpoint - BannerMessageCreateDto: - required: - - message - - type - type: object - properties: - type: - type: string - enum: - - error - - warning - - info - message: - type: string - example: Maintenance starts on 8am on Monday - link: - type: string - example: https://example.com - link_text: - type: string - example: More - display_start: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - display_end: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - ImageCreateDto: - required: - - default_port - - dialect - - driver_class - - jdbc_method - - name - - registry - - version - type: object - properties: - registry: - type: string - example: docker.io/library - name: - type: string - example: mariadb - version: - type: string - dialect: - type: string - driver_class: - type: string - jdbc_method: - type: string - default_port: - maximum: 65535 - minimum: 1024 - type: integer - format: int32 - CreatorSaveDto: - required: - - creator_name - - firstname - - lastname - - name_type - type: object - properties: - id: - type: integer - format: int64 - firstname: - type: string - example: Josiah - lastname: - type: string - example: Carberry - affiliation: - type: string - example: Wesleyan University - creator_name: - type: string - example: "Carberry, Josiah" - name_type: - type: string - example: Personal - enum: - - Personal - - Organizational - name_identifier: - type: string - example: 0000-0002-1825-0097 - name_identifier_scheme: - type: string - example: ORCID - enum: - - ORCID - - ROR - - ISNI - - GRID - affiliation_identifier: - type: string - example: https://ror.org/04d836q62 - affiliation_identifier_scheme: - type: string - example: ROR - enum: - - ROR - - GRID - - ISNI - IdentifierFunderSaveDto: - required: - - funder_name - type: object - properties: - id: - type: integer - format: int64 - funder_name: - type: string - example: European Commission - funder_identifier: - type: string - example: http://doi.org/10.13039/501100000780 - funder_identifier_type: - type: string - example: Crossref Funder ID - enum: - - Crossref Funder ID - - ROR - - GND - - ISNI - - Other - scheme_uri: - type: string - example: http://doi.org/ - award_number: - type: string - example: "824087" - award_title: - type: string - example: EOSC-Life - IdentifierSaveDescriptionDto: - type: object - properties: - id: - type: integer - format: int64 - description: - type: string - example: "Air quality reports at Stephansplatz, Vienna" - language: - type: string - example: en - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - type: - type: string - example: Abstract - enum: - - Abstract - - Methods - - SeriesInformation - - TableOfContents - - TechnicalInfo - - Other - IdentifierSaveDto: - required: - - creators - - database_id - - publication_year - - type - type: object - properties: - type: - type: string - example: database - enum: - - database - - subset - - table - - view - titles: - type: array - items: - $ref: '#/components/schemas/IdentifierSaveTitleDto' - descriptions: - type: array - items: - $ref: '#/components/schemas/IdentifierSaveDescriptionDto' - funders: - type: array - items: - $ref: '#/components/schemas/IdentifierFunderSaveDto' - licenses: - type: array - items: - $ref: '#/components/schemas/LicenseDto' - publisher: - type: string - example: TU Wien - language: - type: string - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - creators: - type: array - items: - $ref: '#/components/schemas/CreatorSaveDto' - database_id: - type: integer - format: int64 - example: 1 - query_id: - type: integer - format: int64 - view_id: - type: integer - format: int64 - table_id: - type: integer - format: int64 - publication_day: - type: integer - format: int32 - example: 15 - publication_month: - type: integer - format: int32 - example: 12 - publication_year: - type: integer - format: int32 - example: 2022 - related_identifiers: - type: array - items: - $ref: '#/components/schemas/RelatedIdentifierSaveDto' - IdentifierSaveTitleDto: - type: object - properties: - id: - type: integer - format: int64 - title: - type: string - example: Airquality Demonstrator - language: - type: string - example: en - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - type: - type: string - example: Subtitle - enum: - - AlternativeTitle - - Subtitle - - TranslatedTitle - - Other - RelatedIdentifierSaveDto: - required: - - value - type: object - properties: - value: - type: string - example: 10.70124/dc4zh-9ce78 - type: - type: string - example: DOI - enum: - - DOI - - URL - - URN - - ARK - - arXiv - - bibcode - - EAN13 - - EISSN - - Handle - - IGSN - - ISBN - - ISTC - - LISSN - - LSID - - PMID - - PURL - - UPC - - w3id - relation: - type: string - example: Cites - enum: - - IsCitedBy - - Cites - - IsSupplementTo - - IsSupplementedBy - - IsContinuedBy - - Continues - - IsDescribedBy - - Describes - - HasMetadata - - IsMetadataFor - - HasVersion - - IsVersionOf - - IsNewVersionOf - - IsPreviousVersionOf - - IsPartOf - - HasPart - - IsPublishedIn - - IsReferencedBy - - References - - IsDocumentedBy - - Documents - - IsCompiledBy - - Compiles - - IsVariantFormOf - - IsOriginalFormOf - - IsIdenticalTo - - IsReviewedBy - - Reviews - - IsDerivedFrom - - IsSourceOf - - IsRequiredBy - - Requires - - IsObsoletedBy - - Obsoletes - DatabaseCreateDto: - required: - - container_id - - is_public - - name - type: object - properties: - name: - type: string - example: Air Quality - container_id: - type: integer - format: int64 - example: 1 - is_public: - type: boolean - example: true - ContainerBriefDto: - required: - - created - - hash - - id - - image - - internal_name - - name - - running - type: object - properties: - id: - type: integer - format: int64 - hash: - type: string - example: f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50 - name: - type: string - example: Air Quality - image: - $ref: '#/components/schemas/ImageBriefDto' - running: - type: boolean - example: true - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - internal_name: - type: string - example: air-quality - CreatorBriefDto: - required: - - creator_name - type: object - properties: - affiliation: - type: string - example: Wesleyan University - name_identifier: - type: string - example: https://orcid.org/0000-0002-1825-0097 - name_type: - type: string - example: Personal - enum: - - Personal - - Organizational - creator_name: - type: string - example: "Carberry, Josiah" - DatabaseBriefDto: - required: - - created - - creator - - exchange_name - - id - - internal_name - - name - - owner - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: Air Quality - identifier: - $ref: '#/components/schemas/IdentifierDto' - description: - type: string - example: Air Quality - tables: - type: array - items: - $ref: '#/components/schemas/TableBriefDto' - views: - type: array - items: - $ref: '#/components/schemas/ViewBriefDto' - image: - $ref: '#/components/schemas/ImageDto' - container: - $ref: '#/components/schemas/ContainerBriefDto' - accesses: - type: array - items: - $ref: '#/components/schemas/DatabaseAccessDto' - creator: - $ref: '#/components/schemas/UserBriefDto' - owner: - $ref: '#/components/schemas/UserBriefDto' - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - exchange_name: - type: string - example: dbrepo - exchange_type: - type: string - example: topic - internal_name: - type: string - example: air_quality - is_public: - type: boolean - example: true - IdentifierBriefDto: - required: - - creators - - id - - publication_year - - type - type: object - properties: - id: - type: integer - format: int64 - type: - type: string - enum: - - database - - subset - - table - - view - titles: - type: array - items: - $ref: '#/components/schemas/IdentifierTitleDto' - doi: - type: string - example: 10.1038/nphys1170 - publisher: - type: string - example: TU Wien - creators: - type: array - items: - $ref: '#/components/schemas/CreatorBriefDto' - database_id: - type: integer - format: int64 - example: 1 - query_id: - type: integer - format: int64 - example: 1 - publication_year: - type: integer - format: int32 - example: 2022 - ImageBriefDto: - required: - - id - - jdbc_method - - name - - version - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - example: mariadb - version: - type: string - example: "10.5" - jdbc_method: - type: string - example: mariadb - ViewBriefDto: - required: - - created - - creator - - id - - internal_name - - name - - query - - query_hash - - vdbid - type: object - properties: - id: - type: integer - format: int64 - vdbid: - type: integer - format: int64 - name: - type: string - example: Air Quality - identifier: - $ref: '#/components/schemas/IdentifierBriefDto' - query: - type: string - example: SELECT `id` FROM `air_quality` ORDER BY `value` DESC - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - creator: - $ref: '#/components/schemas/UserDto' - internal_name: - type: string - example: air_quality - is_public: - type: boolean - example: true - initial_view: - type: boolean - description: True if it is the default view for the database - example: true - query_hash: - type: string - example: 7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916 - last_modified: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - DatabaseGiveAccessDto: - required: - - type - type: object - properties: - type: - type: string - enum: - - read - - write_own - - write_all - ViewCreateDto: - required: - - is_public - - name - - query - type: object - properties: - name: - type: string - example: Air Quality - query: - type: string - example: SELECT `id` FROM `air_quality` - is_public: - type: boolean - example: true - ColumnCreateDto: - required: - - name - - null_allowed - - primary_key - - type - type: object - properties: - name: - type: string - example: Date - type: - type: string - example: string - enum: - - char - - varchar - - binary - - varbinary - - tinyblob - - tinytext - - text - - blob - - mediumtext - - mediumblob - - longtext - - longblob - - enum - - set - - bit - - tinyint - - bool - - smallint - - mediumint - - int - - bigint - - float - - double - - decimal - - date - - datetime - - timestamp - - time - - year - size: - type: integer - format: int64 - example: 255 - d: - type: integer - format: int64 - example: 0 - dfid: - type: integer - description: date format id - format: int64 - enums: - type: array - description: "enum values, only considered when type = ENUM" - items: - type: string - description: "enum values, only considered when type = ENUM" - sets: - type: array - description: "set values, only considered when type = SET" - items: - type: string - description: "set values, only considered when type = SET" - primary_key: - type: boolean - example: false - index_length: - type: integer - format: int64 - null_allowed: - type: boolean - example: true - ConstraintsCreateDto: - type: object - properties: - uniques: - type: array - items: - type: array - items: - type: string - checks: - type: array - items: - type: string - foreign_keys: - type: array - items: - $ref: '#/components/schemas/ForeignKeyCreateDto' - ForeignKeyCreateDto: - type: object - properties: - columns: - type: array - items: - type: string - referenced_table: - type: string - referenced_columns: - type: array - items: - type: string - on_update: - type: string - enum: - - restrict - - cascade - - set_null - - no_action - - set_default - on_delete: - type: string - enum: - - restrict - - cascade - - set_null - - no_action - - set_default - TableCreateDto: - required: - - columns - - name - type: object - properties: - name: - type: string - example: Air Quality - description: - type: string - example: Air Quality in Austria - columns: - type: array - items: - $ref: '#/components/schemas/ColumnCreateDto' - constraints: - $ref: '#/components/schemas/ConstraintsCreateDto' - TableCsvDto: - required: - - data - type: object - properties: - data: - type: object - additionalProperties: - type: object - ImportDto: - required: - - location - - separator - type: object - properties: - location: - type: string - example: file.csv - separator: - type: string - example: "," - quote: - type: string - example: '"' - skip_lines: - minimum: 0 - type: integer - format: int64 - false_element: - type: string - true_element: - type: string - null_element: - type: string - example: NA - ExecuteStatementDto: - required: - - statement - type: object - properties: - statement: - type: string - example: SELECT `id` FROM `air_quality` - timestamp: - type: string - description: Execute query for data at this timestamp - format: date-time - ContainerCreateRequestDto: - required: - - host - - imageId - - name - - privilegedPassword - - privilegedUsername - type: object - properties: - name: - type: string - example: Air Quality - imageId: - type: integer - description: Image ID - format: int64 - host: - type: string - description: Hostname of container - port: - type: integer - description: Port of container - format: int32 - privilegedUsername: - type: string - description: Username of privileged user - example: root - privilegedPassword: - type: string - description: Password of privileged user - EntityDto: - required: - - label - - uri - type: object - properties: - uri: - type: string - example: https://www.wikidata.org/entity/Q1686799 - label: - type: string - example: Apache Jena - description: - type: string - example: open source semantic web framework for Java - TableColumnEntityDto: - required: - - columnId - - databaseId - - tableId - - uri - type: object - properties: - databaseId: - type: integer - format: int64 - example: 1 - tableId: - type: integer - format: int64 - example: 1 - columnId: - type: integer - format: int64 - example: 1 - uri: - type: string - example: https://www.wikidata.org/entity/Q1686799 - label: - type: string - example: Apache Jena - description: - type: string - example: open source semantic web framework for Java - OaiListIdentifiersParameters: - type: object - properties: - metadataPrefix: - type: string - from: - type: string - until: - type: string - set: - type: string - resumptionToken: - type: string - parametersString: - type: string - fromDate: - type: string - format: date-time - untilDate: - type: string - format: date-time - BannerMessageDto: - required: - - id - - message - - type - type: object - properties: - id: - type: integer - format: int64 - type: - type: string - enum: - - error - - warning - - info - message: - type: string - example: Maintenance starts on 8am on Monday - link: - type: string - example: https://example.com - link_text: - type: string - example: More - display_start: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - display_end: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - Constraints: - type: object - properties: - uniques: - type: array - items: - $ref: '#/components/schemas/Unique' - foreignKeys: - type: array - items: - $ref: '#/components/schemas/ForeignKey' - checks: - uniqueItems: true - type: array - items: - type: string - Container: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - internalName: - type: string - host: - type: string - port: - type: integer - format: int32 - sidecarHost: - type: string - sidecarPort: - type: integer - format: int32 - uiHost: - type: string - uiPort: - type: integer - format: int32 - uiAdditionalFlags: - type: string - databases: - type: array - items: - $ref: '#/components/schemas/Database' - image: - $ref: '#/components/schemas/ContainerImage' - created: - type: string - format: date-time - lastModified: - type: string - format: date-time - privilegedUsername: - type: string - privilegedPassword: - type: string - ContainerImage: - type: object - properties: - id: - type: integer - format: int64 - name: - type: string - version: - type: string - driverClass: - type: string - dialect: - type: string - jdbcMethod: - type: string - defaultPort: - type: integer - format: int32 - dateFormats: - type: array - items: - $ref: '#/components/schemas/ContainerImageDate' - containers: - type: array - items: - $ref: '#/components/schemas/Container' - created: - type: string - format: date-time - lastModified: - type: string - format: date-time - ContainerImageDate: - type: object - properties: - id: - type: integer - format: int64 - iid: - type: integer - format: int64 - image: - $ref: '#/components/schemas/ContainerImage' - example: - type: string - hasTime: - type: boolean - databaseFormat: - type: string - unixFormat: - type: string - createdAt: - type: string - format: date-time - Creator: - type: object - properties: - id: - type: integer - format: int64 - firstname: - type: string - lastname: - type: string - creatorName: - type: string - nameType: - type: string - enum: - - PERSONAL - - ORGANIZATIONAL - nameIdentifier: - type: string - nameIdentifierScheme: - type: string - enum: - - ORCID - - ROR - - ISNI - - GRID - nameIdentifierSchemeUri: - type: string - affiliation: - type: string - affiliationIdentifier: - type: string - affiliationIdentifierScheme: - type: string - enum: - - ROR - - GRID - - ISNI - affiliationIdentifierSchemeUri: - type: string - identifier: - $ref: '#/components/schemas/Identifier' - bibtexName: - type: string - ieeeName: - type: string - apaName: - type: string - Database: - type: object - properties: - id: - type: integer - format: int64 - createdBy: - type: string - format: uuid - creator: - $ref: '#/components/schemas/User' - ownedBy: - type: string - format: uuid - owner: - $ref: '#/components/schemas/User' - cid: - type: integer - format: int64 - container: - $ref: '#/components/schemas/Container' - name: - type: string - internalName: - type: string - exchangeName: - type: string - description: - type: string - contactPerson: - type: string - format: uuid - contact: - $ref: '#/components/schemas/User' - identifiers: - type: array - items: - $ref: '#/components/schemas/Identifier' - subsets: - type: array - items: - $ref: '#/components/schemas/Identifier' - tables: - type: array - items: - $ref: '#/components/schemas/Table' - views: - type: array - items: - $ref: '#/components/schemas/View' - accesses: - type: array - items: - $ref: '#/components/schemas/DatabaseAccess' - isPublic: - type: boolean - created: - type: string - format: date-time - lastModified: - type: string - format: date-time - DatabaseAccess: - type: object - properties: - huserid: - type: string - format: uuid - user: - $ref: '#/components/schemas/User' - hdbid: - type: integer - format: int64 - database: - $ref: '#/components/schemas/Database' - type: - type: string - enum: - - AccessType.READ - - AccessType.WRITE_OWN - - AccessType.WRITE_ALL - created: - type: string - format: date-time - ForeignKey: - type: object - properties: - fkid: - type: integer - format: int64 - table: - $ref: '#/components/schemas/Table' - referencedTable: - $ref: '#/components/schemas/Table' - references: - type: array - items: - $ref: '#/components/schemas/ForeignKeyReference' - onUpdate: - type: string - enum: - - ReferenceType.RESTRICT - - ReferenceType.CASCADE - - ReferenceType.SET_NULL - - ReferenceType.NO_ACTION - - ReferenceType.SET_DEFAULT - onDelete: - type: string - enum: - - ReferenceType.RESTRICT - - ReferenceType.CASCADE - - ReferenceType.SET_NULL - - ReferenceType.NO_ACTION - - ReferenceType.SET_DEFAULT - ForeignKeyReference: - type: object - properties: - id: - type: integer - format: int64 - foreignKey: - $ref: '#/components/schemas/ForeignKey' - column: - $ref: '#/components/schemas/TableColumn' - referencedColumn: - $ref: '#/components/schemas/TableColumn' - Identifier: - required: - - publisher - type: object - properties: - id: - type: integer - format: int64 - databaseId: - type: integer - format: int64 - queryId: - type: integer - format: int64 - tableId: - type: integer - format: int64 - viewId: - type: integer - format: int64 - creators: - type: array - items: - $ref: '#/components/schemas/Creator' - publisher: - type: string - language: - type: string - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - titles: - type: array - items: - $ref: '#/components/schemas/IdentifierTitle' - descriptions: - type: array - items: - $ref: '#/components/schemas/IdentifierDescription' - funders: - type: array - items: - $ref: '#/components/schemas/IdentifierFunder' - licenses: - type: array - items: - $ref: '#/components/schemas/License' - type: - type: string - enum: - - DATABASE - - SUBSET - - TABLE - - VIEW - query: - type: string - queryNormalized: - type: string - queryHash: - type: string - resultHash: - type: string - execution: - type: string - format: date-time - resultNumber: - type: integer - format: int64 - publicationYear: - type: integer - format: int32 - publicationMonth: - type: integer - format: int32 - publicationDay: - type: integer - format: int32 - database: - $ref: '#/components/schemas/Database' - relatedIdentifiers: - type: array - items: - $ref: '#/components/schemas/RelatedIdentifier' - doi: - type: string - createdBy: - type: string - format: uuid - created: - type: string - format: date-time - lastModified: - type: string - format: date-time - IdentifierDescription: - type: object - properties: - id: - type: integer - format: int64 - description: - type: string - descriptionType: - type: string - enum: - - Abstract - - Methods - - SeriesInformation - - TableOfContents - - TechnicalInfo - - Other - language: - type: string - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - identifier: - $ref: '#/components/schemas/Identifier' - IdentifierFunder: - type: object - properties: - id: - type: integer - format: int64 - funderName: - type: string - funderIdentifier: - type: string - funderIdentifierType: - type: string - enum: - - CROSSREF_FUNDER_ID - - ROR - - GND - - ISNI - - OTHER - schemeUri: - type: string - awardNumber: - type: string - awardTitle: - type: string - identifier: - $ref: '#/components/schemas/Identifier' - IdentifierTitle: - type: object - properties: - id: - type: integer - format: int64 - title: - type: string - titleType: - type: string - enum: - - AlternativeTitle - - Subtitle - - TranslatedTitle - - Other - language: - type: string - enum: - - ab - - aa - - af - - ak - - sq - - am - - ar - - an - - hy - - as - - av - - ae - - ay - - az - - bm - - ba - - eu - - be - - bn - - bh - - bi - - bs - - br - - bg - - my - - ca - - km - - ch - - ce - - ny - - zh - - cu - - cv - - kw - - co - - cr - - hr - - cs - - da - - dv - - nl - - dz - - en - - eo - - et - - ee - - fo - - fj - - fi - - fr - - ff - - gd - - gl - - lg - - ka - - de - - ki - - el - - kl - - gn - - gu - - ht - - ha - - he - - hz - - hi - - ho - - hu - - is - - io - - ig - - id - - ia - - ie - - iu - - ik - - ga - - it - - ja - - jv - - kn - - kr - - ks - - kk - - rw - - kv - - kg - - ko - - kj - - ku - - ky - - lo - - la - - lv - - lb - - li - - ln - - lt - - lu - - mk - - mg - - ms - - ml - - mt - - gv - - mi - - mr - - mh - - ro - - mn - - na - - nv - - nd - - ng - - ne - - se - - "no" - - nb - - nn - - ii - - oc - - oj - - or - - om - - os - - pi - - pa - - ps - - fa - - pl - - pt - - qu - - rm - - rn - - ru - - sm - - sg - - sa - - sc - - sr - - sn - - sd - - si - - sk - - sl - - so - - st - - nr - - es - - su - - sw - - ss - - sv - - tl - - ty - - tg - - ta - - tt - - te - - th - - bo - - ti - - to - - ts - - tn - - tr - - tk - - tw - - ug - - uk - - ur - - uz - - ve - - vi - - vo - - wa - - cy - - fy - - wo - - xh - - yi - - yo - - za - - zu - identifier: - $ref: '#/components/schemas/Identifier' - License: - type: object - properties: - identifier: - type: string - uri: - type: string - RelatedIdentifier: - type: object - properties: - id: - type: integer - format: int64 - value: - type: string - type: - type: string - enum: - - DOI - - URL - - URN - - ARK - - arXiv - - bibcode - - EAN13 - - EISSN - - Handle - - IGSN - - ISBN - - ISTC - - LISSN - - LSID - - PMID - - PURL - - UPC - - w3id - relation: - type: string - enum: - - IsCitedBy - - Cites - - IsSupplementTo - - IsSupplementedBy - - IsContinuedBy - - Continues - - IsDescribedBy - - Describes - - HasMetadata - - IsMetadataFor - - HasVersion - - IsVersionOf - - IsNewVersionOf - - IsPreviousVersionOf - - IsPartOf - - HasPart - - IsPublishedIn - - IsReferencedBy - - References - - IsDocumentedBy - - Documents - - IsCompiledBy - - Compiles - - IsVariantFormOf - - IsOriginalFormOf - - IsIdenticalTo - - IsReviewedBy - - Reviews - - IsDerivedFrom - - IsSourceOf - - IsRequiredBy - - Requires - - IsObsoletedBy - - Obsoletes - identifier: - $ref: '#/components/schemas/Identifier' - Table: - type: object - properties: - id: - type: integer - format: int64 - tdbid: - type: integer - format: int64 - createdBy: - type: string - format: uuid - creator: - $ref: '#/components/schemas/User' - ownedBy: - type: string - format: uuid - owner: - $ref: '#/components/schemas/User' - name: - type: string - internalName: - type: string - queueName: - type: string - routingKey: - type: string - description: - type: string - database: - $ref: '#/components/schemas/Database' - columns: - type: array - items: - $ref: '#/components/schemas/TableColumn' - identifiers: - type: array - items: - $ref: '#/components/schemas/Identifier' - constraints: - $ref: '#/components/schemas/Constraints' - isVersioned: - type: boolean - numRows: - type: integer - format: int64 - dataLength: - type: integer - format: int64 - maxDataLength: - type: integer - format: int64 - avgRowLength: - type: integer - format: int64 - created: - type: string - format: date-time - lastModified: - type: string - format: date-time - TableColumn: - type: object - properties: - id: - type: integer - format: int64 - dateFormat: - $ref: '#/components/schemas/ContainerImageDate' - table: - $ref: '#/components/schemas/Table' - views: - type: array - items: - $ref: '#/components/schemas/View' - name: - type: string - autoGenerated: - type: boolean - internalName: - type: string - isPrimaryKey: - type: boolean - indexLength: - type: integer - format: int64 - alias: - type: string - columnType: - type: string - enum: - - TableColumnType.CHAR - - TableColumnType.VARCHAR - - TableColumnType.BINARY - - TableColumnType.VARBINARY - - TableColumnType.TINYBLOB - - TableColumnType.TINYTEXT - - TableColumnType.TEXT - - TableColumnType.BLOB - - TableColumnType.MEDIUMTEXT - - TableColumnType.MEDIUMBLOB - - TableColumnType.LONGTEXT - - TableColumnType.LONGBLOB - - TableColumnType.ENUM - - TableColumnType.SET - - TableColumnType.BIT - - TableColumnType.TINYINT - - TableColumnType.BOOL - - TableColumnType.SMALLINT - - TableColumnType.MEDIUMINT - - TableColumnType.INT - - TableColumnType.BIGINT - - TableColumnType.FLOAT - - TableColumnType.DOUBLE - - TableColumnType.DECIMAL - - TableColumnType.DATE - - TableColumnType.DATETIME - - TableColumnType.TIMESTAMP - - TableColumnType.TIME - - TableColumnType.YEAR - length: - type: integer - format: int64 - isNullAllowed: - type: boolean - ordinalPosition: - type: integer - format: int32 - created: - type: string - format: date-time - concept: - $ref: '#/components/schemas/TableColumnConcept' - unit: - $ref: '#/components/schemas/TableColumnUnit' - enums: - type: array - items: - type: string - sets: - type: array - items: - type: string - size: - type: integer - format: int64 - d: - type: integer - format: int64 - valMin: - type: number - valMax: - type: number - mean: - type: number - median: - type: number - stdDev: - type: number - lastModified: - type: string - format: date-time - TableColumnConcept: - type: object - properties: - id: - type: integer - format: int64 - uri: - type: string - name: - type: string - description: - type: string - created: - type: string - format: date-time - columns: - type: array - items: - $ref: '#/components/schemas/TableColumn' - TableColumnUnit: - type: object - properties: - id: - type: integer - format: int64 - uri: - type: string - name: - type: string - description: - type: string - created: - type: string - format: date-time - columns: - type: array - items: - $ref: '#/components/schemas/TableColumn' - Unique: - type: object - properties: - uid: - type: integer - format: int64 - table: - $ref: '#/components/schemas/Table' - columns: - type: array - items: - $ref: '#/components/schemas/TableColumn' - User: - type: object - properties: - id: - type: string - format: uuid - username: - type: string - firstname: - type: string - lastname: - type: string - email: - type: string - orcid: - type: string - affiliation: - type: string - accesses: - type: array - items: - $ref: '#/components/schemas/DatabaseAccess' - themeDark: - type: boolean - mariadbPassword: - type: string - View: - type: object - properties: - id: - type: integer - format: int64 - vdbid: - type: integer - format: int64 - createdBy: - type: string - format: uuid - creator: - $ref: '#/components/schemas/User' - name: - type: string - internalName: - type: string - isPublic: - type: boolean - isInitialView: - type: boolean - query: - type: string - queryHash: - type: string - identifiers: - type: array - items: - $ref: '#/components/schemas/Identifier' - database: - $ref: '#/components/schemas/Database' - columns: - type: array - items: - $ref: '#/components/schemas/TableColumn' - created: - type: string - format: date-time - lastModified: - type: string - format: date-time - QueryBriefDto: - required: - - created - - creator - - database_id - - execution - - id - - is_persisted - - last_modified - - query - - query_hash - type: object - properties: - id: - type: integer - format: int64 - creator: - $ref: '#/components/schemas/UserDto' - execution: - type: string - format: date-time - query: - type: string - example: SELECT `id` FROM `air_quality` - type: - type: string - example: query - enum: - - query - - view - identifiers: - type: array - items: - $ref: '#/components/schemas/IdentifierBriefDto' - created: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - database_id: - type: integer - format: int64 - query_normalized: - type: string - example: SELECT `id` FROM `air_quality` - query_hash: - type: string - example: 17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76 - result_hash: - type: string - example: 17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76 - result_number: - type: integer - format: int64 - example: 1 - is_persisted: - type: boolean - example: true - last_modified: - type: string - format: date-time - example: 2021-03-12T15:26:21Z - TableCsvDeleteDto: - required: - - keys - type: object - properties: - keys: - type: object - additionalProperties: - type: object - securitySchemes: - bearerAuth: - type: http - scheme: bearer - bearerFormat: JWT diff --git a/.docs/api-upload.yaml b/.docs/api-upload.yaml deleted file mode 100644 index 51cf3ef89d89b80c0fe710bd4d1c59b43c3670e7..0000000000000000000000000000000000000000 --- a/.docs/api-upload.yaml +++ /dev/null @@ -1,30 +0,0 @@ -openapi: 3.0.0 -info: - title: Database Repository Upload Service API - description: Service that manages the uploads - 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.4.0 -externalDocs: - description: Sourcecode Documentation - url: https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services -servers: - - url: http://localhost:1080 - description: Generated server url - - url: https://test.dbrepo.tuwien.ac.at - description: Sandbox -paths: - /api/upload/files: - post: - tags: - - upload-endpoint - summary: Uploads a file - operationId: upload - responses: - "201": - description: "Successfully uploaded a file" - security: { } \ No newline at end of file diff --git a/.docs/docker/release.py b/.docs/docker/release.py index d29dc4ec271f906187412c8cebb6111c106b0d01..3c12886af54645cd2c6129ee5fc156ccbfa585cd 100644 --- a/.docs/docker/release.py +++ b/.docs/docker/release.py @@ -41,6 +41,16 @@ components = [ "name": "User Interface", "doc": "system-other-ui", "dir": "ui" + }, + { + "name": "Search Service", + "doc": "system-services-search", + "dir": "search-service" + }, + { + "name": "Data Database Sidecar", + "doc": "system-databases-data", + "dir": "data-db" } ] diff --git a/.docs/docker/setup.py b/.docs/docker/setup.py index 5eda1103d1838fac042ea1656bdf9fd592002ea7..e293833201ef7edf439412801fda08888848b5bb 100644 --- a/.docs/docker/setup.py +++ b/.docs/docker/setup.py @@ -5,6 +5,6 @@ setup(name='dockerhub-client', description='Dockerhub Maintenance Client', author='Martin Weise', author_email='martin.weise@tuwien.ac.at', - url='https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/latest/', + url='https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/', packages=['dockerhub-client'], ) diff --git a/.docs/images/architecture-data-db.svg b/.docs/images/architecture-data-db.svg index 696f4ed091f46505bc905c613978c305d9352cf3..788750a77ea797fec5210bd3f3dbb8e20dae6ddd 100644 --- a/.docs/images/architecture-data-db.svg +++ b/.docs/images/architecture-data-db.svg @@ -1,3 +1,3 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="426px" height="168px" viewBox="-0.5 -0.5 426 168" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="0" y="37" width="248" height="130" rx="3.9" ry="3.9" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe center; width: 246px; height: 1px; padding-top: 164px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-style: italic; white-space: normal; overflow-wrap: normal;">shared filesystem<br />/tmp</div></div></div></foreignObject><text x="124" y="164" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-style="italic">shared filesystem...</text></switch></g><path d="M 47.5 47.63 L 47.49 30.49 L 47.71 7" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 47.5 52.88 L 44 45.88 L 47.5 47.63 L 51 45.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 22px; margin-left: 48px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">jdbc</div></div></div></foreignObject><text x="48" y="25" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">jdbc</text></switch></g><path d="M 22.5 62.6 C 22.5 57.85 33.69 54 47.5 54 C 54.13 54 60.49 54.91 65.18 56.52 C 69.87 58.13 72.5 60.32 72.5 62.6 L 72.5 109.4 C 72.5 114.15 61.31 118 47.5 118 C 33.69 118 22.5 114.15 22.5 109.4 Z" fill="#dae8fc" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 72.5 62.6 C 72.5 67.35 61.31 71.2 47.5 71.2 C 33.69 71.2 22.5 67.35 22.5 62.6" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="6.5" y="116" width="85" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 89px; height: 1px; padding-top: 126px; margin-left: 5px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">data-db</div></div></div></foreignObject><text x="49" y="130" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">data-db</text></switch></g><path d="M 160 59.63 L 160 36.49 L 160.1 7" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 160 64.88 L 156.5 57.88 L 160 59.63 L 163.5 57.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 23px; margin-left: 160px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">http</div></div></div></foreignObject><text x="160" y="26" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">http</text></switch></g><path d="M 231.37 86 L 288.63 86" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 226.12 86 L 233.12 82.5 L 231.37 86 L 233.12 89.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 293.88 86 L 286.88 89.5 L 288.63 86 L 286.88 82.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 86px; margin-left: 260px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">S3</div></div></div></foreignObject><text x="260" y="89" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">S3</text></switch></g><rect x="95" y="66" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 86px; margin-left: 96px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Data DB Sidecar</div></div></div></foreignObject><text x="160" y="90" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Data DB Sidecar</text></switch></g><rect x="295" y="66" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 86px; margin-left: 296px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Storage Service<br />(minIO)</div></div></div></foreignObject><text x="360" y="90" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Storage Service...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="426px" height="214px" viewBox="-0.5 -0.5 426 214"><defs/><g><rect x="0" y="37" width="248" height="130" rx="3.9" ry="3.9" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe center; width: 246px; height: 1px; padding-top: 164px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-style: italic; white-space: normal; overflow-wrap: normal;">shared filesystem<br />/tmp</div></div></div></foreignObject><text x="124" y="164" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-style="italic">shared filesystem...</text></switch></g><path d="M 47.5 47.63 L 47.5 31 L 47.71 7" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 47.5 52.88 L 44 45.88 L 47.5 47.63 L 51 45.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 22px; margin-left: 48px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">jdbc</div></div></div></foreignObject><text x="48" y="25" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">jdbc</text></switch></g><path d="M 22.5 62.6 C 22.5 57.85 33.69 54 47.5 54 C 54.13 54 60.49 54.91 65.18 56.52 C 69.87 58.13 72.5 60.32 72.5 62.6 L 72.5 109.4 C 72.5 114.15 61.31 118 47.5 118 C 33.69 118 22.5 114.15 22.5 109.4 Z" fill="#dae8fc" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 72.5 62.6 C 72.5 67.35 61.31 71.2 47.5 71.2 C 33.69 71.2 22.5 67.35 22.5 62.6" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="6.5" y="116" width="85" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 89px; height: 1px; padding-top: 126px; margin-left: 5px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">data-db</div></div></div></foreignObject><text x="49" y="130" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">data-db</text></switch></g><path d="M 160 59.63 L 160 37 L 160.1 7" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 160 64.88 L 156.5 57.88 L 160 59.63 L 163.5 57.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 23px; margin-left: 160px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">http</div></div></div></foreignObject><text x="160" y="26" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">http</text></switch></g><path d="M 231.37 86 L 288.63 86" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 226.12 86 L 233.12 82.5 L 231.37 86 L 233.12 89.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 293.88 86 L 286.88 89.5 L 288.63 86 L 286.88 82.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 86px; margin-left: 260px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">S3</div></div></div></foreignObject><text x="260" y="89" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">S3</text></switch></g><rect x="95" y="66" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 86px; margin-left: 96px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Data DB Sidecar</div></div></div></foreignObject><text x="160" y="90" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Data DB Sidecar</text></switch></g><rect x="295" y="66" width="130" height="40" rx="6" ry="6" fill="#e6e6e6" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 86px; margin-left: 296px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Storage Service<br style="border-color: var(--border-color);" />(SeaweedFS)</div></div></div></foreignObject><text x="360" y="90" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Storage Service...</text></switch></g><rect x="242.5" y="177" width="30" height="16" fill="#e6e6e6" stroke="rgb(0, 0, 0)" pointer-events="all"/><rect x="280" y="177" width="140" height="16" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 138px; height: 1px; padding-top: 185px; margin-left: 282px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">External images</div></div></div></foreignObject><text x="282" y="189" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">External images</text></switch></g><rect x="242.5" y="197" width="30" height="16" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><rect x="280" y="197" width="140" height="16" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 138px; height: 1px; padding-top: 205px; margin-left: 282px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Maintained images</div></div></div></foreignObject><text x="282" y="209" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Maintained images</text></switch></g><rect x="257.5" y="177" width="15" height="16" fill="#dae8fc" stroke="#000000" pointer-events="all"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file diff --git a/.docs/images/architecture-ui.png b/.docs/images/architecture-ui.png deleted file mode 100644 index ec4d56dcfdb5df8f414139df0e360a84fe6f84fa..0000000000000000000000000000000000000000 Binary files a/.docs/images/architecture-ui.png and /dev/null differ diff --git a/.docs/images/architecture-ui.svg b/.docs/images/architecture-ui.svg new file mode 100644 index 0000000000000000000000000000000000000000..10f75224a108321f594ee7ea688e00f06da4d5f2 --- /dev/null +++ b/.docs/images/architecture-ui.svg @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="551px" height="393px" viewBox="-0.5 -0.5 551 393"><defs/><g><rect x="0" y="212" width="320" height="136" rx="2.72" ry="2.72" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="0" y="0" width="320" height="204" rx="4.08" ry="4.08" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="170" y="10" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 30px; margin-left: 171px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">UI</div></div></div></foreignObject><text x="235" y="34" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">UI</text></switch></g><path d="M 235 73.63 L 235 56.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 235 78.88 L 231.5 71.88 L 235 73.63 L 238.5 71.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 235 51.12 L 238.5 58.12 L 235 56.37 L 231.5 58.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="170" y="80" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 100px; margin-left: 171px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Vue.js</div></div></div></foreignObject><text x="235" y="104" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Vue.js</text></switch></g><path d="M 163.63 170 L 146.37 170" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 168.88 170 L 161.88 173.5 L 163.63 170 L 161.88 166.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 141.12 170 L 148.12 166.5 L 146.37 170 L 148.12 173.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 235 150 L 235 130 L 235 140 L 235 126.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 235 121.12 L 238.5 128.12 L 235 126.37 L 231.5 128.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 235 143.63 L 235 130 L 235 140 L 235 126.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 235 148.88 L 231.5 141.88 L 235 143.63 L 238.5 141.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 235 121.12 L 238.5 128.12 L 235 126.37 L 231.5 128.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 235 196.37 L 235 221.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 235 191.12 L 238.5 198.12 L 235 196.37 L 231.5 198.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 235 226.88 L 231.5 219.88 L 235 221.63 L 238.5 219.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="170" y="150" width="130" height="40" rx="6" ry="6" fill="#dae8fc" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 170px; margin-left: 171px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Vuex<br />(state)</div></div></div></foreignObject><text x="235" y="174" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Vuex...</text></switch></g><path d="M 75 143.63 L 75 126.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 75 148.88 L 71.5 141.88 L 75 143.63 L 78.5 141.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 75 121.12 L 78.5 128.12 L 75 126.37 L 71.5 128.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="10" y="150" width="130" height="40" rx="6" ry="6" fill="#dae8fc" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 170px; margin-left: 11px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Vuex Persist<br />Plugin</div></div></div></foreignObject><text x="75" y="174" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Vuex Persist...</text></switch></g><path d="M 45 55 C 45 46.72 58.43 40 75 40 C 82.96 40 90.59 41.58 96.21 44.39 C 101.84 47.21 105 51.02 105 55 L 105 105 C 105 113.28 91.57 120 75 120 C 58.43 120 45 113.28 45 105 Z" fill="#dae8fc" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 105 55 C 105 63.28 91.57 70 75 70 C 58.43 70 45 63.28 45 55" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 93px; margin-left: 46px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Local Storage</div></div></div></foreignObject><text x="75" y="96" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Local Stor...</text></switch></g><path d="M 235 274.37 L 235 288 L 235 278 L 235 291.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 235 269.12 L 238.5 276.12 L 235 274.37 L 231.5 276.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 235 296.88 L 231.5 289.88 L 235 291.63 L 238.5 289.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="170" y="228" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 248px; margin-left: 171px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Node.js<br />(api client)</div></div></div></foreignObject><text x="235" y="252" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Node.js...</text></switch></g><path d="M 306.37 318 L 413.63 318" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 301.12 318 L 308.12 314.5 L 306.37 318 L 308.12 321.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 418.88 318 L 411.88 321.5 L 413.63 318 L 411.88 314.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 485 298 L 485 196.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 485 191.12 L 488.5 198.12 L 485 196.37 L 481.5 198.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 249px; margin-left: 486px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">refresh_token</div></div></div></foreignObject><text x="486" y="252" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">refresh_token</text></switch></g><rect x="170" y="298" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 318px; margin-left: 171px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Axios<br />(+request interceptor)</div></div></div></foreignObject><text x="235" y="322" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Axios...</text></switch></g><rect x="420" y="298" width="130" height="40" rx="6" ry="6" fill="#e6e6e6" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 318px; margin-left: 421px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Storage Service<br style="border-color: var(--border-color);" />(SeaweedFS)</div></div></div></foreignObject><text x="485" y="322" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Storage Service...</text></switch></g><rect x="420" y="150" width="130" height="40" rx="6" ry="6" fill="#e6e6e6" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 170px; margin-left: 421px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Authentication Service<br style="border-color: var(--border-color);" />(Keycloak)</div></div></div></foreignObject><text x="485" y="174" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Authentication Servic...</text></switch></g><rect x="6" y="7" width="60" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 17px; margin-left: 7px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">client-side</div></div></div></foreignObject><text x="36" y="21" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">client-side</text></switch></g><rect x="7" y="223" width="64" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 62px; height: 1px; padding-top: 233px; margin-left: 8px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">server-side<br />(Nuxt v2)</div></div></div></foreignObject><text x="39" y="237" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">server-sid...</text></switch></g><image x="70.5" y="6.5" width="20" height="20" xlink:href="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Google_Chrome_icon_%28February_2022%29.svg/2048px-Google_Chrome_icon_%28February_2022%29.svg.png" preserveAspectRatio="none"/><image x="95.5" y="6.1" width="20" height="20.8" xlink:href="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Firefox_logo%2C_2019.svg/1200px-Firefox_logo%2C_2019.svg.png" preserveAspectRatio="none"/><image x="74.5" y="222.66" width="28" height="20.84" xlink:href="https://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/Nuxt_logo.svg/2560px-Nuxt_logo.svg.png" preserveAspectRatio="none"/><rect x="371" y="356" width="30" height="16" fill="#e6e6e6" stroke="rgb(0, 0, 0)" pointer-events="all"/><rect x="408.5" y="356" width="140" height="16" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 138px; height: 1px; padding-top: 364px; margin-left: 411px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">External images</div></div></div></foreignObject><text x="411" y="368" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">External images</text></switch></g><rect x="371" y="376" width="30" height="16" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><rect x="408.5" y="376" width="140" height="16" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 138px; height: 1px; padding-top: 384px; margin-left: 411px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Maintained images</div></div></div></foreignObject><text x="411" y="388" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Maintained images</text></switch></g><rect x="386" y="356" width="15" height="16" fill="#dae8fc" stroke="#000000" pointer-events="all"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file diff --git a/.docs/images/architecture.drawio b/.docs/images/architecture.drawio index c2332494da9169fe06cbbae677863eb275c6b31d..f493f476b2e933ed3c1fc5d78ef864dd629ae9b2 100644 --- a/.docs/images/architecture.drawio +++ b/.docs/images/architecture.drawio @@ -1,6 +1,6 @@ -<mxfile host="Electron" modified="2024-01-17T12:41:27.263Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.1.18 Chrome/120.0.6099.199 Electron/28.1.2 Safari/537.36" etag="2tlEwPCE5mA3LfufPqf1" version="22.1.18" type="device" pages="7"> +<mxfile host="Electron" modified="2024-01-18T09:36:17.787Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/22.1.18 Chrome/120.0.6099.199 Electron/28.1.2 Safari/537.36" etag="VyIG_SLmjDzwPbzvCqrk" version="22.1.18" type="device" pages="7"> <diagram id="mvBsv1rP8O80Qe3yGnn_" name="docker-compose"> - <mxGraphModel dx="2074" dy="1182" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> + <mxGraphModel dx="1434" dy="822" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> @@ -218,10 +218,10 @@ <mxCell id="iy0HhJzZLXsiPmpU2ukH-4" value="Data DB Sidecar" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="560" y="563" width="130" height="40" as="geometry" /> </mxCell> - <mxCell id="ZFea1dL5_0zV0EoV6Noq-2" value="Researcher" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" vertex="1" parent="1"> + <mxCell id="ZFea1dL5_0zV0EoV6Noq-2" value="Researcher" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1"> <mxGeometry x="347" y="553" width="30" height="60" as="geometry" /> </mxCell> - <mxCell id="ZFea1dL5_0zV0EoV6Noq-3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#000000;startArrow=classic;startFill=1;dashed=1;entryPerimeter=0;" edge="1" parent="1" source="ZFea1dL5_0zV0EoV6Noq-2" target="V1Wl26Vbpgnno5Lb-wtg-34"> + <mxCell id="ZFea1dL5_0zV0EoV6Noq-3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#000000;startArrow=classic;startFill=1;dashed=1;entryPerimeter=0;" parent="1" source="ZFea1dL5_0zV0EoV6Noq-2" target="V1Wl26Vbpgnno5Lb-wtg-34" edge="1"> <mxGeometry x="-0.028" relative="1" as="geometry"> <mxPoint x="458" y="240" as="sourcePoint" /> <mxPoint as="offset" /> @@ -237,33 +237,33 @@ <mxPoint as="offset" /> </mxGeometry> </mxCell> - <mxCell id="ZFea1dL5_0zV0EoV6Noq-4" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6E6E6;" vertex="1" parent="1"> + <mxCell id="ZFea1dL5_0zV0EoV6Noq-4" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6E6E6;" parent="1" vertex="1"> <mxGeometry x="730" y="660" width="30" height="16" as="geometry" /> </mxCell> - <mxCell id="ZFea1dL5_0zV0EoV6Noq-5" value="External images" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> + <mxCell id="ZFea1dL5_0zV0EoV6Noq-5" value="External images" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> <mxGeometry x="767.5" y="660" width="140" height="16" as="geometry" /> </mxCell> - <mxCell id="ZFea1dL5_0zV0EoV6Noq-6" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxCell id="ZFea1dL5_0zV0EoV6Noq-6" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="730" y="680" width="30" height="16" as="geometry" /> </mxCell> - <mxCell id="ZFea1dL5_0zV0EoV6Noq-7" value="Maintained images" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> + <mxCell id="ZFea1dL5_0zV0EoV6Noq-7" value="Maintained images" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> <mxGeometry x="767.5" y="680" width="140" height="16" as="geometry" /> </mxCell> - <mxCell id="ZFea1dL5_0zV0EoV6Noq-8" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#000000;" vertex="1" parent="1"> + <mxCell id="ZFea1dL5_0zV0EoV6Noq-8" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#000000;" parent="1" vertex="1"> <mxGeometry x="745" y="660" width="15" height="16" as="geometry" /> </mxCell> </root> </mxGraphModel> </diagram> - <diagram name="Frontend" id="GYXS_N4ymJ7hX3zLKvDC"> + <diagram name="ui" id="GYXS_N4ymJ7hX3zLKvDC"> <mxGraphModel dx="1434" dy="822" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="583" pageHeight="413" math="0" shadow="0"> <root> <mxCell id="ihsuRJ9dWuDPEHVUeUyY-0" /> <mxCell id="ihsuRJ9dWuDPEHVUeUyY-1" parent="ihsuRJ9dWuDPEHVUeUyY-0" /> - <mxCell id="IRxpwOfG2jHF0YoYJLJK-1" value="" style="rounded=1;whiteSpace=wrap;html=1;arcSize=2;fillColor=#dae8fc;strokeColor=#000000;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxCell id="IRxpwOfG2jHF0YoYJLJK-1" value="" style="rounded=1;whiteSpace=wrap;html=1;arcSize=2;fillColor=#FFFFFF;strokeColor=#000000;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> <mxGeometry x="17" y="232" width="320" height="136" as="geometry" /> </mxCell> - <mxCell id="IRxpwOfG2jHF0YoYJLJK-0" value="" style="rounded=1;whiteSpace=wrap;html=1;arcSize=2;fillColor=#d5e8d4;strokeColor=#000000;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxCell id="IRxpwOfG2jHF0YoYJLJK-0" value="" style="rounded=1;whiteSpace=wrap;html=1;arcSize=2;fillColor=#FFFFFF;strokeColor=#000000;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> <mxGeometry x="17" y="20" width="320" height="204" as="geometry" /> </mxCell> <mxCell id="kLNLoM7m2o6o68vp3Wb9-0" value="UI" style="rounded=1;whiteSpace=wrap;html=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> @@ -287,16 +287,16 @@ <mxCell id="kLNLoM7m2o6o68vp3Wb9-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" source="kLNLoM7m2o6o68vp3Wb9-2" target="kLNLoM7m2o6o68vp3Wb9-10" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="kLNLoM7m2o6o68vp3Wb9-2" value="Vuex<br>(state)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF2CC;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-2" value="Vuex<br>(state)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DAE8FC;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> <mxGeometry x="187" y="170" width="130" height="40" as="geometry" /> </mxCell> <mxCell id="kLNLoM7m2o6o68vp3Wb9-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" source="kLNLoM7m2o6o68vp3Wb9-3" target="kLNLoM7m2o6o68vp3Wb9-4" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="kLNLoM7m2o6o68vp3Wb9-3" value="Vuex Persist<br>Plugin" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF2CC;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-3" value="Vuex Persist<br>Plugin" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DAE8FC;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> <mxGeometry x="27" y="170" width="130" height="40" as="geometry" /> </mxCell> - <mxCell id="kLNLoM7m2o6o68vp3Wb9-4" value="Local Storage" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#FFF2CC;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-4" value="Local Storage" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#DAE8FC;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> <mxGeometry x="62" y="60" width="60" height="80" as="geometry" /> </mxCell> <mxCell id="kLNLoM7m2o6o68vp3Wb9-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" source="kLNLoM7m2o6o68vp3Wb9-10" target="kLNLoM7m2o6o68vp3Wb9-12" edge="1"> @@ -313,22 +313,22 @@ </mxCell> <mxCell id="kLNLoM7m2o6o68vp3Wb9-20" value="refresh_token" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="kLNLoM7m2o6o68vp3Wb9-19" vertex="1" connectable="0"> <mxGeometry x="0.5604" y="1" relative="1" as="geometry"> - <mxPoint x="-21" y="34" as="offset" /> + <mxPoint x="1" y="34" as="offset" /> </mxGeometry> </mxCell> <mxCell id="kLNLoM7m2o6o68vp3Wb9-12" value="Axios<br>(+request interceptor)" style="rounded=1;whiteSpace=wrap;html=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> <mxGeometry x="187" y="318" width="130" height="40" as="geometry" /> </mxCell> - <mxCell id="kLNLoM7m2o6o68vp3Wb9-13" value="Gateway Service" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#B3B3B3;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-13" value="Storage Service<br style="border-color: var(--border-color);">(SeaweedFS)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E6E6E6;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> <mxGeometry x="437" y="318" width="130" height="40" as="geometry" /> </mxCell> - <mxCell id="kLNLoM7m2o6o68vp3Wb9-18" value="Authentication Service" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#B3B3B3;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-18" value="Authentication Service<br style="border-color: var(--border-color);">(Keycloak)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E6E6E6;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> <mxGeometry x="437" y="170" width="130" height="40" as="geometry" /> </mxCell> <mxCell id="4DtipyiVSSVc0IyAwunU-1" value="client-side" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> <mxGeometry x="23" y="27" width="60" height="20" as="geometry" /> </mxCell> - <mxCell id="4DtipyiVSSVc0IyAwunU-2" value="server-side<br>(nuxt.js)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxCell id="4DtipyiVSSVc0IyAwunU-2" value="server-side<br>(Nuxt v2)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> <mxGeometry x="24" y="243" width="64" height="20" as="geometry" /> </mxCell> <mxCell id="4DtipyiVSSVc0IyAwunU-4" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Google_Chrome_icon_%28February_2022%29.svg/2048px-Google_Chrome_icon_%28February_2022%29.svg.png;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> @@ -340,6 +340,21 @@ <mxCell id="4DtipyiVSSVc0IyAwunU-7" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/Nuxt_logo.svg/2560px-Nuxt_logo.svg.png;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> <mxGeometry x="92" y="243.15999999999997" width="28" height="20.84" as="geometry" /> </mxCell> + <mxCell id="GqgzYKxcxpW_CC4_t2HJ-0" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6E6E6;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="388" y="376" width="30" height="16" as="geometry" /> + </mxCell> + <mxCell id="GqgzYKxcxpW_CC4_t2HJ-1" value="External images" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="425.5" y="376" width="140" height="16" as="geometry" /> + </mxCell> + <mxCell id="GqgzYKxcxpW_CC4_t2HJ-2" value="" style="rounded=0;whiteSpace=wrap;html=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="388" y="396" width="30" height="16" as="geometry" /> + </mxCell> + <mxCell id="GqgzYKxcxpW_CC4_t2HJ-3" value="Maintained images" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="425.5" y="396" width="140" height="16" as="geometry" /> + </mxCell> + <mxCell id="GqgzYKxcxpW_CC4_t2HJ-4" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#000000;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="403" y="376" width="15" height="16" as="geometry" /> + </mxCell> </root> </mxGraphModel> </diagram> @@ -567,7 +582,7 @@ </mxGraphModel> </diagram> <diagram id="e2fuorb2m_XjboQ7R7_y" name="Data Ingest"> - <mxGraphModel dx="1434" dy="822" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> + <mxGraphModel dx="1147" dy="658" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> @@ -585,13 +600,14 @@ <mxPoint as="offset" /> </mxGeometry> </mxCell> - <mxCell id="0VJCIkSjTVNNat6pGbHc-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=27.5;entryPerimeter=0;" parent="1" source="0VJCIkSjTVNNat6pGbHc-3" target="0VJCIkSjTVNNat6pGbHc-13" edge="1"> + <mxCell id="0VJCIkSjTVNNat6pGbHc-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=27.5;entryPerimeter=0;" parent="1" source="0VJCIkSjTVNNat6pGbHc-3" edge="1"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="480" y="340" /> <mxPoint x="530" y="340" /> <mxPoint x="530" y="428" /> </Array> + <mxPoint x="575" y="427.5" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="0VJCIkSjTVNNat6pGbHc-36" value="3306/tcp" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="0VJCIkSjTVNNat6pGbHc-35" vertex="1" connectable="0"> @@ -626,7 +642,7 @@ <mxPoint as="offset" /> </mxGeometry> </mxCell> - <mxCell id="0VJCIkSjTVNNat6pGbHc-3" value="Gateway Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxCell id="0VJCIkSjTVNNat6pGbHc-3" value="Gateway Service<br style="border-color: var(--border-color);">(NGINX)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E6E6E6;" parent="1" vertex="1"> <mxGeometry x="382.5" y="278" width="130" height="40" as="geometry" /> </mxCell> <mxCell id="0VJCIkSjTVNNat6pGbHc-7" value="<b>JDBC</b>" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1"> @@ -652,11 +668,10 @@ </Array> </mxGeometry> </mxCell> - <mxCell id="0VJCIkSjTVNNat6pGbHc-13" value="data-db" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#fff2cc;strokeColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="575" y="400" width="60" height="80" as="geometry" /> - </mxCell> - <mxCell id="0VJCIkSjTVNNat6pGbHc-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="0VJCIkSjTVNNat6pGbHc-26" target="0VJCIkSjTVNNat6pGbHc-13" edge="1"> - <mxGeometry relative="1" as="geometry" /> + <mxCell id="0VJCIkSjTVNNat6pGbHc-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="0VJCIkSjTVNNat6pGbHc-26" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="575" y="440" as="targetPoint" /> + </mxGeometry> </mxCell> <mxCell id="0VJCIkSjTVNNat6pGbHc-38" value="3306/tcp" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="0VJCIkSjTVNNat6pGbHc-37" vertex="1" connectable="0"> <mxGeometry x="-0.1716" y="1" relative="1" as="geometry"> @@ -669,15 +684,16 @@ <mxCell id="0VJCIkSjTVNNat6pGbHc-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="0VJCIkSjTVNNat6pGbHc-29" target="0VJCIkSjTVNNat6pGbHc-26" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="0VJCIkSjTVNNat6pGbHc-29" value="Broker Service<br>(RabbitMQ)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxCell id="0VJCIkSjTVNNat6pGbHc-29" value="Broker Service<br style="border-color: var(--border-color);">(RabbitMQ)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E6E6E6;" parent="1" vertex="1"> <mxGeometry x="399.5" y="360" width="96" height="40" as="geometry" /> </mxCell> - <mxCell id="0VJCIkSjTVNNat6pGbHc-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=52.5;entryPerimeter=0;" parent="1" source="0VJCIkSjTVNNat6pGbHc-33" target="0VJCIkSjTVNNat6pGbHc-13" edge="1"> + <mxCell id="0VJCIkSjTVNNat6pGbHc-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=52.5;entryPerimeter=0;" parent="1" source="0VJCIkSjTVNNat6pGbHc-33" edge="1"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="530" y="500" /> <mxPoint x="530" y="453" /> </Array> + <mxPoint x="575" y="452.5" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="0VJCIkSjTVNNat6pGbHc-40" value="3306/tcp" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="0VJCIkSjTVNNat6pGbHc-39" vertex="1" connectable="0"> @@ -691,9 +707,30 @@ <mxCell id="SPLHNWc1rHttcZ-O3PPf-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="JkB3rZmVi6YrdEwAjtGV-5" target="0VJCIkSjTVNNat6pGbHc-33" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="JkB3rZmVi6YrdEwAjtGV-5" value="Storage Service<br>(minIO)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxCell id="JkB3rZmVi6YrdEwAjtGV-5" value="Storage Service<br>(SeaweedFS)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E6E6E6;" parent="1" vertex="1"> <mxGeometry x="237" y="394" width="96" height="40" as="geometry" /> </mxCell> + <mxCell id="yvNGLmbJRMNvVS071MuP-1" value="" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=8.600000000000023;fillColor=#dae8fc;strokeColor=#000000;" vertex="1" parent="1"> + <mxGeometry x="575" y="408" width="50" height="64" as="geometry" /> + </mxCell> + <mxCell id="yvNGLmbJRMNvVS071MuP-2" value="data-db" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" vertex="1" parent="1"> + <mxGeometry x="559" y="470" width="85" height="20" as="geometry" /> + </mxCell> + <mxCell id="jJosZR_OhRTGx9p3jnjP-1" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6E6E6;" vertex="1" parent="1"> + <mxGeometry x="447.5" y="540" width="30" height="16" as="geometry" /> + </mxCell> + <mxCell id="jJosZR_OhRTGx9p3jnjP-2" value="External images" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> + <mxGeometry x="485" y="540" width="140" height="16" as="geometry" /> + </mxCell> + <mxCell id="jJosZR_OhRTGx9p3jnjP-3" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="447.5" y="560" width="30" height="16" as="geometry" /> + </mxCell> + <mxCell id="jJosZR_OhRTGx9p3jnjP-4" value="Maintained images" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> + <mxGeometry x="485" y="560" width="140" height="16" as="geometry" /> + </mxCell> + <mxCell id="jJosZR_OhRTGx9p3jnjP-5" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#000000;" vertex="1" parent="1"> + <mxGeometry x="462.5" y="540" width="15" height="16" as="geometry" /> + </mxCell> </root> </mxGraphModel> </diagram> @@ -729,9 +766,24 @@ <mxCell id="S8wz9ZtwZs3Sd4maCRdY-7" value="Data DB Sidecar" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="520" y="869" width="130" height="40" as="geometry" /> </mxCell> - <mxCell id="m0IQrUpga-DAo2afT193-1" value="Storage Service<br>(minIO)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxCell id="m0IQrUpga-DAo2afT193-1" value="Storage Service<br style="border-color: var(--border-color);">(SeaweedFS)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E6E6E6;" parent="1" vertex="1"> <mxGeometry x="720" y="869" width="130" height="40" as="geometry" /> </mxCell> + <mxCell id="WQwfQuj7Yb_D7RAfNHcl-1" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#E6E6E6;" vertex="1" parent="1"> + <mxGeometry x="667.5" y="980" width="30" height="16" as="geometry" /> + </mxCell> + <mxCell id="WQwfQuj7Yb_D7RAfNHcl-2" value="External images" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> + <mxGeometry x="705" y="980" width="140" height="16" as="geometry" /> + </mxCell> + <mxCell id="WQwfQuj7Yb_D7RAfNHcl-3" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="667.5" y="1000" width="30" height="16" as="geometry" /> + </mxCell> + <mxCell id="WQwfQuj7Yb_D7RAfNHcl-4" value="Maintained images" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> + <mxGeometry x="705" y="1000" width="140" height="16" as="geometry" /> + </mxCell> + <mxCell id="WQwfQuj7Yb_D7RAfNHcl-5" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#000000;" vertex="1" parent="1"> + <mxGeometry x="682.5" y="980" width="15" height="16" as="geometry" /> + </mxCell> </root> </mxGraphModel> </diagram> diff --git a/.docs/images/data-ingest.svg b/.docs/images/data-ingest.svg index f399f752d9df00ffdf1b0835c625580cf3c543b3..7d2d1c383092ca7be8be502a74d8f1df3c09f920 100644 --- a/.docs/images/data-ingest.svg +++ b/.docs/images/data-ingest.svg @@ -1,3 +1,3 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="447px" height="384px" viewBox="-0.5 -0.5 447 384" style="background-color: rgb(255, 255, 255);"><defs/><g><path d="M 259 83 L 259 112 L 258.61 134.63" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 258.52 139.88 L 255.14 132.82 L 258.61 134.63 L 262.14 132.94 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 111px; margin-left: 259px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">5672/tcp</div></div></div></foreignObject><text x="259" y="114" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">5672/tcp</text></switch></g><ellipse cx="258.5" cy="7.5" rx="7.5" ry="7.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 258.5 15 L 258.5 40 M 258.5 20 L 243.5 20 M 258.5 20 L 273.5 20 M 258.5 40 L 243.5 60 M 258.5 40 L 273.5 60" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 67px; margin-left: 259px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><b>AMQP</b></div></div></div></foreignObject><text x="259" y="79" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">AMQP</text></switch></g><path d="M 258.5 181 L 258.5 216.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 258.5 221.88 L 255 214.88 L 258.5 216.63 L 262 214.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 198px; margin-left: 258px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">5672/tcp</div></div></div></foreignObject><text x="258" y="201" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">5672/tcp</text></switch></g><path d="M 291 181 L 291 203 L 341 203 L 341 290.5 L 379.63 290.5" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 384.88 290.5 L 377.88 294 L 379.63 290.5 L 377.88 287 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 256px; margin-left: 341px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">3306/tcp</div></div></div></foreignObject><text x="341" y="259" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">3306/tcp</text></switch></g><path d="M 226 181 L 226 203 L 175 203 L 175 336.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 175 341.88 L 171.5 334.88 L 175 336.63 L 178.5 334.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 251px; margin-left: 175px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">80/tcp</div></div></div></foreignObject><text x="175" y="254" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">80/tcp</text></switch></g><rect x="193.5" y="141" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 161px; margin-left: 195px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Gateway Service</div></div></div></foreignObject><text x="259" y="165" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Gateway Service</text></switch></g><ellipse cx="410" cy="40.5" rx="7.5" ry="7.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 410 48 L 410 73 M 410 53 L 395 53 M 410 53 L 425 53 M 410 73 L 395 93 M 410 73 L 425 93" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 100px; margin-left: 410px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><b>JDBC</b></div></div></div></foreignObject><text x="410" y="112" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">JDBC</text></switch></g><path d="M 330.37 163 L 411 163 L 411 119.37" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 325.12 163 L 332.12 159.5 L 330.37 163 L 332.12 166.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 411 114.12 L 414.5 121.12 L 411 119.37 L 407.5 121.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 163px; margin-left: 371px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">3306/tcp</div></div></div></foreignObject><text x="371" y="166" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">3306/tcp</text></switch></g><path d="M 91 63 L 28 63 L 28 277 L 48 277" fill="none" stroke="#b3b3b3" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 44 281 L 36 273 M 44 273 L 36 281" fill="none" stroke="#b3b3b3" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 149px; margin-left: 28px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><font color="#b3b3b3">(not used in<br />the default<br />config)</font></div></div></div></foreignObject><text x="28" y="152" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">(not used in...</text></switch></g><ellipse cx="106" cy="40.5" rx="7.5" ry="7.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 106 48 L 106 73 M 106 53 L 91 53 M 106 53 L 121 53 M 106 73 L 91 93 M 106 73 L 121 93" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 100px; margin-left: 106px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><b>API</b></div></div></div></foreignObject><text x="106" y="112" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">API</text></switch></g><path d="M 106 119.37 L 106 163 L 187.63 163" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 106 114.12 L 109.5 121.12 L 106 119.37 L 102.5 121.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 192.88 163 L 185.88 166.5 L 187.63 163 L 185.88 159.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 163px; margin-left: 141px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">80/tcp</div></div></div></foreignObject><text x="141" y="166" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">80/tcp</text></switch></g><path d="M 386 278 C 386 269.72 399.43 263 416 263 C 423.96 263 431.59 264.58 437.21 267.39 C 442.84 270.21 446 274.02 446 278 L 446 328 C 446 336.28 432.57 343 416 343 C 399.43 343 386 336.28 386 328 Z" fill="#fff2cc" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 446 278 C 446 286.28 432.57 293 416 293 C 399.43 293 386 286.28 386 278" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 316px; margin-left: 387px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">data-db</div></div></div></foreignObject><text x="416" y="319" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">data-db</text></switch></g><path d="M 306.5 303 L 379.63 303" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 384.88 303 L 377.88 306.5 L 379.63 303 L 377.88 299.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 303px; margin-left: 340px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">3306/tcp</div></div></div></foreignObject><text x="340" y="306" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">3306/tcp</text></switch></g><rect x="210.5" y="283" width="96" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 94px; height: 1px; padding-top: 303px; margin-left: 212px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Data Service<br />(Spring AMQP)</div></div></div></foreignObject><text x="259" y="307" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Data Service...</text></switch></g><path d="M 258.5 263 L 258.5 276.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 258.5 281.88 L 255 274.88 L 258.5 276.63 L 262 274.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="210.5" y="223" width="96" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 94px; height: 1px; padding-top: 243px; margin-left: 212px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Broker Service<br />(RabbitMQ)</div></div></div></foreignObject><text x="259" y="247" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Broker Service...</text></switch></g><path d="M 223 363 L 341 363 L 341 315.5 L 379.63 315.5" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 384.88 315.5 L 377.88 319 L 379.63 315.5 L 377.88 312 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 364px; margin-left: 292px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">3306/tcp</div></div></div></foreignObject><text x="292" y="367" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">3306/tcp</text></switch></g><rect x="127" y="343" width="96" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 94px; height: 1px; padding-top: 363px; margin-left: 128px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Metadata Service<br />(Spring AMQP)</div></div></div></foreignObject><text x="175" y="367" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Metadata Service...</text></switch></g><path d="M 96 250.63 L 96 193 L 207.4 193 L 207.41 180.64" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 96 255.88 L 92.5 248.88 L 96 250.63 L 99.5 248.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 216px; margin-left: 99px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">80/tcp</div></div></div></foreignObject><text x="99" y="219" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">80/tcp</text></switch></g><path d="M 96 297 L 96 363 L 120.63 363" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 125.88 363 L 118.88 366.5 L 120.63 363 L 118.88 359.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="48" y="257" width="96" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 94px; height: 1px; padding-top: 277px; margin-left: 49px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Upload Service<br />(TUS)</div></div></div></foreignObject><text x="96" y="281" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Upload Service...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="408px" height="440px" viewBox="-0.5 -0.5 408 440"><defs/><g><path d="M 211 83 L 211.52 112.52 L 210.48 112.52 L 210.5 134.63" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 210.5 139.88 L 206.99 132.88 L 210.5 134.63 L 213.99 132.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 112px; margin-left: 212px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">5672/tcp</div></div></div></foreignObject><text x="212" y="115" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">5672/tcp</text></switch></g><ellipse cx="210.5" cy="7.5" rx="7.5" ry="7.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 210.5 15 L 210.5 40 M 210.5 20 L 195.5 20 M 210.5 20 L 225.5 20 M 210.5 40 L 195.5 60 M 210.5 40 L 225.5 60" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 67px; margin-left: 211px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><b>AMQP</b></div></div></div></foreignObject><text x="211" y="79" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">AMQP</text></switch></g><path d="M 210.5 181 L 210.5 216.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 210.5 221.88 L 207 214.88 L 210.5 216.63 L 214 214.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 198px; margin-left: 210px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">5672/tcp</div></div></div></foreignObject><text x="210" y="201" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">5672/tcp</text></switch></g><path d="M 243 181 L 243.04 203 L 293.04 203 L 293.04 290.52 L 331.63 290.5" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 336.88 290.5 L 329.88 294 L 331.63 290.5 L 329.88 287 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 255px; margin-left: 292px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">3306/tcp</div></div></div></foreignObject><text x="292" y="259" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">3306/tcp</text></switch></g><path d="M 178 181 L 178 203 L 127.04 203 L 127 336.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 127 341.88 L 123.5 334.88 L 127 336.63 L 130.5 334.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 250px; margin-left: 126px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">80/tcp</div></div></div></foreignObject><text x="126" y="254" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">80/tcp</text></switch></g><path d="M 178 181 L 178 203 L 48 203 L 48 250.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 48 255.88 L 44.5 248.88 L 48 250.63 L 51.5 248.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 220px; margin-left: 46px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">9000/tcp</div></div></div></foreignObject><text x="46" y="224" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">9000/tcp</text></switch></g><rect x="145.5" y="141" width="130" height="40" rx="6" ry="6" fill="#e6e6e6" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 161px; margin-left: 147px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Gateway Service<br style="border-color: var(--border-color);" />(NGINX)</div></div></div></foreignObject><text x="211" y="165" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Gateway Service...</text></switch></g><ellipse cx="362" cy="40.5" rx="7.5" ry="7.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 362 48 L 362 73 M 362 53 L 347 53 M 362 53 L 377 53 M 362 73 L 347 93 M 362 73 L 377 93" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 100px; margin-left: 362px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><b>JDBC</b></div></div></div></foreignObject><text x="362" y="112" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">JDBC</text></switch></g><path d="M 282.37 163.03 L 363.52 163.48 L 363.07 119.37" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 277.12 163.01 L 284.14 159.54 L 282.37 163.03 L 284.1 166.54 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 363.01 114.12 L 366.58 121.08 L 363.07 119.37 L 359.58 121.15 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 163px; margin-left: 323px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">3306/tcp</div></div></div></foreignObject><text x="323" y="167" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">3306/tcp</text></switch></g><ellipse cx="58" cy="40.5" rx="7.5" ry="7.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 58 48 L 58 73 M 58 53 L 43 53 M 58 53 L 73 53 M 58 73 L 43 93 M 58 73 L 73 93" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 100px; margin-left: 58px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><b>API</b></div></div></div></foreignObject><text x="58" y="112" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">API</text></switch></g><path d="M 58 119.37 L 58 163 L 139.63 163" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 58 114.12 L 61.5 121.12 L 58 119.37 L 54.5 121.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 144.88 163 L 137.88 166.5 L 139.63 163 L 137.88 159.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 163px; margin-left: 93px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">80/tcp</div></div></div></foreignObject><text x="93" y="166" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">80/tcp</text></switch></g><path d="M 258.5 303 L 298.24 303 L 331.63 303" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 336.88 303 L 329.88 306.5 L 331.63 303 L 329.88 299.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 302px; margin-left: 292px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">3306/tcp</div></div></div></foreignObject><text x="292" y="306" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">3306/tcp</text></switch></g><rect x="162.5" y="283" width="96" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 94px; height: 1px; padding-top: 303px; margin-left: 164px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Data Service<br />(Spring AMQP)</div></div></div></foreignObject><text x="211" y="307" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Data Service...</text></switch></g><path d="M 210.5 263 L 210.5 276.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 210.5 281.88 L 207 274.88 L 210.5 276.63 L 214 274.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="162.5" y="223" width="96" height="40" rx="6" ry="6" fill="#e6e6e6" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 94px; height: 1px; padding-top: 243px; margin-left: 164px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Broker Service<br style="border-color: var(--border-color);" />(RabbitMQ)</div></div></div></foreignObject><text x="211" y="247" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Broker Service...</text></switch></g><path d="M 175 363 L 293.04 363 L 293.04 315.48 L 331.63 315.5" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 336.88 315.5 L 329.88 319 L 331.63 315.5 L 329.88 312 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 363px; margin-left: 243px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">3306/tcp</div></div></div></foreignObject><text x="243" y="367" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">3306/tcp</text></switch></g><rect x="79" y="343" width="96" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 94px; height: 1px; padding-top: 363px; margin-left: 80px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Metadata Service<br />(Spring AMQP)</div></div></div></foreignObject><text x="127" y="367" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Metadata Service...</text></switch></g><path d="M 48 297 L 48 363 L 72.63 363" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 77.88 363 L 70.88 366.5 L 72.63 363 L 70.88 359.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="257" width="96" height="40" rx="6" ry="6" fill="#e6e6e6" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 94px; height: 1px; padding-top: 277px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Storage Service<br />(SeaweedFS)</div></div></div></foreignObject><text x="48" y="281" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Storage Service...</text></switch></g><path d="M 338 279.6 C 338 274.85 349.19 271 363 271 C 369.63 271 375.99 271.91 380.68 273.52 C 385.37 275.13 388 277.32 388 279.6 L 388 326.4 C 388 331.15 376.81 335 363 335 C 349.19 335 338 331.15 338 326.4 Z" fill="#dae8fc" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 388 279.6 C 388 284.35 376.81 288.2 363 288.2 C 349.19 288.2 338 284.35 338 279.6" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="322" y="333" width="85" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 89px; height: 1px; padding-top: 343px; margin-left: 320px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">data-db</div></div></div></foreignObject><text x="365" y="347" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">data-db</text></switch></g><rect x="210.5" y="403" width="30" height="16" fill="#e6e6e6" stroke="rgb(0, 0, 0)" pointer-events="all"/><rect x="248" y="403" width="140" height="16" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 138px; height: 1px; padding-top: 411px; margin-left: 250px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">External images</div></div></div></foreignObject><text x="250" y="415" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">External images</text></switch></g><rect x="210.5" y="423" width="30" height="16" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><rect x="248" y="423" width="140" height="16" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 138px; height: 1px; padding-top: 431px; margin-left: 250px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Maintained images</div></div></div></foreignObject><text x="250" y="435" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Maintained images</text></switch></g><rect x="225.5" y="403" width="15" height="16" fill="#dae8fc" stroke="#000000" pointer-events="all"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file diff --git a/.docs/images/identifier-doi.png b/.docs/images/identifier-doi.png deleted file mode 100644 index 114f42c224a95651fbd7216b5d8c3d5e0a826898..0000000000000000000000000000000000000000 Binary files a/.docs/images/identifier-doi.png and /dev/null differ diff --git a/.docs/system-databases-auth.md b/.docs/system-databases-auth.md index c368151a4c7fab0c78c1c6555003ca35efc15f92..90ba31bcf55c6e53ef2471f45911c02a69d425fa 100644 --- a/.docs/system-databases-auth.md +++ b/.docs/system-databases-auth.md @@ -8,7 +8,7 @@ author: Martin Weise !!! debug "Debug Information" - Image: [`bitnami/mariadb:10.5`](https://hub.docker.com/r/bitnami/mariadb) + Image: [`bitnami/mariadb:11.2.2-debian-11-r0`](https://hub.docker.com/r/bitnami/mariadb) * Ports: 3306/tcp * JDBC: `jdbc://mariadb:<hostname>:3306` diff --git a/.docs/system-databases-data.md b/.docs/system-databases-data.md index ff62c19476839a92c7c612a1f12dcfbfbf2f113f..7e02599f943a14283429d179a91315a6bd316d72 100644 --- a/.docs/system-databases-data.md +++ b/.docs/system-databases-data.md @@ -8,11 +8,18 @@ author: Martin Weise !!! debug "Debug Information" - Image: [`bitnami/mariadb:10.5`](https://hub.docker.com/r/bitnami/mariadb) + Image: [`bitnami/mariadb-galera:11.2.2-debian-11-r0`](https://hub.docker.com/r/bitnami/mariadb-galera) * Ports: 3306/tcp * JDBC: `jdbc://mariadb:<hostname>:3306` +!!! debug "Debug Information" + + Image: [`dbrepo/data-db-sidecar:$TAG`](https://hub.docker.com/r/dbrepo/data-db-sidecar) + + * Ports: 3305/tcp + * Swagger UI: `http://<hostname>:1080/swagger-ui/` <a href="../swagger/sidecar" target="_blank">:fontawesome-solid-square-up-right: view online</a> + ## Overview By default, only one Data Database is deployed. You can deploy multiple (different) Data Database instances and make @@ -21,7 +28,7 @@ them available in the repository as follows: ```console curl \ -sSL \ - http://<hostname>:9093/api/container \ + http://<hostname>/api/container \ -X POST \ -d '{"name": "Data Database 2", "imageId": 1, "host": "example.com", "port": 3306, "privilegedUsername": "root", "privilegedPassword": "s3cr3t" }' ``` diff --git a/.docs/system-databases-metadata.md b/.docs/system-databases-metadata.md index 1cfcf69885006ca8ed560142fd4103ab5eb92bc0..326ed3874e3f968fb28f5eaba677c53f9d71b7fa 100644 --- a/.docs/system-databases-metadata.md +++ b/.docs/system-databases-metadata.md @@ -8,7 +8,7 @@ author: Martin Weise !!! debug "Debug Information" - Image: [`bitnami/mariadb:10.5`](https://hub.docker.com/r/bitnami/mariadb) + Image: [`dbrepo/metadata-db:$TAG`](https://hub.docker.com/r/dbrepo/metadata-db) * Ports: 3306/tcp * JDBC: `jdbc://mariadb:<hostname>:3306` diff --git a/.docs/system-databases-search.md b/.docs/system-databases-search.md index ce9965ee12e33c66f25639c79bb8109aff19b10d..c01fa7c638d126148aa8925b02df3eb71af5ffdb 100644 --- a/.docs/system-databases-search.md +++ b/.docs/system-databases-search.md @@ -8,11 +8,9 @@ author: Martin Weise !!! debug "Debug Information" - Image: [`dbrepo/search-db:1.4`](https://hub.docker.com/r/dbrepo/search-db) + Image: [`dbrepo/search-db:$TAG`](https://hub.docker.com/r/dbrepo/search-db) * Ports: 9200/tcp - * Indexes: `http://:9200/_all` - * Health: `http://:9200/_cluster/health` ## Overview diff --git a/.docs/system-other-search-dashboard.md b/.docs/system-other-search-dashboard.md index a2ac309560e7cb6bf987c8f11ad0e7cdbd53b78e..a3d0e9ae12c590a226eb94afcc3c8034e4376eca 100644 --- a/.docs/system-other-search-dashboard.md +++ b/.docs/system-other-search-dashboard.md @@ -11,7 +11,7 @@ author: Martin Weise Image: [`opensearchproject/opensearch-dashboards:2.10.0`](https://hub.docker.com/r/opensearchproject/opensearch-dashboards) * Ports: 5601/tcp - * UI: `http://:5601/admin/dashboard/` + * UI: `http://<hostname>/admin/dashboard/` ## Overview diff --git a/.docs/system-other-ui.md b/.docs/system-other-ui.md index 6ea29369f743f6a806c3135f04f8116cc59dc5e6..c8ca1c18aae65fe905532d5291a88dbe00db7720 100644 --- a/.docs/system-other-ui.md +++ b/.docs/system-other-ui.md @@ -8,11 +8,11 @@ author: Martin Weise !!! debug "Debug Information" - Image: [`dbrepo/ui:1.4`](https://hub.docker.com/r/dbrepo/ui) + Image: [`dbrepo/ui:$TAG`](https://hub.docker.com/r/dbrepo/ui) * Ports: 3000/tcp, 9100/tcp - * Prometheus: `http://:9100/metrics` - * UI: `http://:3000/` + * Prometheus: `http://<hostname>:9100/metrics` + * UI: `http://<hostname>/` ## Overview @@ -24,7 +24,7 @@ It provides a *user interface* (UI) for a researcher to interact with the databa </figure> <figure markdown> - + <figcaption>Architecture of the UI microservice</figcaption> </figure> diff --git a/.docs/system-services-analyse.md b/.docs/system-services-analyse.md index 93b188279e47e9e1ad5c85b66057737493e91365..66ee40d47789180e4ad4d5c47e200aba7d493ff6 100644 --- a/.docs/system-services-analyse.md +++ b/.docs/system-services-analyse.md @@ -8,12 +8,12 @@ author: Martin Weise !!! debug "Debug Information" - Image: [`dbrepo/analyse-service:1.4`](https://hub.docker.com/r/dbrepo/analyse-service) + Image: [`dbrepo/analyse-service:$TAG`](https://hub.docker.com/r/dbrepo/analyse-service) * Ports: 5000/tcp * Prometheus: `http://<hostname>:5000/metrics` * Health: `http://<hostname>:5000/health` - * Swagger UI: `http://<hostname>:5000/swagger-ui/index.html` <a href="../swagger/analyse" target="_blank">:fontawesome-solid-square-up-right: view online</a> + * Swagger UI: `http://<hostname>:5000/swagger-ui/` <a href="../swagger/analyse" target="_blank">:fontawesome-solid-square-up-right: view online</a> ## Overview diff --git a/.docs/system-services-authentication.md b/.docs/system-services-authentication.md index 1eec90ea7703bb865c1be8ef3d65f7b78fa0ff9a..41cea49974dfc7dff90ca6b2ca7ef46d0afa9a03 100644 --- a/.docs/system-services-authentication.md +++ b/.docs/system-services-authentication.md @@ -8,12 +8,12 @@ author: Martin Weise !!! debug "Debug Information" - Image: [`dbrepo/authentication-service:1.4`](https://hub.docker.com/r/dbrepo/authentication-service) + Image: [`dbrepo/authentication-service:$TAG`](https://hub.docker.com/r/dbrepo/authentication-service) * Ports: 8080/tcp - * Admin Console: `http://<hostname>:8080/api/auth/admin/` * Health: `http://<hostname>:8080/api/auth/health` * Prometheus: `http://<hostname>:8080/api/auth/metrics` + * UI: `http://<hostname>/api/auth/admin/` ## Overview diff --git a/.docs/system-services-broker.md b/.docs/system-services-broker.md index f7919f8bd2855a0c3db7e9fcd215b87fe2d1e6bd..cc4b775c1fe20a27eabad6761e9cf4a223ed94cb 100644 --- a/.docs/system-services-broker.md +++ b/.docs/system-services-broker.md @@ -12,8 +12,8 @@ author: Martin Weise * Ports: 5672/tcp, 15672/tcp, 15692/tcp * AMQP: `amqp://<hostname>:5672` - * Management: `http://<hostname>:15672` * Prometheus: `http://<hostname>:15692/metrics` + * Management: `http://<hostname>/admin/broker` ## Overview diff --git a/.docs/system-services-data.md b/.docs/system-services-data.md index 698fc3bbb4a044b47092888c7e44c82c644367f7..88e781e6e8bc22af2dc6299037a164300cafdb8c 100644 --- a/.docs/system-services-data.md +++ b/.docs/system-services-data.md @@ -8,7 +8,7 @@ author: Martin Weise !!! debug "Debug Information" - Image: [`dbrepo/data-service:1.4`](https://hub.docker.com/r/dbrepo/data-service) + Image: [`dbrepo/data-service:$TAG`](https://hub.docker.com/r/dbrepo/data-service) * Ports: 9093/tcp * Info: `http://<hostname>:9093/actuator/info` diff --git a/.docs/system-services-metadata.md b/.docs/system-services-metadata.md index 266468579c99ba8f169b01fae618315fa6607b7c..e9a2e59f5071a4355c93e79ae6412793e011aacd 100644 --- a/.docs/system-services-metadata.md +++ b/.docs/system-services-metadata.md @@ -8,15 +8,15 @@ author: Martin Weise !!! debug "Debug Information" - Image: [`dbrepo/metadata-service:1.4`](https://hub.docker.com/r/dbrepo/metadata-service) + Image: [`dbrepo/metadata-service:$TAG`](https://hub.docker.com/r/dbrepo/metadata-service) * Ports: 9099/tcp - * Info: `http://9093:9099/actuator/info` - * Health: `http://9093:9099/actuator/health` - - Readiness: `http://9093:9099/actuator/health/readiness` - - Liveness: `http://9093:9099/actuator/health/liveness` - * Prometheus: `http://9093:9099/actuator/prometheus` - * Swagger UI: `http://9093:9099/swagger-ui/index.html` <a href="../swagger/metadata" target="_blank">:fontawesome-solid-square-up-right: view online</a> + * Info: `http://<hostname>:9099/actuator/info` + * Health: `http://<hostname>:9099/actuator/health` + - Readiness: `http://<hostname>:9099/actuator/health/readiness` + - Liveness: `http://<hostname>:9099/actuator/health/liveness` + * Prometheus: `http://<hostname>:9099/actuator/prometheus` + * Swagger UI: `http://<hostname>:9099/swagger-ui/index.html` <a href="../swagger/metadata" target="_blank">:fontawesome-solid-square-up-right: view online</a> ## Overview diff --git a/.docs/system-services-search.md b/.docs/system-services-search.md new file mode 100644 index 0000000000000000000000000000000000000000..2ce466157ba369255dfa01483efa2f1eafe2d9d5 --- /dev/null +++ b/.docs/system-services-search.md @@ -0,0 +1,36 @@ +--- +author: Martin Weise +--- + +# Search Service + +## tl;dr + +!!! debug "Debug Information" + + Image: [`dbrepo/search-service:$TAG`](https://hub.docker.com/r/dbrepo/search-service) + + * Ports: 4000/tcp + * Health: `http://<hostname>:4000/api/search/health` + * Prometheus: `http://<hostname>:4000/metrics` + * Swagger UI: `http://<hostname>:4000/swagger-ui/` <a href="../swagger/search" target="_blank">:fontawesome-solid-square-up-right: view online</a> + +## Overview + + + +### Examples + +See the [usage page](../usage-search). + +## Limitations + +!!! question "Do you miss functionality? Do these limitations affect you?" + + We strongly encourage you to help us implement it as we are welcoming contributors to open-source software and get + in [contact](../contact) with us, we happily answer requests for collaboration with attached CV and your programming + experience! + +## Security + +TBD diff --git a/.docs/system-services-upload.md b/.docs/system-services-upload.md index 656b82b8692a80aaacac6f8a1283492c9ea2ee61..0047179600eb6365e69b4970e1eb9f4bfca7eb8e 100644 --- a/.docs/system-services-upload.md +++ b/.docs/system-services-upload.md @@ -8,11 +8,12 @@ author: Martin Weise !!! debug "Debug Information" - Image: [tusproject/tusd:v1.12`](https://hub.docker.com/r/tusproject/tusd) + Image: [`tusproject/tusd:v1.12`](https://hub.docker.com/r/tusproject/tusd) * Ports: 1080/tcp * Prometheus: `http://<hostname>:1080/api/upload/metrics` * API: `http://<hostname>:1080/api/upload` + * Swagger UI: <a href="../swagger/upload" target="_blank">:fontawesome-solid-square-up-right: view online</a> ## Overview diff --git a/.docs/usage-identifier.md b/.docs/usage-identifier.md deleted file mode 100644 index 2a0135a50100972acc5329018d5a67ca974980c7..0000000000000000000000000000000000000000 --- a/.docs/usage-identifier.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -author: Martin Weise ---- - -# Identifier Service - -From version 1.2 onwards there are two modes for the Identifier Service: - -1. Persistent Identifier (PID) -2. Digital Object Identifier (DOI) - -By default, the URI mode is used, creating a PID for databases or subsets. If starting the Identifier Service in DOI mode, -a DOI is minted for persistent identification of databases or subsets. Using the DOI system is entirely *optional* and -should not be done for test-deployments. - -<figure markdown> - -<figcaption>Minting a test-DOI for a subset</figcaption> -</figure> diff --git a/.docs/usage-metadata.md b/.docs/usage-metadata.md new file mode 100644 index 0000000000000000000000000000000000000000..fd2587a7fc21fff58aeb3a7c14acedbabeccb29f --- /dev/null +++ b/.docs/usage-metadata.md @@ -0,0 +1,7 @@ +--- +author: Martin Weise +--- + +# Metadata Service + +TBD \ No newline at end of file diff --git a/.docs/usage-search.md b/.docs/usage-search.md new file mode 100644 index 0000000000000000000000000000000000000000..1afa21dbb6e31f116efdf68eb893be7f61f080a1 --- /dev/null +++ b/.docs/usage-search.md @@ -0,0 +1,7 @@ +--- +author: Martin Weise +--- + +# Search Service + +TBD \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b2bb93654e904fafb91608f795686ae39133d615..00b674386856889d6fb85ac03b3783c2c66c421e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -527,7 +527,8 @@ build-api-latest: script: - apk add bash git - git fetch && git checkout dev - - bash .docs/.swagger/generate.sh + - TAG=latest bash .docs/.swagger/swagger-version.sh + - bash .docs/.swagger/swagger-site.sh - mkdir -p ./swagger/latest - cp -r ./site/* ./swagger/latest/ cache: @@ -573,7 +574,8 @@ build-api-1.4: script: - apk add bash git maven - git fetch && git checkout release-v1.4 - - bash .docs/.swagger/generate.sh + - TAG=${VERSION} bash .docs/.swagger/swagger-version.sh + - bash .docs/.swagger/swagger-site.sh - mkdir -p ./swagger/1.4 - cp -r ./site/* ./swagger/1.4/ cache: @@ -618,10 +620,11 @@ docs-latest: - release-v1.3 - release-v1.4 script: - - apt-get update && apt-get install -y git make + - apt-get update && apt-get install -y git make sed - git fetch && git checkout dev - pip install -r ./requirements.txt - mkdir -p ./final + - find ./.docs -type f -exec sed -i -e "s/\$TAG/latest/g" {} \; - mkdocs build && cp -r ./site ./final/latest - cp ./.docs/redirect.html ./final/index.html - cp -r ./swagger/latest ./final/latest/swagger @@ -674,10 +677,11 @@ docs-1.4: - release-v1.3 - release-v1.4 script: - - apt-get update && apt-get install -y git make + - apt-get update && apt-get install -y git make sed - git fetch && git checkout release-v1.4 - pip install -r ./.docs/requirements.txt - mkdir -p ./final + - find ./.docs -type f -exec sed -i -e "s/\$TAG/${VERSION}/g" {} \; - mkdocs build && cp -r ./site ./final/1.4 - cp -r ./swagger/1.4 ./final/1.4/swagger cache: diff --git a/dbrepo-search-service/Dockerfile b/dbrepo-search-service/Dockerfile index bb0ea12c68bf4194dd8e085cce48d8f05a7ddfcc..f5acfd093b2770325a20d81b33f1c15c44dafeae 100644 --- a/dbrepo-search-service/Dockerfile +++ b/dbrepo-search-service/Dockerfile @@ -27,4 +27,6 @@ ENV LOG_LEVEL=info RUN chown -R alpine:alpine ./ USER alpine +EXPOSE 4000 + ENTRYPOINT ["sh", "./scripts/docker-entrypoint.sh"] diff --git a/mkdocs.yml b/mkdocs.yml index f4ee5e8f5be1810a4e98a80334a92de0b3ac8dd2..bc44b686bcea3e6d96b60fd993ae414d10e462d6 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -15,11 +15,12 @@ nav: - Analyse Service: system-services-analyse.md - Authentication Service: system-services-authentication.md - Broker Service: system-services-broker.md - - Gateway Service: system-services-gateway.md - Data Service: system-services-data.md + - Gateway Service: system-services-gateway.md - Metadata Service: system-services-metadata.md - - Upload Service: system-services-upload.md + - Search Service: system-services-search.md - Storage Service: system-services-storage.md + - Upload Service: system-services-upload.md - Databases: - Auth Database: system-databases-auth.md - Data Database: system-databases-data.md @@ -34,9 +35,10 @@ nav: - Analyse Service: usage-analyse.md - Authentication Service: usage-auth.md - Broker Service: usage-broker.md - - Identifier Service: usage-identifier.md - - Upload Service: usage-upload.md + - Metadata Service: usage-metadata.md + - Search Service: usage-search.md - Storage Service: usage-storage.md + - Upload Service: usage-upload.md - publications.md - contact.md extra_css: