package com.dacrt.SBIABackend.dto;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ScimServiceProviderConfigDTO {

	    public List<String> schemas = Collections.singletonList("urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig");
	    
	    public Patch patch = new Patch();
	    public Bulk bulk = new Bulk();
	    public Filter filter = new Filter();
	    public ChangePassword changePassword = new ChangePassword();
	    public Sort sort = new Sort();
	    public Etag etag = new Etag();
	    
	    // Campo específico que algunos conectores de Okta buscan para Grupos
	    public GroupNames groupNames = new GroupNames();
	    
	    public List<AuthenticationScheme> authenticationSchemes = new ArrayList<>();

	    public ScimServiceProviderConfigDTO() {
	        AuthenticationScheme auth = new AuthenticationScheme();
	        auth.name = "OAuth Bearer Token";
	        auth.description = "Authentication scheme using the OAuth Bearer Token Standard";
	        auth.specUri = "http://tools.ietf.org/html/draft-ietf-scim-api-12";
	        auth.type = "oauthbearertoken";
	        auth.primary = true;
	        this.authenticationSchemes.add(auth);
	    }

	    public static class Patch { public boolean supported = true; }
	    public static class Bulk {
	        public boolean supported = false;
	        public int maxOperations = 1000;
	        public int maxPayloadSize = 1048576;
	    }
	    public static class Filter {
	        public boolean supported = true;
	        public int maxResults = 200;
	    }
	    public static class ChangePassword { public boolean supported = false; }
	    public static class Sort { public boolean supported = true; }
	    public static class Etag { public boolean supported = false; }
	    
	    // Clase para habilitar explícitamente el soporte de nombres de grupos
	    public static class GroupNames {
	        public boolean supported = true;
	    }

	    public static class AuthenticationScheme {
	        public String name;
	        public String description;
	        public String specUri;
	        public String type;
	        public boolean primary;
	    }
}


