diff --git a/docs/ActionWorkflowRun.md b/docs/ActionWorkflowRun.md
index 732c983..82369db 100644
--- a/docs/ActionWorkflowRun.md
+++ b/docs/ActionWorkflowRun.md
@@ -14,9 +14,10 @@ Name | Type | Description | Notes
**htmlUrl** | **String** | | [optional]
**id** | **Long** | | [optional]
**path** | **String** | | [optional]
+**previousAttemptUrl** | **String** | PreviousAttemptURL is the API URL of the previous attempt of this run, e.g. \".../actions/runs/{run_id}/attempts/{attempt-1}\". It is set only when the current attempt is > 1 (i.e. a rerun). For the first attempt, or for legacy runs that pre-date ActionRunAttempt, it is null. | [optional]
**repository** | [**Repository**](Repository.md) | | [optional]
**repositoryId** | **Long** | | [optional]
-**runAttempt** | **Long** | | [optional]
+**runAttempt** | **Long** | RunAttempt is 1-based for runs created after ActionRunAttempt was introduced. A value of 0 is a legacy-only sentinel for runs created before attempts existed and indicates no corresponding /attempts/{n} resource is available. | [optional]
**runNumber** | **Long** | | [optional]
**startedAt** | [**Date**](Date.md) | | [optional]
**status** | **String** | | [optional]
diff --git a/docs/RepositoryApi.md b/docs/RepositoryApi.md
index d9eb6a6..f071e3a 100644
--- a/docs/RepositoryApi.md
+++ b/docs/RepositoryApi.md
@@ -33,10 +33,12 @@ Method | HTTP request | Description
[**getTree**](RepositoryApi.md#getTree) | **GET** repos/{owner}/{repo}/git/trees/{sha} | Gets the tree of a repository.
[**getWorkflowJob**](RepositoryApi.md#getWorkflowJob) | **GET** repos/{owner}/{repo}/actions/jobs/{job_id} | Gets a specific workflow job for a workflow run
[**getWorkflowRun**](RepositoryApi.md#getWorkflowRun) | **GET** repos/{owner}/{repo}/actions/runs/{run} | Gets a specific workflow run
+[**getWorkflowRunAttempt**](RepositoryApi.md#getWorkflowRunAttempt) | **GET** repos/{owner}/{repo}/actions/runs/{run}/attempts/{attempt} | Gets a specific workflow run attempt
[**getWorkflowRuns**](RepositoryApi.md#getWorkflowRuns) | **GET** repos/{owner}/{repo}/actions/runs | Lists all runs for a repository run
[**listActionTasks**](RepositoryApi.md#listActionTasks) | **GET** repos/{owner}/{repo}/actions/tasks | List a repository's action tasks
[**listForks**](RepositoryApi.md#listForks) | **GET** repos/{owner}/{repo}/forks | List a repository's forks
[**listWorkflowJobs**](RepositoryApi.md#listWorkflowJobs) | **GET** repos/{owner}/{repo}/actions/jobs | Lists all jobs for a repository
+[**listWorkflowRunAttemptJobs**](RepositoryApi.md#listWorkflowRunAttemptJobs) | **GET** repos/{owner}/{repo}/actions/runs/{run}/attempts/{attempt}/jobs | Lists all jobs for a workflow run attempt
[**listWorkflowRunJobs**](RepositoryApi.md#listWorkflowRunJobs) | **GET** repos/{owner}/{repo}/actions/runs/{run}/jobs | Lists all jobs for a workflow run
[**rejectRepoTransfer**](RepositoryApi.md#rejectRepoTransfer) | **POST** repos/{owner}/{repo}/transfer/reject | Reject a repo transfer
[**repoAddCollaborator**](RepositoryApi.md#repoAddCollaborator) | **PUT** repos/{owner}/{repo}/collaborators/{collaborator} | Add or Update a collaborator to a repository
@@ -2844,6 +2846,99 @@ Name | Type | Description | Notes
[AccessToken](../README.md#AccessToken)[AuthorizationHeaderToken](../README.md#AuthorizationHeaderToken)[BasicAuth](../README.md#BasicAuth)[SudoHeader](../README.md#SudoHeader)[SudoParam](../README.md#SudoParam)[TOTPHeader](../README.md#TOTPHeader)[Token](../README.md#Token)
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **getWorkflowRunAttempt**
+> ActionWorkflowRun getWorkflowRunAttempt(owner, repo, run, attempt)
+
+Gets a specific workflow run attempt
+
+### Example
+```java
+// Import classes:
+//import org.gitnex.tea4j.v2.ApiClient;
+//import org.gitnex.tea4j.v2.ApiException;
+//import org.gitnex.tea4j.v2.Configuration;
+//import org.gitnex.tea4j.v2.auth.*;
+//import org.gitnex.tea4j.v2.apis.RepositoryApi;
+
+ApiClient defaultClient = Configuration.getDefaultApiClient();
+
+// Configure API key authorization: AccessToken
+ApiKeyAuth AccessToken = (ApiKeyAuth) defaultClient.getAuthentication("AccessToken");
+AccessToken.setApiKey("YOUR API KEY");
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//AccessToken.setApiKeyPrefix("Token");
+
+// Configure API key authorization: AuthorizationHeaderToken
+ApiKeyAuth AuthorizationHeaderToken = (ApiKeyAuth) defaultClient.getAuthentication("AuthorizationHeaderToken");
+AuthorizationHeaderToken.setApiKey("YOUR API KEY");
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//AuthorizationHeaderToken.setApiKeyPrefix("Token");
+// Configure HTTP basic authorization: BasicAuth
+HttpBasicAuth BasicAuth = (HttpBasicAuth) defaultClient.getAuthentication("BasicAuth");
+BasicAuth.setUsername("YOUR USERNAME");
+BasicAuth.setPassword("YOUR PASSWORD");
+
+// Configure API key authorization: SudoHeader
+ApiKeyAuth SudoHeader = (ApiKeyAuth) defaultClient.getAuthentication("SudoHeader");
+SudoHeader.setApiKey("YOUR API KEY");
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//SudoHeader.setApiKeyPrefix("Token");
+
+// Configure API key authorization: SudoParam
+ApiKeyAuth SudoParam = (ApiKeyAuth) defaultClient.getAuthentication("SudoParam");
+SudoParam.setApiKey("YOUR API KEY");
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//SudoParam.setApiKeyPrefix("Token");
+
+// Configure API key authorization: TOTPHeader
+ApiKeyAuth TOTPHeader = (ApiKeyAuth) defaultClient.getAuthentication("TOTPHeader");
+TOTPHeader.setApiKey("YOUR API KEY");
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//TOTPHeader.setApiKeyPrefix("Token");
+
+// Configure API key authorization: Token
+ApiKeyAuth Token = (ApiKeyAuth) defaultClient.getAuthentication("Token");
+Token.setApiKey("YOUR API KEY");
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//Token.setApiKeyPrefix("Token");
+
+RepositoryApi apiInstance = new RepositoryApi();
+String owner = "owner_example"; // String | owner of the repo
+String repo = "repo_example"; // String | name of the repository
+Integer run = 56; // Integer | id of the run
+Integer attempt = 56; // Integer | logical attempt number of the run
+try {
+ ActionWorkflowRun result = apiInstance.getWorkflowRunAttempt(owner, repo, run, attempt);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling RepositoryApi#getWorkflowRunAttempt");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **owner** | **String**| owner of the repo |
+ **repo** | **String**| name of the repository |
+ **run** | **Integer**| id of the run |
+ **attempt** | **Integer**| logical attempt number of the run |
+
+### Return type
+
+[**ActionWorkflowRun**](ActionWorkflowRun.md)
+
+### Authorization
+
+[AccessToken](../README.md#AccessToken)[AuthorizationHeaderToken](../README.md#AuthorizationHeaderToken)[BasicAuth](../README.md#BasicAuth)[SudoHeader](../README.md#SudoHeader)[SudoParam](../README.md#SudoParam)[TOTPHeader](../README.md#TOTPHeader)[Token](../README.md#Token)
+
### HTTP request headers
- **Content-Type**: Not defined
@@ -3228,6 +3323,105 @@ Name | Type | Description | Notes
[AccessToken](../README.md#AccessToken)[AuthorizationHeaderToken](../README.md#AuthorizationHeaderToken)[BasicAuth](../README.md#BasicAuth)[SudoHeader](../README.md#SudoHeader)[SudoParam](../README.md#SudoParam)[TOTPHeader](../README.md#TOTPHeader)[Token](../README.md#Token)
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **listWorkflowRunAttemptJobs**
+> ActionWorkflowJobsResponse listWorkflowRunAttemptJobs(owner, repo, run, attempt, status, page, limit)
+
+Lists all jobs for a workflow run attempt
+
+### Example
+```java
+// Import classes:
+//import org.gitnex.tea4j.v2.ApiClient;
+//import org.gitnex.tea4j.v2.ApiException;
+//import org.gitnex.tea4j.v2.Configuration;
+//import org.gitnex.tea4j.v2.auth.*;
+//import org.gitnex.tea4j.v2.apis.RepositoryApi;
+
+ApiClient defaultClient = Configuration.getDefaultApiClient();
+
+// Configure API key authorization: AccessToken
+ApiKeyAuth AccessToken = (ApiKeyAuth) defaultClient.getAuthentication("AccessToken");
+AccessToken.setApiKey("YOUR API KEY");
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//AccessToken.setApiKeyPrefix("Token");
+
+// Configure API key authorization: AuthorizationHeaderToken
+ApiKeyAuth AuthorizationHeaderToken = (ApiKeyAuth) defaultClient.getAuthentication("AuthorizationHeaderToken");
+AuthorizationHeaderToken.setApiKey("YOUR API KEY");
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//AuthorizationHeaderToken.setApiKeyPrefix("Token");
+// Configure HTTP basic authorization: BasicAuth
+HttpBasicAuth BasicAuth = (HttpBasicAuth) defaultClient.getAuthentication("BasicAuth");
+BasicAuth.setUsername("YOUR USERNAME");
+BasicAuth.setPassword("YOUR PASSWORD");
+
+// Configure API key authorization: SudoHeader
+ApiKeyAuth SudoHeader = (ApiKeyAuth) defaultClient.getAuthentication("SudoHeader");
+SudoHeader.setApiKey("YOUR API KEY");
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//SudoHeader.setApiKeyPrefix("Token");
+
+// Configure API key authorization: SudoParam
+ApiKeyAuth SudoParam = (ApiKeyAuth) defaultClient.getAuthentication("SudoParam");
+SudoParam.setApiKey("YOUR API KEY");
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//SudoParam.setApiKeyPrefix("Token");
+
+// Configure API key authorization: TOTPHeader
+ApiKeyAuth TOTPHeader = (ApiKeyAuth) defaultClient.getAuthentication("TOTPHeader");
+TOTPHeader.setApiKey("YOUR API KEY");
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//TOTPHeader.setApiKeyPrefix("Token");
+
+// Configure API key authorization: Token
+ApiKeyAuth Token = (ApiKeyAuth) defaultClient.getAuthentication("Token");
+Token.setApiKey("YOUR API KEY");
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//Token.setApiKeyPrefix("Token");
+
+RepositoryApi apiInstance = new RepositoryApi();
+String owner = "owner_example"; // String | owner of the repo
+String repo = "repo_example"; // String | name of the repository
+Integer run = 56; // Integer | id of the workflow run
+Integer attempt = 56; // Integer | logical attempt number of the run
+String status = "status_example"; // String | workflow status (pending, queued, in_progress, failure, success, skipped)
+Integer page = 56; // Integer | page number of results to return (1-based)
+Integer limit = 56; // Integer | page size of results
+try {
+ ActionWorkflowJobsResponse result = apiInstance.listWorkflowRunAttemptJobs(owner, repo, run, attempt, status, page, limit);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling RepositoryApi#listWorkflowRunAttemptJobs");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **owner** | **String**| owner of the repo |
+ **repo** | **String**| name of the repository |
+ **run** | **Integer**| id of the workflow run |
+ **attempt** | **Integer**| logical attempt number of the run |
+ **status** | **String**| workflow status (pending, queued, in_progress, failure, success, skipped) | [optional]
+ **page** | **Integer**| page number of results to return (1-based) | [optional]
+ **limit** | **Integer**| page size of results | [optional]
+
+### Return type
+
+[**ActionWorkflowJobsResponse**](ActionWorkflowJobsResponse.md)
+
+### Authorization
+
+[AccessToken](../README.md#AccessToken)[AuthorizationHeaderToken](../README.md#AuthorizationHeaderToken)[BasicAuth](../README.md#BasicAuth)[SudoHeader](../README.md#SudoHeader)[SudoParam](../README.md#SudoParam)[TOTPHeader](../README.md#TOTPHeader)[Token](../README.md#Token)
+
### HTTP request headers
- **Content-Type**: Not defined
diff --git a/src/main/java/org/gitnex/tea4j/v2/apis/RepositoryApi.java b/src/main/java/org/gitnex/tea4j/v2/apis/RepositoryApi.java
index 1afc9d9..17cc5d2 100644
--- a/src/main/java/org/gitnex/tea4j/v2/apis/RepositoryApi.java
+++ b/src/main/java/org/gitnex/tea4j/v2/apis/RepositoryApi.java
@@ -538,6 +538,22 @@ public interface RepositoryApi {
@retrofit2.http.Path("repo") String repo,
@retrofit2.http.Path("run") Integer run);
+ /**
+ * Gets a specific workflow run attempt
+ *
+ * @param owner owner of the repo (required)
+ * @param repo name of the repository (required)
+ * @param run id of the run (required)
+ * @param attempt logical attempt number of the run (required)
+ * @return Call<ActionWorkflowRun>
+ */
+ @GET("repos/{owner}/{repo}/actions/runs/{run}/attempts/{attempt}")
+ Call getWorkflowRunAttempt(
+ @retrofit2.http.Path("owner") String owner,
+ @retrofit2.http.Path("repo") String repo,
+ @retrofit2.http.Path("run") Integer run,
+ @retrofit2.http.Path("attempt") Integer attempt);
+
/**
* Lists all runs for a repository run
*
@@ -616,6 +632,29 @@ public interface RepositoryApi {
@retrofit2.http.Query("page") Integer page,
@retrofit2.http.Query("limit") Integer limit);
+ /**
+ * Lists all jobs for a workflow run attempt
+ *
+ * @param owner owner of the repo (required)
+ * @param repo name of the repository (required)
+ * @param run id of the workflow run (required)
+ * @param attempt logical attempt number of the run (required)
+ * @param status workflow status (pending, queued, in_progress, failure, success, skipped)
+ * (optional)
+ * @param page page number of results to return (1-based) (optional)
+ * @param limit page size of results (optional)
+ * @return Call<ActionWorkflowJobsResponse>
+ */
+ @GET("repos/{owner}/{repo}/actions/runs/{run}/attempts/{attempt}/jobs")
+ Call listWorkflowRunAttemptJobs(
+ @retrofit2.http.Path("owner") String owner,
+ @retrofit2.http.Path("repo") String repo,
+ @retrofit2.http.Path("run") Integer run,
+ @retrofit2.http.Path("attempt") Integer attempt,
+ @retrofit2.http.Query("status") String status,
+ @retrofit2.http.Query("page") Integer page,
+ @retrofit2.http.Query("limit") Integer limit);
+
/**
* Lists all jobs for a workflow run
*
diff --git a/src/main/java/org/gitnex/tea4j/v2/models/ActionWorkflowRun.java b/src/main/java/org/gitnex/tea4j/v2/models/ActionWorkflowRun.java
index 62fd8e3..a70440e 100644
--- a/src/main/java/org/gitnex/tea4j/v2/models/ActionWorkflowRun.java
+++ b/src/main/java/org/gitnex/tea4j/v2/models/ActionWorkflowRun.java
@@ -56,6 +56,9 @@ public class ActionWorkflowRun implements Serializable {
@SerializedName("path")
private String path = null;
+ @SerializedName("previous_attempt_url")
+ private String previousAttemptUrl = null;
+
@SerializedName("repository")
private Repository repository = null;
@@ -289,6 +292,33 @@ public class ActionWorkflowRun implements Serializable {
this.path = path;
}
+ public ActionWorkflowRun previousAttemptUrl(String previousAttemptUrl) {
+ this.previousAttemptUrl = previousAttemptUrl;
+ return this;
+ }
+
+ /**
+ * PreviousAttemptURL is the API URL of the previous attempt of this run, e.g.
+ * \".../actions/runs/{run_id}/attempts/{attempt-1}\". It is set only when the current
+ * attempt is > 1 (i.e. a rerun). For the first attempt, or for legacy runs that pre-date
+ * ActionRunAttempt, it is null.
+ *
+ * @return previousAttemptUrl
+ */
+ @Schema(
+ description =
+ "PreviousAttemptURL is the API URL of the previous attempt of this run, e.g."
+ + " \".../actions/runs/{run_id}/attempts/{attempt-1}\". It is set only when the"
+ + " current attempt is > 1 (i.e. a rerun). For the first attempt, or for legacy runs"
+ + " that pre-date ActionRunAttempt, it is null.")
+ public String getPreviousAttemptUrl() {
+ return previousAttemptUrl;
+ }
+
+ public void setPreviousAttemptUrl(String previousAttemptUrl) {
+ this.previousAttemptUrl = previousAttemptUrl;
+ }
+
public ActionWorkflowRun repository(Repository repository) {
this.repository = repository;
return this;
@@ -333,11 +363,17 @@ public class ActionWorkflowRun implements Serializable {
}
/**
- * Get runAttempt
+ * RunAttempt is 1-based for runs created after ActionRunAttempt was introduced. A value of 0 is a
+ * legacy-only sentinel for runs created before attempts existed and indicates no corresponding
+ * /attempts/{n} resource is available.
*
* @return runAttempt
*/
- @Schema(description = "")
+ @Schema(
+ description =
+ "RunAttempt is 1-based for runs created after ActionRunAttempt was introduced. A value of"
+ + " 0 is a legacy-only sentinel for runs created before attempts existed and"
+ + " indicates no corresponding /attempts/{n} resource is available.")
public Long getRunAttempt() {
return runAttempt;
}
@@ -461,6 +497,7 @@ public class ActionWorkflowRun implements Serializable {
&& Objects.equals(this.htmlUrl, actionWorkflowRun.htmlUrl)
&& Objects.equals(this.id, actionWorkflowRun.id)
&& Objects.equals(this.path, actionWorkflowRun.path)
+ && Objects.equals(this.previousAttemptUrl, actionWorkflowRun.previousAttemptUrl)
&& Objects.equals(this.repository, actionWorkflowRun.repository)
&& Objects.equals(this.repositoryId, actionWorkflowRun.repositoryId)
&& Objects.equals(this.runAttempt, actionWorkflowRun.runAttempt)
@@ -485,6 +522,7 @@ public class ActionWorkflowRun implements Serializable {
htmlUrl,
id,
path,
+ previousAttemptUrl,
repository,
repositoryId,
runAttempt,
@@ -511,6 +549,7 @@ public class ActionWorkflowRun implements Serializable {
sb.append(" htmlUrl: ").append(toIndentedString(htmlUrl)).append("\n");
sb.append(" id: ").append(toIndentedString(id)).append("\n");
sb.append(" path: ").append(toIndentedString(path)).append("\n");
+ sb.append(" previousAttemptUrl: ").append(toIndentedString(previousAttemptUrl)).append("\n");
sb.append(" repository: ").append(toIndentedString(repository)).append("\n");
sb.append(" repositoryId: ").append(toIndentedString(repositoryId)).append("\n");
sb.append(" runAttempt: ").append(toIndentedString(runAttempt)).append("\n");