diff --git a/.gitignore b/.gitignore index 61e87bc0e..efe2cd61d 100644 --- a/.gitignore +++ b/.gitignore @@ -326,6 +326,9 @@ scripts/dockerize/dockerfiles /jdk_25_maven/cs/rest/commafeed/commafeed-client/target/ /jdk_25_maven/em/external/rest/commafeed/target/ /jdk_25_maven/em/embedded/rest/commafeed/target/ +/jdk_25_maven/cs/rest/jasper/target/ +/jdk_25_maven/em/external/rest/jasper/target/ +/jdk_25_maven/em/embedded/rest/jasper/target/ /jdk_11_maven/em/embedded/rest/tracking-system/target/ /jdk_11_maven/em/external/rest/tracking-system/target/ /jdk_17_maven/em/embedded/rest/tiltaksgjennomforing/target/ diff --git a/README.md b/README.md index e7d34296c..8238051c0 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ How to setup authentication information, based on the current content of the ini Auth configuration files can found in the [auth](auth) folder. -### REST: Java/Kotlin (37) +### REST: Java/Kotlin (38) * **Bibliothek** (MIT), [jdk_17_gradle/cs/rest/bibliothek](jdk_17_gradle/cs/rest/bibliothek), from [https://github.com/PaperMC/bibliothek](https://github.com/PaperMC/bibliothek) @@ -109,6 +109,8 @@ Auth configuration files can found in the [auth](auth) folder. * **HTTP Patch Spring** (MIT), [jdk_11_maven/cs/rest/http-patch-spring](jdk_11_maven/cs/rest/http-patch-spring), from [https://github.com/cassiomolin/http-patch-spring](https://github.com/cassiomolin/http-patch-spring) +* **Jasper** (MIT), [jdk_25_maven/cs/rest/jasper](jdk_25_maven/cs/rest/jasper), from [https://github.com/cjmalloy/jasper](https://github.com/cjmalloy/jasper) + * **Languagetool** (LGPL), [jdk_8_maven/cs/rest/original/languagetool](jdk_8_maven/cs/rest/original/languagetool), from [https://github.com/languagetool-org/languagetool](https://github.com/languagetool-org/languagetool) * **Market** (MIT), [jdk_11_maven/cs/rest-gui/market](jdk_11_maven/cs/rest-gui/market), from [https://github.com/aleksey-lukyanets/market](https://github.com/aleksey-lukyanets/market) diff --git a/auth/jasper-auth.yaml b/auth/jasper-auth.yaml new file mode 100644 index 000000000..6c57dd3f2 --- /dev/null +++ b/auth/jasper-auth.yaml @@ -0,0 +1,31 @@ +auth: + - name: admin + fixedHeaders: + - name: User-Tag + value: +user/admin + - name: User-Role + value: ROLE_ADMIN + - name: X-XSRF-TOKEN + value: evomaster + - name: Cookie + value: XSRF-TOKEN=evomaster + - name: alice + fixedHeaders: + - name: User-Tag + value: +user/alice + - name: User-Role + value: ROLE_USER + - name: X-XSRF-TOKEN + value: evomaster + - name: Cookie + value: XSRF-TOKEN=evomaster + - name: bob + fixedHeaders: + - name: User-Tag + value: +user/bob + - name: User-Role + value: ROLE_USER + - name: X-XSRF-TOKEN + value: evomaster + - name: Cookie + value: XSRF-TOKEN=evomaster diff --git a/dockerfiles/jasper.dockerfile b/dockerfiles/jasper.dockerfile new file mode 100644 index 000000000..eb99db196 --- /dev/null +++ b/dockerfiles/jasper.dockerfile @@ -0,0 +1,17 @@ +FROM amazoncorretto:25-alpine-jdk + +COPY ./dist/jasper-sut.jar . +COPY ./dist/jacocoagent.jar . + + + +#ENV TOOL="undefined" +#ENV RUN="0" + +ENTRYPOINT \ + java \ +# unfortunately dumponexit is completely unreliable in Docker :( +# -javaagent:jacocoagent.jar=destfile=./jacoco/jasper__${TOOL}__${RUN}__jacoco.exec,append=false,dumponexit=true \ + -javaagent:jacocoagent.jar=output=tcpserver,address=*,port=6300,append=false,dumponexit=false \ + -jar jasper-sut.jar \ + --server.port=8080 --spring.profiles.active=api-docs --spring.datasource.url=jdbc:postgresql://db:5432/jasper --spring.datasource.username=postgres --spring.datasource.password=password --spring.datasource.hikari.auto-commit=false --spring.jpa.database-platform=jasper.config.PostgreSQLDialect --springdoc.api-docs.path=/api/v3/api-docs --jasper.allow-user-tag-header=true --jasper.allow-user-role-header=true --jasper.allow-auth-headers=true \ No newline at end of file diff --git a/dockerfiles/jasper.yaml b/dockerfiles/jasper.yaml new file mode 100644 index 000000000..81e10372b --- /dev/null +++ b/dockerfiles/jasper.yaml @@ -0,0 +1,37 @@ +services: + mitmproxy: + image: mitmproxy/mitmproxy:10.2.4 + user: "0:0" + environment: + MITM_LOG_DIR: /custom-logs + MITM_LOG_FILE: ${MITM_LOG_FILE:-minlog.csv} + command: > + mitmdump + --mode reverse:http://sut-jasper:8080 + --listen-host 0.0.0.0 + --listen-port 8080 + --set keep_host_header=true + -s /addons/minlog.py + volumes: + - ${HOST_LOG_DIR:-./mitm-logs}:/custom-logs + - ./addons:/addons:ro + ports: + - "${HOST_PORT:-8080}:8080" + depends_on: + - sut-jasper + sut-jasper: + build: + dockerfile: ./dockerfiles/jasper.dockerfile + context: .. + environment: + AUTH_PORT: ${AUTH_PORT:-8081} + ports: + - "${JACOCO_PORT:-6300}:6300" + db: + image: postgres:18 + tmpfs: + - '/var/lib/postgresql' + environment: + POSTGRES_PASSWORD: password + POSTGRES_HOST_AUTH_METHOD: trust + POSTGRES_DB: jasper \ No newline at end of file diff --git a/experiments/wb-exp.py b/experiments/wb-exp.py index 293df66d9..572a119c2 100644 --- a/experiments/wb-exp.py +++ b/experiments/wb-exp.py @@ -193,6 +193,7 @@ def __init__(self, name, platform): Sut("genome-nexus", JDK_8), Sut("gestaohospital", JDK_8), Sut("http-patch-spring", JDK_11), + Sut("jasper", JDK_25), Sut("languagetool", JDK_8), Sut("market", JDK_11), Sut("microcks", JDK_21), diff --git a/jdk_25_maven/cs/rest/jasper/pom.xml b/jdk_25_maven/cs/rest/jasper/pom.xml index 7ccc98cf6..2ed378b8f 100644 --- a/jdk_25_maven/cs/rest/jasper/pom.xml +++ b/jdk_25_maven/cs/rest/jasper/pom.xml @@ -455,6 +455,12 @@ + + + jasper + sut + ${start-class} true diff --git a/jdk_25_maven/cs/rest/pom.xml b/jdk_25_maven/cs/rest/pom.xml index e203c7806..fcb4818e4 100644 --- a/jdk_25_maven/cs/rest/pom.xml +++ b/jdk_25_maven/cs/rest/pom.xml @@ -14,6 +14,7 @@ commafeed + jasper diff --git a/jdk_25_maven/em/embedded/rest/jasper/pom.xml b/jdk_25_maven/em/embedded/rest/jasper/pom.xml new file mode 100644 index 000000000..afc009a12 --- /dev/null +++ b/jdk_25_maven/em/embedded/rest/jasper/pom.xml @@ -0,0 +1,54 @@ + + + + 4.0.0 + + evomaster-benchmark-jdk25-em-embedded-rest-jasper + jar + + + org.evomaster + evomaster-benchmark-jdk25-em-embedded-rest + 4.3.1-SNAPSHOT + + + + + + + org.springframework.boot + spring-boot-dependencies + 4.1.0 + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + 2025.1.2 + pom + import + + + + + + + + jasper + jasper + 1.3.0-SNAPSHOT + + + + org.testcontainers + testcontainers + compile + + + + diff --git a/jdk_25_maven/em/embedded/rest/jasper/src/main/java/em/embedded/jasper/EmbeddedEvoMasterController.java b/jdk_25_maven/em/embedded/rest/jasper/src/main/java/em/embedded/jasper/EmbeddedEvoMasterController.java new file mode 100644 index 000000000..08eb3b921 --- /dev/null +++ b/jdk_25_maven/em/embedded/rest/jasper/src/main/java/em/embedded/jasper/EmbeddedEvoMasterController.java @@ -0,0 +1,208 @@ +package em.embedded.jasper; + +import com.webfuzzing.commons.auth.Header; +import jasper.JasperApplication; +import org.evomaster.client.java.controller.EmbeddedSutController; +import org.evomaster.client.java.controller.InstrumentedSutStarter; +import org.evomaster.client.java.controller.api.dto.auth.AuthenticationDto; +import org.evomaster.client.java.controller.api.dto.SutInfoDto; +import org.evomaster.client.java.controller.api.dto.database.schema.DatabaseType; +import org.evomaster.client.java.sql.DbSpecification; +import org.evomaster.client.java.controller.problem.ProblemInfo; +import org.evomaster.client.java.controller.problem.RestProblem; +import org.springframework.boot.SpringApplication; +import org.springframework.context.ConfigurableApplicationContext; +import org.testcontainers.containers.GenericContainer; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * Class used to start/stop the SUT. This will be controller by the EvoMaster process + */ +public class EmbeddedEvoMasterController extends EmbeddedSutController { + + private static final String API_DOCS_PATH = "/api/v3/api-docs"; + + private static final String POSTGRES_VERSION = "18"; + + private static final int POSTGRES_PORT = 5432; + + private static final String POSTGRES_DB = "jasper"; + + private static final String POSTGRES_USER = "postgres"; + + private static final String POSTGRES_PASSWORD = "password"; + + + private static final GenericContainer postgres = new GenericContainer("postgres:" + POSTGRES_VERSION) + .withEnv("POSTGRES_PASSWORD", POSTGRES_PASSWORD) + .withEnv("POSTGRES_HOST_AUTH_METHOD", "trust") + .withEnv("POSTGRES_DB", POSTGRES_DB) + .withTmpFs(Collections.singletonMap("/var/lib/postgresql", "rw")) + .withExposedPorts(POSTGRES_PORT); + + + public static void main(String[] args) { + + int port = 40100; + if (args.length > 0) { + port = Integer.parseInt(args[0]); + } + + EmbeddedEvoMasterController controller = new EmbeddedEvoMasterController(port); + InstrumentedSutStarter starter = new InstrumentedSutStarter(controller); + + starter.start(); + } + + + private ConfigurableApplicationContext ctx; + + private Connection sqlConnection; + + private List dbSpecification; + + public EmbeddedEvoMasterController() { + this(0); + } + + public EmbeddedEvoMasterController(int port) { + setControllerPort(port); + } + + + @Override + public String startSut() { + + postgres.start(); + + ctx = SpringApplication.run(JasperApplication.class, new String[]{ + "--server.port=0", + "--spring.profiles.active=api-docs", + "--spring.datasource.url=" + dbUrl(), + "--spring.datasource.username=" + POSTGRES_USER, + "--spring.datasource.password=" + POSTGRES_PASSWORD, + "--spring.datasource.hikari.auto-commit=false", + "--spring.jpa.database-platform=jasper.config.PostgreSQLDialect", + "--springdoc.api-docs.path=" + API_DOCS_PATH, + "--jasper.allow-user-tag-header=true", + "--jasper.allow-user-role-header=true", + "--jasper.allow-auth-headers=true" + }); + + closeDatabaseConnection(); + try { + sqlConnection = DriverManager.getConnection(dbUrl(), POSTGRES_USER, POSTGRES_PASSWORD); + dbSpecification = Arrays.asList(new DbSpecification(DatabaseType.POSTGRES, sqlConnection)); + } catch (Exception e) { + throw new RuntimeException(e); + } + + return "http://localhost:" + getSutPort(); + } + + private String dbUrl() { + String host = postgres.getHost(); + int port = postgres.getMappedPort(POSTGRES_PORT); + return "jdbc:postgresql://" + host + ":" + port + "/" + POSTGRES_DB; + } + + protected int getSutPort() { + return (Integer) ((Map) ctx.getEnvironment() + .getPropertySources().get("server.ports").getSource()) + .get("local.server.port"); + } + + @Override + public boolean isSutRunning() { + return ctx != null && ctx.isRunning(); + } + + @Override + public void stopSut() { + closeDatabaseConnection(); + + if (ctx != null) { + ctx.stop(); + ctx.close(); + ctx = null; + } + + postgres.stop(); + } + + private void closeDatabaseConnection() { + if (sqlConnection != null) { + try { + sqlConnection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + sqlConnection = null; + } + } + + @Override + public String getPackagePrefixesToCover() { + return "jasper."; + } + + @Override + public void resetStateOfSUT() { + } + + @Override + public List getDbSpecifications() { + return dbSpecification; + } + + @Override + public List getInfoForAuthentication() { + return Arrays.asList( + auth("admin", "+user/admin", "ROLE_ADMIN"), + auth("alice", "+user/alice", "ROLE_USER"), + auth("bob", "+user/bob", "ROLE_USER") + ); + } + + /* + CSRF uses a cookie-based repository, so a request is accepted as long as the header + and the cookie carry the same value. Without them every write answers 403. + */ + private static final String CSRF_TOKEN = "evomaster"; + + private static AuthenticationDto auth(String name, String userTag, String role) { + AuthenticationDto dto = new AuthenticationDto(name); + dto.getFixedHeaders().add(header("User-Tag", userTag)); + dto.getFixedHeaders().add(header("User-Role", role)); + dto.getFixedHeaders().add(header("X-XSRF-TOKEN", CSRF_TOKEN)); + dto.getFixedHeaders().add(header("Cookie", "XSRF-TOKEN=" + CSRF_TOKEN)); + return dto; + } + + private static Header header(String name, String value) { + Header h = new Header(); + h.setName(name); + h.setValue(value); + return h; + } + + @Override + public ProblemInfo getProblemInfo() { + return new RestProblem( + "http://localhost:" + getSutPort() + API_DOCS_PATH + "/jasper", + null + ); + } + + @Override + public SutInfoDto.OutputFormat getPreferredOutputFormat() { + return SutInfoDto.OutputFormat.JAVA_JUNIT_5; + } +} diff --git a/jdk_25_maven/em/embedded/rest/pom.xml b/jdk_25_maven/em/embedded/rest/pom.xml index 2da139dca..fddd9420d 100644 --- a/jdk_25_maven/em/embedded/rest/pom.xml +++ b/jdk_25_maven/em/embedded/rest/pom.xml @@ -13,6 +13,7 @@ commafeed + jasper diff --git a/jdk_25_maven/em/external/rest/jasper/pom.xml b/jdk_25_maven/em/external/rest/jasper/pom.xml new file mode 100644 index 000000000..3262777c0 --- /dev/null +++ b/jdk_25_maven/em/external/rest/jasper/pom.xml @@ -0,0 +1,85 @@ + + + + 4.0.0 + + evomaster-benchmark-jdk25-em-external-rest-jasper + jar + + + org.evomaster + evomaster-benchmark-jdk25-em-external-rest + 4.3.1-SNAPSHOT + + + + + + + org.testcontainers + testcontainers + compile + + + + org.postgresql + postgresql + 42.7.11 + + + + + + + + org.apache.maven.plugins + maven-shade-plugin + + 3.6.2 + + + package + + shade + + + jasper-evomaster-runner + + + + em.external.jasper.ExternalEvoMasterController + + org.evomaster.client.java.instrumentation.InstrumentingAgent + + org.evomaster.client.java.instrumentation.InstrumentingAgent + + true + true + + + + + + + org.slf4j + shaded.emb.org.slf4j + + + com.fasterxml.jackson.annotation + shaded.emb.com.fasterxml.jackson.annotation + + + + + + + + + diff --git a/jdk_25_maven/em/external/rest/jasper/src/main/java/em/external/jasper/ExternalEvoMasterController.java b/jdk_25_maven/em/external/rest/jasper/src/main/java/em/external/jasper/ExternalEvoMasterController.java new file mode 100644 index 000000000..f9b69b1f4 --- /dev/null +++ b/jdk_25_maven/em/external/rest/jasper/src/main/java/em/external/jasper/ExternalEvoMasterController.java @@ -0,0 +1,264 @@ +package em.external.jasper; + + +import com.webfuzzing.commons.auth.Header; +import org.evomaster.client.java.controller.ExternalSutController; +import org.evomaster.client.java.controller.InstrumentedSutStarter; +import org.evomaster.client.java.controller.api.dto.auth.AuthenticationDto; +import org.evomaster.client.java.controller.api.dto.SutInfoDto; +import org.evomaster.client.java.controller.api.dto.database.schema.DatabaseType; +import org.evomaster.client.java.sql.DbSpecification; +import org.evomaster.client.java.controller.problem.ProblemInfo; +import org.evomaster.client.java.controller.problem.RestProblem; +import org.testcontainers.containers.GenericContainer; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +public class ExternalEvoMasterController extends ExternalSutController { + + private static final int DEFAULT_CONTROLLER_PORT = 40100; + + private static final int DEFAULT_SUT_PORT = 12345; + + private static final String POSTGRES_VERSION = "18"; + + private static final String API_DOCS_PATH = "/api/v3/api-docs"; + + private static final int POSTGRES_PORT = 5432; + + private static final String POSTGRES_DB = "jasper"; + + private static final String POSTGRES_USER = "postgres"; + + private static final String POSTGRES_PASSWORD = "password"; + + private static final GenericContainer postgres = new GenericContainer("postgres:" + POSTGRES_VERSION) + .withEnv("POSTGRES_PASSWORD", POSTGRES_PASSWORD) + .withEnv("POSTGRES_HOST_AUTH_METHOD", "trust") + .withEnv("POSTGRES_DB", POSTGRES_DB) + .withTmpFs(Collections.singletonMap("/var/lib/postgresql", "rw")) + .withExposedPorts(POSTGRES_PORT); + + + public static void main(String[] args) { + + int controllerPort = DEFAULT_CONTROLLER_PORT; + if (args.length > 0) { + controllerPort = Integer.parseInt(args[0]); + } + int sutPort = DEFAULT_SUT_PORT; + if (args.length > 1) { + sutPort = Integer.parseInt(args[1]); + } + String jarLocation = "cs/rest/jasper/target"; + if (args.length > 2) { + jarLocation = args[2]; + } + if (!jarLocation.endsWith(".jar")) { + jarLocation += "/jasper-sut.jar"; + } + + int timeoutSeconds = 120; + if (args.length > 3) { + timeoutSeconds = Integer.parseInt(args[3]); + } + + String command = "java"; + if (args.length > 4) { + command = args[4]; + } + + ExternalEvoMasterController controller = + new ExternalEvoMasterController(controllerPort, jarLocation, sutPort, timeoutSeconds, command); + + controller.setNeedsJdk17Options(true); + + InstrumentedSutStarter starter = new InstrumentedSutStarter(controller); + + starter.start(); + } + + + private final int timeoutSeconds; + + private final int sutPort; + + private String jarLocation; + private Connection sqlConnection; + private List dbSpecification; + + public ExternalEvoMasterController() { + this(DEFAULT_CONTROLLER_PORT, "../target/jasper-sut.jar", DEFAULT_SUT_PORT, 120, "java"); + } + + public ExternalEvoMasterController(String jarLocation) { + this(); + this.jarLocation = jarLocation; + } + + public ExternalEvoMasterController(int controllerPort, String jarLocation, int sutPort, int timeoutSeconds, String command) { + this.sutPort = sutPort; + this.jarLocation = jarLocation; + this.timeoutSeconds = timeoutSeconds; + + setControllerPort(controllerPort); + setJavaCommand(command); + } + + @Override + public String[] getInputParameters() { + return new String[]{ + "--server.port=" + sutPort, + "--spring.profiles.active=api-docs", + "--spring.datasource.url=" + dbUrl(), + "--spring.datasource.username=" + POSTGRES_USER, + "--spring.datasource.password=" + POSTGRES_PASSWORD, + "--spring.datasource.hikari.auto-commit=false", + "--spring.jpa.database-platform=jasper.config.PostgreSQLDialect", + "--springdoc.api-docs.path=" + API_DOCS_PATH, + "--jasper.allow-user-tag-header=true", + "--jasper.allow-user-role-header=true", + "--jasper.allow-auth-headers=true" + }; + } + + @Override + public String[] getJVMParameters() { + return new String[]{}; + } + + + private String dbUrl() { + String host = postgres.getHost(); + int port = postgres.getMappedPort(POSTGRES_PORT); + return "jdbc:postgresql://" + host + ":" + port + "/" + POSTGRES_DB; + } + + @Override + public String getBaseURL() { + return "http://localhost:" + sutPort; + } + + @Override + public String getPathToExecutableJar() { + return jarLocation; + } + + @Override + public String getLogMessageOfInitializedServer() { + return "Started JasperApplication in"; + } + + @Override + public long getMaxAwaitForInitializationInSeconds() { + return timeoutSeconds; + } + + @Override + public void preStart() { + postgres.start(); + } + + @Override + public void postStart() { + closeDatabaseConnection(); + + try { + sqlConnection = DriverManager.getConnection(dbUrl(), POSTGRES_USER, POSTGRES_PASSWORD); + dbSpecification = Arrays.asList(new DbSpecification(DatabaseType.POSTGRES, sqlConnection)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @Override + public void preStop() { + closeDatabaseConnection(); + } + + private void closeDatabaseConnection() { + if (sqlConnection != null) { + try { + sqlConnection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + sqlConnection = null; + } + } + + @Override + public void postStop() { + postgres.stop(); + } + + @Override + public String getPackagePrefixesToCover() { + return "jasper."; + } + + @Override + public ProblemInfo getProblemInfo() { + return new RestProblem( + "http://localhost:" + sutPort + API_DOCS_PATH + "/jasper", + null + ); + } + + @Override + public SutInfoDto.OutputFormat getPreferredOutputFormat() { + return SutInfoDto.OutputFormat.JAVA_JUNIT_5; + } + + /* + Jasper has no user registration: an identity is whatever the User-Tag and User-Role + headers say, once the SUT is started with the allow-*-header flags above. + "alice" and "bob" share the same role on purpose, so that broken access control + between two users of equal privilege is detectable. + */ + @Override + public List getInfoForAuthentication() { + return Arrays.asList( + auth("admin", "+user/admin", "ROLE_ADMIN"), + auth("alice", "+user/alice", "ROLE_USER"), + auth("bob", "+user/bob", "ROLE_USER") + ); + } + + /* + CSRF uses a cookie-based repository, so a request is accepted as long as the header + and the cookie carry the same value. Without them every write answers 403. + */ + private static final String CSRF_TOKEN = "evomaster"; + + private static AuthenticationDto auth(String name, String userTag, String role) { + AuthenticationDto dto = new AuthenticationDto(name); + dto.getFixedHeaders().add(header("User-Tag", userTag)); + dto.getFixedHeaders().add(header("User-Role", role)); + dto.getFixedHeaders().add(header("X-XSRF-TOKEN", CSRF_TOKEN)); + dto.getFixedHeaders().add(header("Cookie", "XSRF-TOKEN=" + CSRF_TOKEN)); + return dto; + } + + private static Header header(String name, String value) { + Header h = new Header(); + h.setName(name); + h.setValue(value); + return h; + } + + @Override + public void resetStateOfSUT() { + } + + @Override + public List getDbSpecifications() { + return dbSpecification; + } + +} diff --git a/jdk_25_maven/em/external/rest/pom.xml b/jdk_25_maven/em/external/rest/pom.xml index 8759a381c..b525c4ac8 100644 --- a/jdk_25_maven/em/external/rest/pom.xml +++ b/jdk_25_maven/em/external/rest/pom.xml @@ -13,6 +13,7 @@ commafeed + jasper diff --git a/openapi-swagger/jasper.json b/openapi-swagger/jasper.json new file mode 100644 index 000000000..5acc002b9 --- /dev/null +++ b/openapi-swagger/jasper.json @@ -0,0 +1,5599 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Jasper KMS API", + "description": "Jasper Knowledge Management Server API documentation", + "license": { + "name": "MIT", + "url": "https://github.com/cjmalloy/jasper/blob/master/LICENSE" + }, + "version": "1.2.0" + }, + "servers": [ + { + "url": "http://localhost:12345", + "description": "Generated server url" + }, + { + "url": "https://virtserver.swaggerhub.com/cjmalloy/Jasper/1.2.0", + "description": "SwaggerHub API Auto Mocking" + } + ], + "paths": { + "/api/v1/user": { + "get": { + "tags": [ + "User" + ], + "operationId": "getUser", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "[_+]user(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/UserDto" + } + } + } + }, + "304": { + "description": "Not Modified" + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "put": { + "tags": [ + "User" + ], + "operationId": "updateUser", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "post": { + "tags": [ + "User" + ], + "operationId": "createUser", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Created", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "delete": { + "tags": [ + "User" + ], + "operationId": "deleteUser", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "[_+]user(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "patch": { + "tags": [ + "User" + ], + "operationId": "mergeUser", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*(?:@|(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?)" + } + }, + { + "name": "cursor", + "in": "query", + "required": true, + "schema": { + "type": "string", + "format": "date-time" + } + } + ], + "requestBody": { + "content": { + "application/merge-patch+json": { + "schema": { + "$ref": "#/components/schemas/JsonMergePatch" + } + }, + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/JsonPatch" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/template": { + "get": { + "tags": [ + "Template" + ], + "operationId": "getTemplate", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:_?[a-z0-9]+(?:[./][a-z0-9]+)*)?(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/TemplateDto" + } + } + } + }, + "304": { + "description": "Not Modified" + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "put": { + "tags": [ + "Template" + ], + "operationId": "updateTemplate", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Template" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "post": { + "tags": [ + "Template" + ], + "operationId": "createTemplate", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Template" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Created", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Template" + ], + "operationId": "deleteTemplate", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:_?[a-z0-9]+(?:[./][a-z0-9]+)*)?(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Template" + ], + "operationId": "mergeTemplate", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*(?:@|(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?)" + } + }, + { + "name": "cursor", + "in": "query", + "required": true, + "schema": { + "type": "string", + "format": "date-time" + } + } + ], + "requestBody": { + "content": { + "application/merge-patch+json": { + "schema": { + "$ref": "#/components/schemas/JsonMergePatch" + } + }, + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/JsonPatch" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/ref": { + "get": { + "tags": [ + "Ref" + ], + "operationId": "getRef", + "parameters": [ + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/RefDto" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "304": { + "description": "Not Modified" + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "put": { + "tags": [ + "Ref" + ], + "operationId": "updateRef", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Ref" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "post": { + "tags": [ + "Ref" + ], + "operationId": "createRef", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Ref" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Created", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Ref" + ], + "operationId": "deleteRef", + "parameters": [ + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Ref" + ], + "operationId": "mergeRef", + "parameters": [ + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + }, + { + "name": "cursor", + "in": "query", + "required": true, + "schema": { + "type": "string", + "format": "date-time" + } + } + ], + "requestBody": { + "content": { + "application/merge-patch+json": { + "schema": { + "$ref": "#/components/schemas/JsonMergePatch" + } + }, + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/JsonPatch" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/plugin": { + "get": { + "tags": [ + "Plugin" + ], + "operationId": "getPlugin", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "[_+]?plugin(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/PluginDto" + } + } + } + }, + "304": { + "description": "Not Modified" + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "put": { + "tags": [ + "Plugin" + ], + "operationId": "updatePlugin", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Plugin" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "post": { + "tags": [ + "Plugin" + ], + "operationId": "createPlugin", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Plugin" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Created", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Plugin" + ], + "operationId": "deletePlugin", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "[_+]?plugin(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Plugin" + ], + "operationId": "mergePlugin", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*(?:@|(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?)" + } + }, + { + "name": "cursor", + "in": "query", + "required": true, + "schema": { + "type": "string", + "format": "date-time" + } + } + ], + "requestBody": { + "content": { + "application/merge-patch+json": { + "schema": { + "$ref": "#/components/schemas/JsonMergePatch" + } + }, + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/JsonPatch" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/ext": { + "get": { + "tags": [ + "Ext" + ], + "operationId": "getExt", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*(?:@|(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?)" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/ExtDto" + } + } + } + }, + "304": { + "description": "Not Modified" + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "put": { + "tags": [ + "Ext" + ], + "operationId": "updateExt", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Ext" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "post": { + "tags": [ + "Ext" + ], + "operationId": "createExt", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Ext" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Created", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Ext" + ], + "operationId": "deleteExt", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*(?:@|(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?)" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Ext" + ], + "operationId": "mergeExt", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*(?:@|(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?)" + } + }, + { + "name": "cursor", + "in": "query", + "required": true, + "schema": { + "type": "string", + "format": "date-time" + } + } + ], + "requestBody": { + "content": { + "application/merge-patch+json": { + "schema": { + "$ref": "#/components/schemas/JsonMergePatch" + } + }, + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/JsonPatch" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/webhook/smtp": { + "post": { + "tags": [ + "webhook" + ], + "operationId": "smtp", + "parameters": [ + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SmtpWebhookDto" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Created" + }, + "400": { + "description": "Bad Request" + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/user/keygen": { + "post": { + "tags": [ + "User" + ], + "operationId": "keygen", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "[_+]user(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "204": { + "description": "No Content", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/tags": { + "post": { + "tags": [ + "Tagging" + ], + "operationId": "createTags", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*" + } + }, + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Tagging" + ], + "operationId": "deleteTags", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*" + } + }, + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Tagging" + ], + "operationId": "patchTags", + "parameters": [ + { + "name": "tags", + "in": "query", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "[-]?[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*" + } + } + }, + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "string", + "format": "date-time" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/tags/response": { + "get": { + "tags": [ + "Tagging" + ], + "operationId": "getResponse", + "parameters": [ + { + "name": "url", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/RefDto" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "post": { + "tags": [ + "Tagging" + ], + "operationId": "createResponse", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*" + } + }, + { + "name": "url", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + } + ], + "responses": { + "201": { + "description": "Created" + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Tagging" + ], + "operationId": "deleteResponse", + "parameters": [ + { + "name": "tag", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*" + } + }, + { + "name": "url", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "409": { + "description": "Conflict", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Tagging" + ], + "operationId": "respond", + "parameters": [ + { + "name": "tags", + "in": "query", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "[-]?[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*" + } + } + }, + { + "name": "url", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + } + ], + "requestBody": { + "content": { + "application/merge-patch+json": { + "schema": { + "$ref": "#/components/schemas/JsonMergePatch" + } + }, + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/JsonPatch" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/proxy": { + "get": { + "tags": [ + "Proxy" + ], + "operationId": "fetch", + "parameters": [ + { + "name": "Range", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + }, + { + "name": "thumbnail", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/StreamingResponseBody" + } + } + } + }, + "206": { + "description": "Partial Content", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/StreamingResponseBody" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/StreamingResponseBody" + } + } + } + }, + "416": { + "description": "Requested range not satisfiable", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "post": { + "tags": [ + "Proxy" + ], + "operationId": "save", + "parameters": [ + { + "name": "title", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "mime", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "201": { + "description": "Created", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/RefDto" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Proxy" + ], + "operationId": "clearDeleted", + "parameters": [ + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/oembed/defaults": { + "post": { + "tags": [ + "oEmbed" + ], + "operationId": "defaults", + "responses": { + "204": { + "description": "No Content" + } + } + } + }, + "/api/v1/backup": { + "get": { + "tags": [ + "Backup" + ], + "operationId": "listBackups", + "parameters": [ + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BackupDto" + } + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "post": { + "tags": [ + "Backup" + ], + "operationId": "createBackup", + "parameters": [ + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BackupOptionsDto" + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "content": { + "*/*": { + "schema": { + "type": "string" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/backup/upload/{id}": { + "post": { + "tags": [ + "Backup" + ], + "operationId": "uploadBackup", + "parameters": [ + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "description": "Created" + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/backup/restore/{id}": { + "post": { + "tags": [ + "Backup" + ], + "operationId": "restoreBackup", + "parameters": [ + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BackupOptionsDto" + } + } + } + }, + "responses": { + "204": { + "description": "No Content" + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/backup/regen": { + "post": { + "tags": [ + "Backup" + ], + "operationId": "regen", + "parameters": [ + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/backup/key": { + "post": { + "tags": [ + "Backup" + ], + "operationId": "getBackupKey", + "parameters": [ + { + "name": "key", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "string" + } + } + } + }, + "304": { + "description": "Not Modified" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/user/whoami": { + "get": { + "tags": [ + "User" + ], + "operationId": "whoAmI", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/RolesDto" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/user/page": { + "get": { + "tags": [ + "User" + ], + "operationId": "getUserPage", + "parameters": [ + { + "name": "page", + "in": "query", + "description": "Zero-based page index (0..N)", + "required": false, + "schema": { + "type": "integer", + "default": 0, + "minimum": 0 + } + }, + { + "name": "size", + "in": "query", + "description": "The size of the page to be returned", + "required": false, + "schema": { + "type": "integer", + "default": 10, + "minimum": 1 + } + }, + { + "name": "sort", + "in": "query", + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.", + "required": false, + "schema": { + "type": "array", + "default": [ + "tag,ASC" + ], + "items": { + "type": "string" + } + } + }, + { + "name": "query", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "[!_+a-z0-9/.@|:()*]+" + } + }, + { + "name": "nesting", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "level", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "deleted", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "modifiedBefore", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "modifiedAfter", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "search", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/PagedModelUserDto" + } + } + } + }, + "304": { + "description": "Not Modified" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/template/page": { + "get": { + "tags": [ + "Template" + ], + "operationId": "getTemplatePage", + "parameters": [ + { + "name": "page", + "in": "query", + "description": "Zero-based page index (0..N)", + "required": false, + "schema": { + "type": "integer", + "default": 0, + "minimum": 0 + } + }, + { + "name": "size", + "in": "query", + "description": "The size of the page to be returned", + "required": false, + "schema": { + "type": "integer", + "default": 10, + "minimum": 1 + } + }, + { + "name": "sort", + "in": "query", + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.", + "required": false, + "schema": { + "type": "array", + "default": [ + "tag,ASC" + ], + "items": { + "type": "string" + } + } + }, + { + "name": "query", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "[!_+a-z0-9/.@|:()*]+" + } + }, + { + "name": "nesting", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "level", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "deleted", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "modifiedBefore", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "modifiedAfter", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "search", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/PagedModelTemplateDto" + } + } + } + }, + "304": { + "description": "Not Modified" + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/ref/page": { + "get": { + "tags": [ + "Ref" + ], + "operationId": "getRefPage", + "parameters": [ + { + "name": "page", + "in": "query", + "description": "Zero-based page index (0..N)", + "required": false, + "schema": { + "type": "integer", + "default": 0, + "minimum": 0 + } + }, + { + "name": "size", + "in": "query", + "description": "The size of the page to be returned", + "required": false, + "schema": { + "type": "integer", + "default": 10, + "minimum": 1 + } + }, + { + "name": "sort", + "in": "query", + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "query", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "[!_+a-z0-9/.@|:()*]+" + } + }, + { + "name": "noDescendents", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*" + } + }, + { + "name": "url", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "obsolete", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "scheme", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:" + } + }, + { + "name": "sources", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "noSources", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "responses", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "noResponses", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "modifiedBefore", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "modifiedAfter", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "publishedBefore", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "publishedAfter", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "createdBefore", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "createdAfter", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "responseBefore", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "responseAfter", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "pluginResponse", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "[_+]?plugin(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?" + }, + "maxItems": 100, + "minItems": 0 + } + }, + { + "name": "noPluginResponse", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "[_+]?plugin(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?" + }, + "maxItems": 100, + "minItems": 0 + } + }, + { + "name": "userResponse", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "[_+]?plugin(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?" + }, + "maxItems": 100, + "minItems": 0 + } + }, + { + "name": "noUserResponse", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "[_+]?plugin(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?" + }, + "maxItems": 100, + "minItems": 0 + } + }, + { + "name": "search", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/PagedModelRefDto" + } + } + } + }, + "304": { + "description": "Not Modified" + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/ref/count": { + "get": { + "tags": [ + "Ref" + ], + "operationId": "countRefs", + "parameters": [ + { + "name": "query", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "[!_+a-z0-9/.@|:()*]+" + } + }, + { + "name": "noDescendents", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*" + } + }, + { + "name": "nesting", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "url", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "obsolete", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "scheme", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:" + } + }, + { + "name": "sources", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "noSources", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "responses", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "noResponses", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "modifiedBefore", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "modifiedAfter", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "publishedBefore", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "publishedAfter", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "createdBefore", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "createdAfter", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "responseBefore", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "responseAfter", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "pluginResponse", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "[_+]?plugin(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?" + }, + "maxItems": 100, + "minItems": 0 + } + }, + { + "name": "noPluginResponse", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "[_+]?plugin(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?" + }, + "maxItems": 100, + "minItems": 0 + } + }, + { + "name": "userResponse", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "[_+]?plugin(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?" + }, + "maxItems": 100, + "minItems": 0 + } + }, + { + "name": "noUserResponse", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "[_+]?plugin(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?" + }, + "maxItems": 100, + "minItems": 0 + } + }, + { + "name": "search", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "integer", + "format": "int64" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/proxy/prefetch": { + "get": { + "tags": [ + "Proxy" + ], + "operationId": "preFetch", + "parameters": [ + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + }, + { + "name": "thumbnail", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "string" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/proxy/prefetch/{filename}": { + "get": { + "tags": [ + "Proxy" + ], + "operationId": "preFetch_1", + "parameters": [ + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + }, + { + "name": "thumbnail", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "filename", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "string" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/proxy/{filename}": { + "get": { + "tags": [ + "Proxy" + ], + "operationId": "fetch_1", + "parameters": [ + { + "name": "Range", + "in": "header", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "url", + "in": "query", + "required": true, + "schema": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + }, + { + "name": "thumbnail", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "filename", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/StreamingResponseBody" + } + } + } + }, + "206": { + "description": "Partial Content", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/StreamingResponseBody" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/StreamingResponseBody" + } + } + } + }, + "416": { + "description": "Requested range not satisfiable", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "503": { + "description": "Service Unavailable", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/plugin/page": { + "get": { + "tags": [ + "Plugin" + ], + "operationId": "getPluginPage", + "parameters": [ + { + "name": "page", + "in": "query", + "description": "Zero-based page index (0..N)", + "required": false, + "schema": { + "type": "integer", + "default": 0, + "minimum": 0 + } + }, + { + "name": "size", + "in": "query", + "description": "The size of the page to be returned", + "required": false, + "schema": { + "type": "integer", + "default": 10, + "minimum": 1 + } + }, + { + "name": "sort", + "in": "query", + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.", + "required": false, + "schema": { + "type": "array", + "default": [ + "tag,ASC" + ], + "items": { + "type": "string" + } + } + }, + { + "name": "query", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "[!_+a-z0-9/.@|:()*]+" + } + }, + { + "name": "nesting", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "level", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "deleted", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "modifiedBefore", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "modifiedAfter", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "search", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/PagedModelPluginDto" + } + } + } + }, + "304": { + "description": "Not Modified" + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/origin": { + "get": { + "tags": [ + "Origin" + ], + "operationId": "listOrigins", + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Origin" + ], + "operationId": "deleteOrigin", + "parameters": [ + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + }, + { + "name": "olderThan", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/oembed": { + "get": { + "tags": [ + "oEmbed" + ], + "operationId": "oembed", + "parameters": [ + { + "name": "params", + "in": "query", + "required": true, + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/JsonNode" + } + } + } + }, + "400": { + "description": "Bad Request" + }, + "404": { + "description": "Not Found" + } + } + } + }, + "/api/v1/graph/list": { + "get": { + "tags": [ + "Graph" + ], + "operationId": "getGraphList", + "parameters": [ + { + "name": "urls", + "in": "query", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + }, + "maxItems": 100, + "minItems": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RefNodeDto" + } + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/ext/page": { + "get": { + "tags": [ + "Ext" + ], + "operationId": "getExtPage", + "parameters": [ + { + "name": "page", + "in": "query", + "description": "Zero-based page index (0..N)", + "required": false, + "schema": { + "type": "integer", + "default": 0, + "minimum": 0 + } + }, + { + "name": "size", + "in": "query", + "description": "The size of the page to be returned", + "required": false, + "schema": { + "type": "integer", + "default": 10, + "minimum": 1 + } + }, + { + "name": "sort", + "in": "query", + "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.", + "required": false, + "schema": { + "type": "array", + "default": [ + "tag,ASC" + ], + "items": { + "type": "string" + } + } + }, + { + "name": "query", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "[!_+a-z0-9/.@|:()*]+" + } + }, + { + "name": "nesting", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "level", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "deleted", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "modifiedAfter", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "modifiedBefore", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "search", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/PagedModelExtDto" + } + } + } + }, + "304": { + "description": "Not Modified" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/ext/count": { + "get": { + "tags": [ + "Ext" + ], + "operationId": "countExts", + "parameters": [ + { + "name": "query", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "[!_+a-z0-9/.@|:()*]+" + } + }, + { + "name": "nesting", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "level", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "deleted", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "modifiedAfter", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "modifiedBefore", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "search", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "type": "integer", + "format": "int64" + } + } + } + }, + "304": { + "description": "Not Modified" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + }, + "/api/v1/backup/{id}": { + "get": { + "tags": [ + "Backup" + ], + "operationId": "downloadBackup", + "parameters": [ + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "*/*": { + "schema": { + "$ref": "#/components/schemas/StreamingResponseBody" + } + } + } + }, + "304": { + "description": "Not Modified" + }, + "400": { + "description": "Bad Request", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Backup" + ], + "operationId": "deleteBackup", + "parameters": [ + { + "name": "origin", + "in": "query", + "required": false, + "schema": { + "type": "string", + "default": "", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "403": { + "description": "Forbidden", + "content": { + "*/*": { + "schema": { + "$ref": "https://opensource.zalando.com/problem/schema.yaml#/Problem" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "External": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "User": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "minLength": 1, + "pattern": "[_+]user(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?" + }, + "origin": { + "type": "string", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + }, + "role": { + "type": "string", + "pattern": "\\w*" + }, + "name": { + "type": "string" + }, + "readAccess": { + "type": "array", + "items": { + "type": "string", + "minLength": 1, + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*" + } + }, + "writeAccess": { + "type": "array", + "items": { + "type": "string", + "minLength": 1, + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*" + } + }, + "tagReadAccess": { + "type": "array", + "items": { + "type": "string", + "minLength": 1, + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*" + } + }, + "tagWriteAccess": { + "type": "array", + "items": { + "type": "string", + "minLength": 1, + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*" + } + }, + "modified": { + "type": "string", + "format": "date-time" + }, + "key": { + "type": "string", + "format": "byte" + }, + "pubKey": { + "type": "string", + "format": "byte" + }, + "authorizedKeys": { + "type": "string", + "maxLength": 65000, + "minLength": 0 + }, + "external": { + "$ref": "#/components/schemas/External" + } + }, + "required": [ + "tag" + ] + }, + "Template": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "pattern": "(?:_?[a-z0-9]+(?:[./][a-z0-9]+)*)?" + }, + "origin": { + "type": "string", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + }, + "name": { + "type": "string" + }, + "config": { + "type": "object" + }, + "defaults": { + "type": "object" + }, + "schema": { + "type": "object" + }, + "modified": { + "type": "string", + "format": "date-time" + } + } + }, + "Metadata": { + "type": "object", + "properties": { + "modified": { + "type": "string" + }, + "expandedTags": { + "type": "array", + "items": { + "type": "string" + } + }, + "responses": { + "type": "array", + "items": { + "type": "string" + } + }, + "internalResponses": { + "type": "array", + "items": { + "type": "string" + } + }, + "plugins": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int64" + } + }, + "userUrls": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "obsolete": { + "type": "boolean" + }, + "regen": { + "type": "boolean" + } + } + }, + "Ref": { + "type": "object", + "properties": { + "url": { + "type": "string", + "minLength": 1, + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + }, + "origin": { + "type": "string", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + }, + "title": { + "type": "string" + }, + "comment": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string", + "minLength": 1, + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*" + } + }, + "sources": { + "type": "array", + "items": { + "type": "string", + "minLength": 1, + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + "alternateUrls": { + "type": "array", + "items": { + "type": "string", + "minLength": 1, + "pattern": "^[^:/?#]+:(?://[^/?#]*)?[^?#]*(?:\\?[^#]*)?(?:#.*)?" + } + }, + "plugins": { + "type": "object" + }, + "metadata": { + "$ref": "#/components/schemas/Metadata" + }, + "scheme": { + "type": "string" + }, + "published": { + "type": "string", + "format": "date-time" + }, + "created": { + "type": "string", + "format": "date-time" + }, + "modified": { + "type": "string", + "format": "date-time" + }, + "textsearchEn": { + "type": "string" + } + }, + "required": [ + "published", + "url" + ] + }, + "JsonNode": {}, + "Plugin": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "minLength": 1, + "pattern": "[_+]?plugin(?:/[a-z0-9]+(?:[./][a-z0-9]+)*)?" + }, + "origin": { + "type": "string", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + }, + "name": { + "type": "string" + }, + "config": { + "type": "object" + }, + "defaults": { + "$ref": "#/components/schemas/JsonNode" + }, + "schema": { + "type": "object" + }, + "modified": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "tag" + ] + }, + "Ext": { + "type": "object", + "properties": { + "tag": { + "type": "string", + "minLength": 1, + "pattern": "[_+]?[a-z0-9]+(?:[./][a-z0-9]+)*" + }, + "origin": { + "type": "string", + "pattern": "(?:@[a-z0-9]+(?:[.][a-z0-9]+)*)?" + }, + "name": { + "type": "string" + }, + "config": { + "type": "object" + }, + "modified": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "tag" + ] + }, + "Addresses": { + "type": "object", + "properties": { + "from": { + "$ref": "#/components/schemas/EmailAddress" + }, + "to": { + "$ref": "#/components/schemas/EmailAddress" + }, + "replyTo": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EmailAddress" + } + }, + "cc": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EmailAddress" + } + }, + "bcc": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EmailAddress" + } + }, + "inReplyTo": { + "type": "array", + "items": { + "type": "string" + } + }, + "html": { + "type": "string" + }, + "resentFrom": { + "$ref": "#/components/schemas/EmailAddress" + }, + "resentTo": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EmailAddress" + } + }, + "resentCc": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EmailAddress" + } + }, + "resentBcc": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EmailAddress" + } + } + } + }, + "Body": { + "type": "object", + "properties": { + "text": { + "type": "string" + }, + "html": { + "type": "string" + } + } + }, + "EmailAddress": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "address": { + "type": "string" + } + } + }, + "EmailAttachment": { + "type": "object", + "properties": { + "filename": { + "type": "string" + }, + "contentType": { + "type": "string" + }, + "data": { + "type": "string" + } + } + }, + "EmailEmbeddedFile": { + "type": "object", + "properties": { + "cid": { + "type": "string" + }, + "contentType": { + "type": "string" + }, + "data": { + "type": "string" + } + } + }, + "SmtpWebhookDto": { + "type": "object", + "properties": { + "spf": { + "type": "string" + }, + "references": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "date": { + "type": "string" + }, + "subject": { + "type": "string" + }, + "resentDate": { + "type": "string" + }, + "resentId": { + "type": "string" + }, + "body": { + "$ref": "#/components/schemas/Body" + }, + "addresses": { + "$ref": "#/components/schemas/Addresses" + }, + "attachments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EmailAttachment" + } + }, + "embeddedFiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EmailEmbeddedFile" + } + } + } + }, + "MetadataDto": { + "type": "object", + "properties": { + "modified": { + "type": "string" + }, + "responses": { + "type": "integer", + "format": "int32" + }, + "internalResponses": { + "type": "integer", + "format": "int32" + }, + "plugins": { + "type": "object", + "additionalProperties": { + "type": "integer", + "format": "int32" + } + }, + "userUrls": { + "type": "array", + "items": { + "type": "string" + } + }, + "obsolete": { + "type": "boolean" + } + } + }, + "RefDto": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "origin": { + "type": "string" + }, + "title": { + "type": "string" + }, + "comment": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "sources": { + "type": "array", + "items": { + "type": "string" + } + }, + "alternateUrls": { + "type": "array", + "items": { + "type": "string" + } + }, + "plugins": { + "type": "object" + }, + "metadata": { + "$ref": "#/components/schemas/MetadataDto" + }, + "published": { + "type": "string", + "format": "date-time" + }, + "created": { + "type": "string", + "format": "date-time" + }, + "modified": { + "type": "string", + "format": "date-time" + } + } + }, + "BackupOptionsDto": { + "type": "object", + "properties": { + "cache": { + "type": "boolean" + }, + "ref": { + "type": "boolean" + }, + "ext": { + "type": "boolean" + }, + "user": { + "type": "boolean" + }, + "plugin": { + "type": "boolean" + }, + "template": { + "type": "boolean" + }, + "newerThan": { + "type": "string", + "format": "date-time" + } + } + }, + "JsonMergePatch": {}, + "JsonPatch": {}, + "ExternalDto": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "UserDto": { + "type": "object", + "properties": { + "tag": { + "type": "string" + }, + "origin": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "readAccess": { + "type": "array", + "items": { + "type": "string" + } + }, + "writeAccess": { + "type": "array", + "items": { + "type": "string" + } + }, + "tagReadAccess": { + "type": "array", + "items": { + "type": "string" + } + }, + "tagWriteAccess": { + "type": "array", + "items": { + "type": "string" + } + }, + "modified": { + "type": "string", + "format": "date-time" + }, + "pubKey": { + "type": "string", + "format": "byte" + }, + "authorizedKeys": { + "type": "string" + }, + "external": { + "$ref": "#/components/schemas/ExternalDto" + } + } + }, + "RolesDto": { + "type": "object", + "properties": { + "debug": { + "type": "boolean" + }, + "tag": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "mod": { + "type": "boolean" + }, + "editor": { + "type": "boolean" + }, + "user": { + "type": "boolean" + }, + "viewer": { + "type": "boolean" + }, + "banned": { + "type": "boolean" + } + } + }, + "PageMetadata": { + "type": "object", + "properties": { + "size": { + "type": "integer", + "format": "int64" + }, + "number": { + "type": "integer", + "format": "int64" + }, + "totalElements": { + "type": "integer", + "format": "int64" + }, + "totalPages": { + "type": "integer", + "format": "int64" + } + } + }, + "PagedModelUserDto": { + "type": "object", + "properties": { + "content": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserDto" + } + }, + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + }, + "TemplateDto": { + "type": "object", + "properties": { + "tag": { + "type": "string" + }, + "origin": { + "type": "string" + }, + "name": { + "type": "string" + }, + "config": { + "type": "object" + }, + "defaults": { + "type": "object" + }, + "schema": { + "type": "object" + }, + "modified": { + "type": "string", + "format": "date-time" + } + } + }, + "PagedModelTemplateDto": { + "type": "object", + "properties": { + "content": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TemplateDto" + } + }, + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + }, + "PagedModelRefDto": { + "type": "object", + "properties": { + "content": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RefDto" + } + }, + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + }, + "StreamingResponseBody": {}, + "PluginDto": { + "type": "object", + "properties": { + "tag": { + "type": "string" + }, + "origin": { + "type": "string" + }, + "name": { + "type": "string" + }, + "config": { + "type": "object" + }, + "defaults": { + "$ref": "#/components/schemas/JsonNode" + }, + "schema": { + "type": "object" + }, + "modified": { + "type": "string", + "format": "date-time" + } + } + }, + "PagedModelPluginDto": { + "type": "object", + "properties": { + "content": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PluginDto" + } + }, + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + }, + "RefNodeDto": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "origin": { + "type": "string" + }, + "title": { + "type": "string" + }, + "comment": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "sources": { + "type": "array", + "items": { + "type": "string" + } + }, + "responses": { + "type": "array", + "items": { + "type": "string" + } + }, + "alternateUrls": { + "type": "array", + "items": { + "type": "string" + } + }, + "plugins": { + "type": "object" + }, + "metadata": { + "$ref": "#/components/schemas/MetadataDto" + }, + "published": { + "type": "string", + "format": "date-time" + }, + "created": { + "type": "string", + "format": "date-time" + }, + "modified": { + "type": "string", + "format": "date-time" + } + } + }, + "ExtDto": { + "type": "object", + "properties": { + "tag": { + "type": "string" + }, + "origin": { + "type": "string" + }, + "name": { + "type": "string" + }, + "config": { + "type": "object" + }, + "modified": { + "type": "string", + "format": "date-time" + } + } + }, + "PagedModelExtDto": { + "type": "object", + "properties": { + "content": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtDto" + } + }, + "page": { + "$ref": "#/components/schemas/PageMetadata" + } + } + }, + "BackupDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "size": { + "type": "integer", + "format": "int64" + } + } + } + } + } +} diff --git a/scripts/build/docker-compose.build.yml b/scripts/build/docker-compose.build.yml index 03d813218..45b2871d7 100644 --- a/scripts/build/docker-compose.build.yml +++ b/scripts/build/docker-compose.build.yml @@ -285,8 +285,10 @@ services: (cd cs && mvn clean install -DskipTests) fi cp cs/rest/commafeed/commafeed-server/target/commafeed-sut.jar /dist/ + cp cs/rest/jasper/target/jasper-sut.jar /dist/ if [ "$${BUILD_EVOMASTER:-false}" = "true" ]; then cp em/external/rest/commafeed/target/commafeed-evomaster-runner.jar /dist/ + cp em/external/rest/jasper/target/jasper-evomaster-runner.jar /dist/ fi echo 'JDK 25 Maven build completed' diff --git a/scripts/dist.py b/scripts/dist.py index 3eb6d54ba..f28332b73 100755 --- a/scripts/dist.py +++ b/scripts/dist.py @@ -308,6 +308,9 @@ def build_jdk_25_maven(): copy(folder + "/cs/rest/commafeed/commafeed-server/target/commafeed-sut.jar", DIST) copy(folder + "/em/external/rest/commafeed/target/commafeed-evomaster-runner.jar", DIST) + copy(folder + "/cs/rest/jasper/target/jasper-sut.jar", DIST) + copy(folder + "/em/external/rest/jasper/target/jasper-evomaster-runner.jar", DIST) + #################### def call_gradle(java_home, folder): env_vars = os.environ.copy() diff --git a/scripts/dockerize/data/sut.csv b/scripts/dockerize/data/sut.csv index f80b3c8fb..7ae52af33 100644 --- a/scripts/dockerize/data/sut.csv +++ b/scripts/dockerize/data/sut.csv @@ -36,3 +36,4 @@ spring-ecommerce,TRUE,-Dfile.encoding=ISO-8859-1,--server.port=8080 --spring.dat quartz-manager,TRUE,,--server.port=8080 --quartz-manager.security.accounts.in-memory.users[0].username=foo --quartz-manager.security.accounts.in-memory.users[0].password=bar --quartz-manager.security.accounts.in-memory.users[0].roles[0]=admin --quartz-manager.security.accounts.in-memory.users[1].username=foo2 --quartz-manager.security.accounts.in-memory.users[1].password=bar --quartz-manager.security.accounts.in-memory.users[1].roles[0]=admin,http://localhost:8080/v3/api-docs,http://localhost:8080,FALSE,"", microcks,TRUE,-DPOSTMAN_RUNNER_URL=http://postman:3000 -DSERVICES_UPDATE_INTERVAL='0 0 0/2 * * *' -DKEYCLOAK_URL=http://keycloak:8080 -DKEYCLOAK_PUBLIC_URL=http://localhost:${AUTH_PORT:-8081} -DENABLE_CORS_POLICY=false -DCORS_REST_ALLOW_CREDENTIALS=true -DTEST_CALLBACK_URL=http://localhost:${HOST_PORT:-8080},--server.port=8080 --spring.profiles.active=prod --grpc.server.port=0 --spring.data.mongodb.uri=mongodb://mongodb:27017/test --spring.security.oauth2.resourceserver.jwt.issuer-uri=http://localhost:${AUTH_PORT:-8081}/realms/microcks --spring.security.oauth2.resourceserver.jwt.jwk-set-uri=http://keycloak:8080/realms/microcks/protocol/openid-connect/certs,http://localhost:8080/v3/api-docs,http://localhost:8080,FALSE,"","[{""name"": ""mongodb"", ""image_name"": ""mongo:7.0"", ""tmp_fs"": ""/data/db"", ""environment"": ""MONGODB_REPLICA_SET_MODE: primary;ALLOW_EMPTY_PASSWORD: yes"", ""volume"": """", ""health_check_command"": """"},{""name"": ""keycloak"",""image_name"": ""quay.io/keycloak/keycloak:26.0.0"", ""command"":[""start-dev"", ""--hostname=http://localhost:${AUTH_PORT:-8081}"", ""--import-realm"", ""--health-enabled=true""], ""port"": ""${AUTH_PORT:-8081}:8080"", ""tmp_fs"": """", ""environment"": ""KEYCLOAK_ADMIN: 'admin';KEYCLOAK_ADMIN_PASSWORD: 'admin';KC_HEALTH_ENABLED: 'true';KC_METRICS_ENABLED: 'true'"", ""volume"": ""../scripts/dockerize/data/additional_files/microcks/microcks-realm-sample.json:/opt/keycloak/data/import/microcks-realm.json"", ""health_check_command"": [""CMD"", ""sh"", ""-c"", ""echo -e 'GET /health/live HTTP/1.1\r\nHost: localhost\r\n\r\n' > /dev/tcp/localhost/9000""]},{""name"": ""postman"", ""image_name"": ""quay.io/microcks/microcks-postman-runtime:0.6.0"", ""tmp_fs"": """", ""environment"": """", ""volume"": """", ""health_check_command"": [""CMD"", ""curl"", ""-f"", ""http://localhost:3000/health""]}]" commafeed,TRUE,"-Dquarkus.http.port=8080 -Dquarkus.datasource.db-kind=h2 -Dquarkus.datasource.jdbc.url=""jdbc:h2:mem:commafeed;DB_CLOSE_DELAY=-1"" -Dquarkus.datasource.username=sa -Dquarkus.datasource.password=sa","",http://localhost:8080/openapi?format=json,http://localhost:8080,FALSE,"","" +jasper,TRUE,,--server.port=8080 --spring.profiles.active=api-docs --spring.datasource.url=jdbc:postgresql://db:5432/jasper --spring.datasource.username=postgres --spring.datasource.password=password --spring.datasource.hikari.auto-commit=false --spring.jpa.database-platform=jasper.config.PostgreSQLDialect --springdoc.api-docs.path=/api/v3/api-docs --jasper.allow-user-tag-header=true --jasper.allow-user-role-header=true --jasper.allow-auth-headers=true,http://localhost:8080/api/v3/api-docs/jasper,http://localhost:8080,FALSE,,"[{""image_name"": ""postgres:18"", ""tmp_fs"": ""/var/lib/postgresql"", ""environment"": ""POSTGRES_PASSWORD: password;POSTGRES_HOST_AUTH_METHOD: trust;POSTGRES_DB: jasper"", ""volume"": """", ""health_check_command"": """"}]" diff --git a/statistics/data.csv b/statistics/data.csv index 5664a94bb..71ea4f7c2 100644 --- a/statistics/data.csv +++ b/statistics/data.csv @@ -46,6 +46,7 @@ TRUE,grpc-scs,gRPC,Java,JDK 8,Maven,14,894,,UNDEFINED,11,FALSE,UNDEFINED TRUE,signal-registration,gRPC,Java,JDK 17,Maven,177,13652,,UNDEFINED,5,FALSE,https://github.com/signalapp/registration-service TRUE,webgoat,REST,Java,JDK 21,Maven,355,27638,H2,GPL,204,TRUE,https://github.com/WebGoat/WebGoat TRUE,commafeed,REST,Java,JDK 25,Maven,201,21287,H2,Apache,44,TRUE,https://github.com/Athou/commafeed +TRUE,jasper,REST,Java,JDK 25,Maven,337,46791,PostgreSQL,MIT,61,TRUE,https://github.com/cjmalloy/jasper FALSE,ind0,REST,Java,JDK 8,Gradle,103,17039,PostgreSQL,Proprietary,20,FALSE,UNDEFINED FALSE,ind1,REST,Java;Kotlin,JDK 11,Gradle,163,15240,PostgreSQL,Proprietary,53,FALSE,UNDEFINED diff --git a/statistics/table_emb.md b/statistics/table_emb.md index 21de20361..4eb795fd6 100644 --- a/statistics/table_emb.md +++ b/statistics/table_emb.md @@ -19,6 +19,7 @@ |REST|__genome-nexus__|30004|405|23|Java|JDK 8|Maven|MongoDB|| |REST|__gestaohospital__|3506|33|20|Java|JDK 8|Maven|MongoDB|| |REST|__http-patch-spring__|1450|30|6|Java|JDK 11|Maven||| +|REST|__jasper__|46791|337|61|Java|JDK 25|Maven|PostgreSQL|✓| |REST|__languagetool__|174781|1385|2|Java|JDK 8|Maven||| |REST|__market__|9861|124|13|Java|JDK 11|Maven|H2|✓| |REST|__microcks__|66186|471|88|Java|JDK 21|Maven|MongoDB|✓|