2025-10-16 13:06:41 +02:00

169 lines
4.8 KiB
Java

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<String> accessControlAllowOrigins;
@JsonProperty("accessControlAllowCredentials")
public boolean accessControlAllowCredentials;
@JsonProperty("accessControlAllowHeaders")
public List<String> accessControlAllowHeaders;
@JsonProperty("accessControlAllowMethods")
public List<String> 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<String> tags;
public List<String> documents;
public String lastUpdated;
public List<Tier> availableTiers;
public List<Object> availableSubscriptionLevelPolicies;
public List<Object> uriTemplates;
public boolean apiHeaderChanged;
public boolean apiResourcePatternsChanged;
public String status;
public String visibility;
public List<String> 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<Object> scopes;
public boolean isDefaultVersion;
public boolean isPublishedDefaultVersion;
public List<String> keyManagers;
public List<String> environments;
public String createdTime;
public Map<String, Object> additionalProperties;
public Map<String, Object> monetizationProperties;
public boolean isMonetizationEnabled;
public List<String> environmentList;
public String apiSecurity;
public List<Object> endpoints;
public boolean enableSchemaValidation;
public List<Object> apiCategories;
public boolean enableStore;
public String accessControl;
public double rating;
public boolean isLatest;
public static class EndpointConfigDeserializer extends JsonDeserializer<EndpointConfig> {
@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);
}
}
}