001package com.box.sdkgen.managers.aistudio; 002 003import static com.box.sdkgen.internal.utils.UtilsManager.convertToString; 004import static com.box.sdkgen.internal.utils.UtilsManager.entryOf; 005import static com.box.sdkgen.internal.utils.UtilsManager.mapOf; 006import static com.box.sdkgen.internal.utils.UtilsManager.mergeMaps; 007import static com.box.sdkgen.internal.utils.UtilsManager.prepareParams; 008 009import com.box.sdkgen.networking.auth.Authentication; 010import com.box.sdkgen.networking.fetchoptions.FetchOptions; 011import com.box.sdkgen.networking.fetchoptions.ResponseFormat; 012import com.box.sdkgen.networking.fetchresponse.FetchResponse; 013import com.box.sdkgen.networking.network.NetworkSession; 014import com.box.sdkgen.schemas.aimultipleagentresponse.AiMultipleAgentResponse; 015import com.box.sdkgen.schemas.aisingleagentresponsefull.AiSingleAgentResponseFull; 016import com.box.sdkgen.schemas.createaiagent.CreateAiAgent; 017import com.box.sdkgen.serialization.json.JsonManager; 018import java.util.Map; 019 020public class AiStudioManager { 021 022 public Authentication auth; 023 024 public NetworkSession networkSession; 025 026 public AiStudioManager() { 027 this.networkSession = new NetworkSession(); 028 } 029 030 protected AiStudioManager(Builder builder) { 031 this.auth = builder.auth; 032 this.networkSession = builder.networkSession; 033 } 034 035 /** Lists AI agents based on the provided parameters. */ 036 public AiMultipleAgentResponse getAiAgents() { 037 return getAiAgents(new GetAiAgentsQueryParams(), new GetAiAgentsHeaders()); 038 } 039 040 /** 041 * Lists AI agents based on the provided parameters. 042 * 043 * @param queryParams Query parameters of getAiAgents method 044 */ 045 public AiMultipleAgentResponse getAiAgents(GetAiAgentsQueryParams queryParams) { 046 return getAiAgents(queryParams, new GetAiAgentsHeaders()); 047 } 048 049 /** 050 * Lists AI agents based on the provided parameters. 051 * 052 * @param headers Headers of getAiAgents method 053 */ 054 public AiMultipleAgentResponse getAiAgents(GetAiAgentsHeaders headers) { 055 return getAiAgents(new GetAiAgentsQueryParams(), headers); 056 } 057 058 /** 059 * Lists AI agents based on the provided parameters. 060 * 061 * @param queryParams Query parameters of getAiAgents method 062 * @param headers Headers of getAiAgents method 063 */ 064 public AiMultipleAgentResponse getAiAgents( 065 GetAiAgentsQueryParams queryParams, GetAiAgentsHeaders headers) { 066 Map<String, String> queryParamsMap = 067 prepareParams( 068 mapOf( 069 entryOf("mode", convertToString(queryParams.getMode())), 070 entryOf("fields", convertToString(queryParams.getFields())), 071 entryOf("agent_state", convertToString(queryParams.getAgentState())), 072 entryOf("include_box_default", convertToString(queryParams.getIncludeBoxDefault())), 073 entryOf("marker", convertToString(queryParams.getMarker())), 074 entryOf("limit", convertToString(queryParams.getLimit())))); 075 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 076 FetchResponse response = 077 this.networkSession 078 .getNetworkClient() 079 .fetch( 080 new FetchOptions.Builder( 081 String.join( 082 "", this.networkSession.getBaseUrls().getBaseUrl(), "/2.0/ai_agents"), 083 "GET") 084 .params(queryParamsMap) 085 .headers(headersMap) 086 .responseFormat(ResponseFormat.JSON) 087 .auth(this.auth) 088 .networkSession(this.networkSession) 089 .build()); 090 return JsonManager.deserialize(response.getData(), AiMultipleAgentResponse.class); 091 } 092 093 /** 094 * Creates an AI agent. At least one of the following capabilities must be provided: `ask`, 095 * `text_gen`, `extract`. 096 * 097 * @param requestBody Request body of createAiAgent method 098 */ 099 public AiSingleAgentResponseFull createAiAgent(CreateAiAgent requestBody) { 100 return createAiAgent(requestBody, new CreateAiAgentHeaders()); 101 } 102 103 /** 104 * Creates an AI agent. At least one of the following capabilities must be provided: `ask`, 105 * `text_gen`, `extract`. 106 * 107 * @param requestBody Request body of createAiAgent method 108 * @param headers Headers of createAiAgent method 109 */ 110 public AiSingleAgentResponseFull createAiAgent( 111 CreateAiAgent requestBody, CreateAiAgentHeaders headers) { 112 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 113 FetchResponse response = 114 this.networkSession 115 .getNetworkClient() 116 .fetch( 117 new FetchOptions.Builder( 118 String.join( 119 "", this.networkSession.getBaseUrls().getBaseUrl(), "/2.0/ai_agents"), 120 "POST") 121 .headers(headersMap) 122 .data(JsonManager.serialize(requestBody)) 123 .contentType("application/json") 124 .responseFormat(ResponseFormat.JSON) 125 .auth(this.auth) 126 .networkSession(this.networkSession) 127 .build()); 128 return JsonManager.deserialize(response.getData(), AiSingleAgentResponseFull.class); 129 } 130 131 /** 132 * Updates an AI agent. 133 * 134 * @param agentId The ID of the agent to update. Example: "1234" 135 * @param requestBody Request body of updateAiAgentById method 136 */ 137 public AiSingleAgentResponseFull updateAiAgentById(String agentId, CreateAiAgent requestBody) { 138 return updateAiAgentById(agentId, requestBody, new UpdateAiAgentByIdHeaders()); 139 } 140 141 /** 142 * Updates an AI agent. 143 * 144 * @param agentId The ID of the agent to update. Example: "1234" 145 * @param requestBody Request body of updateAiAgentById method 146 * @param headers Headers of updateAiAgentById method 147 */ 148 public AiSingleAgentResponseFull updateAiAgentById( 149 String agentId, CreateAiAgent requestBody, UpdateAiAgentByIdHeaders headers) { 150 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 151 FetchResponse response = 152 this.networkSession 153 .getNetworkClient() 154 .fetch( 155 new FetchOptions.Builder( 156 String.join( 157 "", 158 this.networkSession.getBaseUrls().getBaseUrl(), 159 "/2.0/ai_agents/", 160 convertToString(agentId)), 161 "PUT") 162 .headers(headersMap) 163 .data(JsonManager.serialize(requestBody)) 164 .contentType("application/json") 165 .responseFormat(ResponseFormat.JSON) 166 .auth(this.auth) 167 .networkSession(this.networkSession) 168 .build()); 169 return JsonManager.deserialize(response.getData(), AiSingleAgentResponseFull.class); 170 } 171 172 /** 173 * Gets an AI Agent using the `agent_id` parameter. 174 * 175 * @param agentId The agent id to get. Example: "1234" 176 */ 177 public AiSingleAgentResponseFull getAiAgentById(String agentId) { 178 return getAiAgentById(agentId, new GetAiAgentByIdQueryParams(), new GetAiAgentByIdHeaders()); 179 } 180 181 /** 182 * Gets an AI Agent using the `agent_id` parameter. 183 * 184 * @param agentId The agent id to get. Example: "1234" 185 * @param queryParams Query parameters of getAiAgentById method 186 */ 187 public AiSingleAgentResponseFull getAiAgentById( 188 String agentId, GetAiAgentByIdQueryParams queryParams) { 189 return getAiAgentById(agentId, queryParams, new GetAiAgentByIdHeaders()); 190 } 191 192 /** 193 * Gets an AI Agent using the `agent_id` parameter. 194 * 195 * @param agentId The agent id to get. Example: "1234" 196 * @param headers Headers of getAiAgentById method 197 */ 198 public AiSingleAgentResponseFull getAiAgentById(String agentId, GetAiAgentByIdHeaders headers) { 199 return getAiAgentById(agentId, new GetAiAgentByIdQueryParams(), headers); 200 } 201 202 /** 203 * Gets an AI Agent using the `agent_id` parameter. 204 * 205 * @param agentId The agent id to get. Example: "1234" 206 * @param queryParams Query parameters of getAiAgentById method 207 * @param headers Headers of getAiAgentById method 208 */ 209 public AiSingleAgentResponseFull getAiAgentById( 210 String agentId, GetAiAgentByIdQueryParams queryParams, GetAiAgentByIdHeaders headers) { 211 Map<String, String> queryParamsMap = 212 prepareParams(mapOf(entryOf("fields", convertToString(queryParams.getFields())))); 213 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 214 FetchResponse response = 215 this.networkSession 216 .getNetworkClient() 217 .fetch( 218 new FetchOptions.Builder( 219 String.join( 220 "", 221 this.networkSession.getBaseUrls().getBaseUrl(), 222 "/2.0/ai_agents/", 223 convertToString(agentId)), 224 "GET") 225 .params(queryParamsMap) 226 .headers(headersMap) 227 .responseFormat(ResponseFormat.JSON) 228 .auth(this.auth) 229 .networkSession(this.networkSession) 230 .build()); 231 return JsonManager.deserialize(response.getData(), AiSingleAgentResponseFull.class); 232 } 233 234 /** 235 * Deletes an AI agent using the provided parameters. 236 * 237 * @param agentId The ID of the agent to delete. Example: "1234" 238 */ 239 public void deleteAiAgentById(String agentId) { 240 deleteAiAgentById(agentId, new DeleteAiAgentByIdHeaders()); 241 } 242 243 /** 244 * Deletes an AI agent using the provided parameters. 245 * 246 * @param agentId The ID of the agent to delete. Example: "1234" 247 * @param headers Headers of deleteAiAgentById method 248 */ 249 public void deleteAiAgentById(String agentId, DeleteAiAgentByIdHeaders headers) { 250 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 251 FetchResponse response = 252 this.networkSession 253 .getNetworkClient() 254 .fetch( 255 new FetchOptions.Builder( 256 String.join( 257 "", 258 this.networkSession.getBaseUrls().getBaseUrl(), 259 "/2.0/ai_agents/", 260 convertToString(agentId)), 261 "DELETE") 262 .headers(headersMap) 263 .responseFormat(ResponseFormat.NO_CONTENT) 264 .auth(this.auth) 265 .networkSession(this.networkSession) 266 .build()); 267 } 268 269 public Authentication getAuth() { 270 return auth; 271 } 272 273 public NetworkSession getNetworkSession() { 274 return networkSession; 275 } 276 277 public static class Builder { 278 279 protected Authentication auth; 280 281 protected NetworkSession networkSession; 282 283 public Builder() {} 284 285 public Builder auth(Authentication auth) { 286 this.auth = auth; 287 return this; 288 } 289 290 public Builder networkSession(NetworkSession networkSession) { 291 this.networkSession = networkSession; 292 return this; 293 } 294 295 public AiStudioManager build() { 296 if (this.networkSession == null) { 297 this.networkSession = new NetworkSession(); 298 } 299 return new AiStudioManager(this); 300 } 301 } 302}