public static String getBasicApiJsonSchema() throws JsonProcessingException {
        ObjectMapper mapper = createSchemaObjectMapper();
        JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper);

        DefaultPackageScanClassResolver packageScanClassResolver = new DefaultPackageScanClassResolver();

        Set<Class<?>> schemaClasses = new HashSet<>();

        // get non-abstract extensions of AbstractDTOBase
        schemaClasses.addAll(packageScanClassResolver.findByFilter(
                type -> !Modifier.isAbstract(type.getModifiers()) && AbstractDTOBase.class.isAssignableFrom(type),
                "org.apache.camel.component.salesforce.api.dto"));

        // get non-abstract extensions of AbstractDTOBase
        schemaClasses.addAll(packageScanClassResolver.findByFilter(
                type -> !Modifier.isAbstract(type.getModifiers()) && AbstractDTOBase.class.isAssignableFrom(type),
                "org.apache.camel.component.salesforce.api.dto"));

        Set<JsonSchema> allSchemas = new HashSet<>();
        for (Class<?> aClass : schemaClasses) {
            JsonSchema jsonSchema = schemaGen.generateSchema(aClass);
            allSchemas.add(jsonSchema);
        }

        return getJsonSchemaString(mapper, allSchemas, API_DTO_ID);
    }
@Test
    public void getBasicApiJsonSchema() throws Exception {

        // create basic api dto schema
        LOG.info("Basic Api Schema...");
        String basicApiJsonSchema = JsonUtils.getBasicApiJsonSchema();
        LOG.info(basicApiJsonSchema);

        // parse schema to validate
        ObjectMapper objectMapper = JsonUtils.createObjectMapper();
        JsonSchema jsonSchema = objectMapper.readValue(basicApiJsonSchema, JsonSchema.class);
        assertTrue(jsonSchema.isObjectSchema());
        assertFalse(((ObjectSchema) jsonSchema).getOneOf().isEmpty());
    }