Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
358 changes: 347 additions & 11 deletions src/main/java/com/crowdin/client/ai/AIApi.java

Large diffs are not rendered by default.

16 changes: 16 additions & 0 deletions src/main/java/com/crowdin/client/ai/model/AiCostLimitMode.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.crowdin.client.ai.model;

import com.crowdin.client.core.model.EnumConverter;

public enum AiCostLimitMode implements EnumConverter<AiCostLimitMode> {
CUSTOM, BLOCKED, UNLIMITED;

public static AiCostLimitMode from(String value) {
return AiCostLimitMode.valueOf(value.toUpperCase());
}

@Override
public Object to(AiCostLimitMode v) {
return v.name().toLowerCase();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public static class Attributes {
}

@Data
private static class FileTranslationError {
public static class FileTranslationError {
private String stage;
private String message;
}
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/com/crowdin/client/ai/model/AiPrompt.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ public class AiPrompt {
private Map<String, Object> config;
private String promptPreview;
private Boolean isFineTuningAvailable;
private Long createdBy;
private Long updatedBy;
private Long lastUsedBy;
private Date lastUsedAt;
private Long usageCount;
private Date createdAt;
private Date updatedAt;
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ public class AiPromptAddRequest {
private String action;
private Long aiProviderId;
private String aiModelId;
/**
* @deprecated deprecated in the API
*/
@Deprecated
private Boolean isEnabled;
private List<Long> enabledProjectIds;
private Map<String, Object> config;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.crowdin.client.ai.model;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;
Expand All @@ -8,18 +10,89 @@
@Data
public class AiPromptCompletionRequest {
private AiPromptResource resources;

/**
* @deprecated the API expects an array of tools; use {@link #aiTools} instead. This field is not sent to the API.
*/
@Deprecated
@JsonIgnore
private Map<String, Object> tools;

@JsonProperty("tools")
private List<AiTool> aiTools;

/**
* @deprecated the API accepts either a string or an object; use {@link #toolChoice} instead
*/
@Deprecated
@JsonIgnore
private Map<String, Object> tool_choice;

/**
* Either a {@link String} or an object (e.g. {@link Map})
*/
@JsonProperty("tool_choice")
private Object toolChoice;

/**
* @deprecated use {@link #toolChoice} instead
*/
@Deprecated
public void setTool_choice(Map<String, Object> tool_choice) {
this.tool_choice = tool_choice;
this.toolChoice = tool_choice;
}

/**
* @deprecated use {@link #toolChoice} instead
*/
@Deprecated
@SuppressWarnings("unchecked")
public Map<String, Object> getTool_choice() {
if (this.toolChoice instanceof Map) {
return (Map<String, Object>) this.toolChoice;
}
return null;
}

@Data
public static class AiTool {
private Tool tool;
}

@Data
public static class Tool {
/**
* Currently, only {@code function} is supported
*/
private String type;
private ToolFunction function;
}

@Data
public static class ToolFunction {
private String name;
private String description;
private Map<String, Object> parameters;
}

@Data
public static class AiPromptResource {
private Long projectId;
private String sourceLanguageId;
private String targetLanguageId;
private List<Long> stringIds;
/**
* @deprecated not part of the API prompt completion resources
*/
@Deprecated
private List<Long> filteredStringsIds;
private Map<String, Object> overridePromptValues;
private String customInstruction;
/**
* @deprecated not part of the API prompt completion resources; pass it in {@link #overridePromptValues} instead
*/
@Deprecated
private String projectDescription;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ public static class AiPromptCompletionData {
private Date createdAt;
private Date updatedAt;
private Date startedAt;
private Date finishedAt;
/**
* @deprecated deprecated in the API
*/
@Deprecated
private String eta;
}

@Data
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/com/crowdin/client/ai/model/AiProviderModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,15 @@
@Data
public class AiProviderModel {
private String id;
private String provider;
private String providerName;
private Long providerId;
private Long contextWindow;
private Long maxOutputTokens;
private Boolean supportsStreaming;
private Boolean supportsFunctionCalling;
private Boolean supportsJsonMode;
private Boolean supportsJsonSchema;
private Boolean supportsVision;
private Boolean isCompatibleWithAiLimit;
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ public class AiProviderRequest {
private String name;
private String type;
private Credentials credentials;
/**
* @deprecated deprecated in the API
*/
@Deprecated
private Config config;
private Boolean isEnabled;
private Boolean useSystemCredentials;
Expand Down
25 changes: 25 additions & 0 deletions src/main/java/com/crowdin/client/ai/model/AiRequestLogExport.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.crowdin.client.ai.model;

import lombok.Data;

import java.util.Date;
import java.util.Map;

@Data
public class AiRequestLogExport {
private String identifier;
private String status;
private Integer progress;
private Attributes attributes;
private Date createdAt;
private Date updatedAt;
private Date startedAt;
private Date finishedAt;
private String eta;

@Data
public static class Attributes {
private AiRequestLogExportFormat format;
private Map<String, Object> filters;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.crowdin.client.ai.model;

import com.crowdin.client.core.model.EnumConverter;

public enum AiRequestLogExportFormat implements EnumConverter<AiRequestLogExportFormat> {
CSV;

public static AiRequestLogExportFormat from(String value) {
return AiRequestLogExportFormat.valueOf(value.toUpperCase());
}

@Override
public Object to(AiRequestLogExportFormat v) {
return v.name().toLowerCase();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.crowdin.client.ai.model;

import lombok.Data;

import java.util.List;

@Data
public class AiRequestLogExportRequest {
private AiRequestLogExportFormat format;
private String requestId;
private Long projectId;
private Long userId;
private Long aiProviderId;
private String model;
private AiRequestSourceAction sourceAction;
private String promptAction;
private List<AiRequestLogStatus> statuses;
private String tokenName;
private String oauthClientId;
private Boolean systemCredentials;
private Boolean isAutoTriggered;
private String createdAfter;
private String createdBefore;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.crowdin.client.ai.model;

import lombok.Data;

@Data
public class AiRequestLogExportResponseObject {
private AiRequestLogExport data;
}
34 changes: 33 additions & 1 deletion src/main/java/com/crowdin/client/ai/model/AiSetting.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,52 @@

import lombok.Data;

import java.util.Date;
import java.util.List;

@Data
public class AiSetting {

/**
* @deprecated no longer part of the API AI settings resource
*/
@Deprecated
private Boolean showSuggestion;
private Long preTranslationAiPromptId;
private Long editorSuggestionAiPromptId;
private Long qaCheckActionAiPromptId;
private Long contextReviewAiPromptId;
/**
* Crowdin Enterprise only
*/
private Long alignmentActionAiPromptId;
private Double dailyCostLimit;
private Double monthlyCostLimit;
private Double userDailyCostLimit;
private Double userMonthlyCostLimit;
private Boolean isLimitingActive;
private List<PerUserOverride> perUserOverrides;

@Data
private static class ShortCut {
public static class ShortCut {
private String name;
private String prompt;
private Boolean isEnabled;
}

@Data
public static class PerUserOverride {
private Long userId;
private AiCostLimitMode costLimitMode;
private Double dailyCostLimit;
private Double monthlyCostLimit;
private Date createdAt;
private Date updatedAt;
}

/**
* @deprecated no longer part of the API AI settings resource
*/
@Deprecated
private List<ShortCut> shortcuts;
}
24 changes: 24 additions & 0 deletions src/main/java/com/crowdin/client/ai/model/AiUsageMember.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.crowdin.client.ai.model;

import lombok.Data;

import java.util.Date;

@Data
public class AiUsageMember {
private User user;
private Double dailyCostLimit;
private Double dailyCostSpent;
private Date dailyResetAt;
private Double monthlyCostLimit;
private Double monthlyCostSpent;
private Date monthlyResetAt;

@Data
public static class User {
private Long id;
private String username;
private String fullName;
private String avatarUrl;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.crowdin.client.ai.model;

import com.crowdin.client.core.model.Pagination;
import com.crowdin.client.core.model.ResponseList;
import com.crowdin.client.core.model.ResponseObject;
import lombok.Data;

import java.util.List;
import java.util.stream.Collectors;

@Data
public class AiUsageMemberResponseList {
private List<AiUsageMemberResponseObject> data;
private Pagination pagination;

public static ResponseList<AiUsageMember> to(AiUsageMemberResponseList responseList) {
return ResponseList.of(
responseList.data.stream()
.map(AiUsageMemberResponseObject::getData)
.map(ResponseObject::of)
.collect(Collectors.toList()),
responseList.getPagination()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.crowdin.client.ai.model;

import lombok.Data;

@Data
public class AiUsageMemberResponseObject {
private AiUsageMember data;
}
Loading
Loading