package cz.trask.migration.model.v32; import java.io.IOException; import java.util.List; import java.util.Map; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; public class ApiDefinition { public static class CorsConfiguration { @JsonProperty("corsConfigurationEnabled") public boolean corsConfigurationEnabled; @JsonProperty("accessControlAllowOrigins") public List accessControlAllowOrigins; @JsonProperty("accessControlAllowCredentials") public boolean accessControlAllowCredentials; @JsonProperty("accessControlAllowHeaders") public List accessControlAllowHeaders; @JsonProperty("accessControlAllowMethods") public List accessControlAllowMethods; } public static class Tier { public String name; public String displayName; public String description; public long requestsPerMin; public long requestCount; public int unitTime; public String timeUnit; public String tierPlan; public boolean stopOnQuotaReached; } public static class EndpointSecurity { public static class SecurityConfig { public String password; public String tokenUrl; public String clientId; public String clientSecret; public String customParameters; public String type; public String grantType; public boolean enabled; public String username; } public SecurityConfig production; public SecurityConfig sandbox; } public static class Id { public String providerName; public String apiName; public String version; public long id; } public static class ApiTierPolicy { public String name; public String displayName; public String description; public long requestsPerMin; public long requestCount; public int unitTime; public String timeUnit; public String tierPlan; public boolean stopOnQuotaReached; } public static class EndpointConfig { public String endpoint_type; public Endpoint sandbox_endpoints; public Endpoint production_endpoints; public EndpointSecurity endpoint_security; public static class Endpoint { public String url; } public static class EndpointSecurity { public SecurityConfig production; public SecurityConfig sandbox; public static class SecurityConfig { public String password; public String tokenUrl; public String clientId; public String clientSecret; public String customParameters; public String type; public String grantType; public boolean enabled; public String username; } } } // --- Hlavní pole --- public Id id; public String uuid; public String type; public String context; public String contextTemplate; public List tags; public List documents; public String lastUpdated; public List availableTiers; public List availableSubscriptionLevelPolicies; public List uriTemplates; public boolean apiHeaderChanged; public boolean apiResourcePatternsChanged; public String status; public String visibility; public List gatewayLabels; public boolean endpointSecured; public boolean endpointAuthDigest; public String transports; public String inSequence; public boolean advertiseOnly; public String subscriptionAvailability; public CorsConfiguration corsConfiguration; @JsonDeserialize(using = EndpointConfigDeserializer.class) public EndpointConfig endpointConfig; public String responseCache; public int cacheTimeout; public String implementation; public String authorizationHeader; public List scopes; public boolean isDefaultVersion; public boolean isPublishedDefaultVersion; public List keyManagers; public List environments; public String createdTime; public Map additionalProperties; public Map monetizationProperties; public boolean isMonetizationEnabled; public List environmentList; public String apiSecurity; public List endpoints; public boolean enableSchemaValidation; public List apiCategories; public boolean enableStore; public String accessControl; public double rating; public boolean isLatest; public static class EndpointConfigDeserializer extends JsonDeserializer { @Override public EndpointConfig deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { String json = p.getValueAsString(); // YAML string ObjectMapper mapper = new ObjectMapper(); // běžný JSON mapper return mapper.readValue(json, EndpointConfig.class); } } }