X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8b17f2ab7bcfcad4dcf9e3aa2cc203417053b23e..fb7dca3e3f07d37ad542f0e7cdf177f616493fe9:/sdk/go/arvados/api.go diff --git a/sdk/go/arvados/api.go b/sdk/go/arvados/api.go index d17f8735b8..d76ece1edd 100644 --- a/sdk/go/arvados/api.go +++ b/sdk/go/arvados/api.go @@ -8,6 +8,7 @@ import ( "bufio" "context" "encoding/json" + "io" "net" "github.com/sirupsen/logrus" @@ -22,6 +23,7 @@ type APIEndpoint struct { var ( EndpointConfigGet = APIEndpoint{"GET", "arvados/v1/config", ""} + EndpointVocabularyGet = APIEndpoint{"GET", "arvados/v1/vocabulary", ""} EndpointLogin = APIEndpoint{"GET", "login", ""} EndpointLogout = APIEndpoint{"GET", "logout", ""} EndpointCollectionCreate = APIEndpoint{"POST", "arvados/v1/collections", "collection"} @@ -56,10 +58,17 @@ var ( EndpointGroupGet = APIEndpoint{"GET", "arvados/v1/groups/{uuid}", ""} EndpointGroupList = APIEndpoint{"GET", "arvados/v1/groups", ""} EndpointGroupContents = APIEndpoint{"GET", "arvados/v1/groups/contents", ""} - EndpointGroupContents2 = APIEndpoint{"GET", "arvados/v1/groups/{uuid}/contents", ""} + EndpointGroupContentsUUIDInPath = APIEndpoint{"GET", "arvados/v1/groups/{uuid}/contents", ""} // Alternative HTTP route; client-side code should always use EndpointGroupContents instead EndpointGroupShared = APIEndpoint{"GET", "arvados/v1/groups/shared", ""} EndpointGroupDelete = APIEndpoint{"DELETE", "arvados/v1/groups/{uuid}", ""} + EndpointGroupTrash = APIEndpoint{"POST", "arvados/v1/groups/{uuid}/trash", ""} EndpointGroupUntrash = APIEndpoint{"POST", "arvados/v1/groups/{uuid}/untrash", ""} + EndpointLinkCreate = APIEndpoint{"POST", "arvados/v1/links", "link"} + EndpointLinkUpdate = APIEndpoint{"PATCH", "arvados/v1/links/{uuid}", "link"} + EndpointLinkGet = APIEndpoint{"GET", "arvados/v1/links/{uuid}", ""} + EndpointLinkList = APIEndpoint{"GET", "arvados/v1/links", ""} + EndpointLinkDelete = APIEndpoint{"DELETE", "arvados/v1/links/{uuid}", ""} + EndpointSysTrashSweep = APIEndpoint{"POST", "sys/trash_sweep", ""} EndpointUserActivate = APIEndpoint{"POST", "arvados/v1/users/{uuid}/activate", ""} EndpointUserCreate = APIEndpoint{"POST", "arvados/v1/users", "user"} EndpointUserCurrent = APIEndpoint{"GET", "arvados/v1/users/current", ""} @@ -73,10 +82,14 @@ var ( EndpointUserSystem = APIEndpoint{"GET", "arvados/v1/users/system", ""} EndpointUserUnsetup = APIEndpoint{"POST", "arvados/v1/users/{uuid}/unsetup", ""} EndpointUserUpdate = APIEndpoint{"PATCH", "arvados/v1/users/{uuid}", "user"} - EndpointUserUpdateUUID = APIEndpoint{"POST", "arvados/v1/users/{uuid}/update_uuid", ""} EndpointUserBatchUpdate = APIEndpoint{"PATCH", "arvados/v1/users/batch_update", ""} EndpointUserAuthenticate = APIEndpoint{"POST", "arvados/v1/users/authenticate", ""} EndpointAPIClientAuthorizationCurrent = APIEndpoint{"GET", "arvados/v1/api_client_authorizations/current", ""} + EndpointAPIClientAuthorizationCreate = APIEndpoint{"POST", "arvados/v1/api_client_authorizations", "api_client_authorization"} + EndpointAPIClientAuthorizationUpdate = APIEndpoint{"PUT", "arvados/v1/api_client_authorizations/{uuid}", "api_client_authorization"} + EndpointAPIClientAuthorizationList = APIEndpoint{"GET", "arvados/v1/api_client_authorizations", ""} + EndpointAPIClientAuthorizationDelete = APIEndpoint{"DELETE", "arvados/v1/api_client_authorizations/{uuid}", ""} + EndpointAPIClientAuthorizationGet = APIEndpoint{"GET", "arvados/v1/api_client_authorizations/{uuid}", ""} ) type ContainerSSHOptions struct { @@ -118,6 +131,7 @@ type ListOptions struct { IncludeOldVersions bool `json:"include_old_versions"` BypassFederation bool `json:"bypass_federation"` ForwardedFor string `json:"forwarded_for,omitempty"` + Include string `json:"include"` } type CreateOptions struct { @@ -125,41 +139,36 @@ type CreateOptions struct { EnsureUniqueName bool `json:"ensure_unique_name"` Select []string `json:"select"` Attrs map[string]interface{} `json:"attrs"` + // ReplaceFiles only applies when creating a collection. + ReplaceFiles map[string]string `json:"replace_files"` } type UpdateOptions struct { UUID string `json:"uuid"` Attrs map[string]interface{} `json:"attrs"` + Select []string `json:"select"` BypassFederation bool `json:"bypass_federation"` + // ReplaceFiles only applies when updating a collection. + ReplaceFiles map[string]string `json:"replace_files"` } -type ContentsOptions struct { +type GroupContentsOptions struct { + ClusterID string `json:"cluster_id"` UUID string `json:"uuid,omitempty"` Select []string `json:"select"` Filters []Filter `json:"filters"` Limit int64 `json:"limit"` Offset int64 `json:"offset"` Order []string `json:"order"` + Distinct bool `json:"distinct"` + Count string `json:"count"` + Include string `json:"include"` Recursive bool `json:"recursive"` + IncludeTrash bool `json:"include_trash"` + IncludeOldVersions bool `json:"include_old_versions"` ExcludeHomeProject bool `json:"exclude_home_project"` } -type SharedOptions struct { - UUID string `json:"uuid,omitempty"` - Select []string `json:"select"` - Filters []Filter `json:"filters"` - Limit int64 `json:"limit"` - Offset int64 `json:"offset"` - Count string `json:"count"` - Order []string `json:"order"` - Include string `json:"include"` -} - -type UpdateUUIDOptions struct { - UUID string `json:"uuid"` - NewUUID string `json:"new_uuid"` -} - type UserActivateOptions struct { UUID string `json:"uuid"` } @@ -208,8 +217,25 @@ type LogoutOptions struct { ReturnTo string `json:"return_to"` // Redirect to this URL after logging out } +type BlockWriteOptions struct { + Hash string + Data []byte + Reader io.Reader + DataSize int // Must be set if Data is nil. + RequestID string + StorageClasses []string + Replicas int + Attempts int +} + +type BlockWriteResponse struct { + Locator string + Replicas int +} + type API interface { ConfigGet(ctx context.Context) (json.RawMessage, error) + VocabularyGet(ctx context.Context) (Vocabulary, error) Login(ctx context.Context, options LoginOptions) (LoginResponse, error) Logout(ctx context.Context, options LogoutOptions) (LogoutResponse, error) CollectionCreate(ctx context.Context, options CreateOptions) (Collection, error) @@ -238,18 +264,24 @@ type API interface { GroupUpdate(ctx context.Context, options UpdateOptions) (Group, error) GroupGet(ctx context.Context, options GetOptions) (Group, error) GroupList(ctx context.Context, options ListOptions) (GroupList, error) - GroupContents(ctx context.Context, options ContentsOptions) (ObjectList, error) - GroupShared(ctx context.Context, options SharedOptions) (ObjectList, error) + GroupContents(ctx context.Context, options GroupContentsOptions) (ObjectList, error) + GroupShared(ctx context.Context, options ListOptions) (GroupList, error) GroupDelete(ctx context.Context, options DeleteOptions) (Group, error) + GroupTrash(ctx context.Context, options DeleteOptions) (Group, error) GroupUntrash(ctx context.Context, options UntrashOptions) (Group, error) + LinkCreate(ctx context.Context, options CreateOptions) (Link, error) + LinkUpdate(ctx context.Context, options UpdateOptions) (Link, error) + LinkGet(ctx context.Context, options GetOptions) (Link, error) + LinkList(ctx context.Context, options ListOptions) (LinkList, error) + LinkDelete(ctx context.Context, options DeleteOptions) (Link, error) SpecimenCreate(ctx context.Context, options CreateOptions) (Specimen, error) SpecimenUpdate(ctx context.Context, options UpdateOptions) (Specimen, error) SpecimenGet(ctx context.Context, options GetOptions) (Specimen, error) SpecimenList(ctx context.Context, options ListOptions) (SpecimenList, error) SpecimenDelete(ctx context.Context, options DeleteOptions) (Specimen, error) + SysTrashSweep(ctx context.Context, options struct{}) (struct{}, error) UserCreate(ctx context.Context, options CreateOptions) (User, error) UserUpdate(ctx context.Context, options UpdateOptions) (User, error) - UserUpdateUUID(ctx context.Context, options UpdateUUIDOptions) (User, error) UserMerge(ctx context.Context, options UserMergeOptions) (User, error) UserActivate(ctx context.Context, options UserActivateOptions) (User, error) UserSetup(ctx context.Context, options UserSetupOptions) (map[string]interface{}, error) @@ -262,4 +294,9 @@ type API interface { UserBatchUpdate(context.Context, UserBatchUpdateOptions) (UserList, error) UserAuthenticate(ctx context.Context, options UserAuthenticateOptions) (APIClientAuthorization, error) APIClientAuthorizationCurrent(ctx context.Context, options GetOptions) (APIClientAuthorization, error) + APIClientAuthorizationCreate(ctx context.Context, options CreateOptions) (APIClientAuthorization, error) + APIClientAuthorizationList(ctx context.Context, options ListOptions) (APIClientAuthorizationList, error) + APIClientAuthorizationDelete(ctx context.Context, options DeleteOptions) (APIClientAuthorization, error) + APIClientAuthorizationUpdate(ctx context.Context, options UpdateOptions) (APIClientAuthorization, error) + APIClientAuthorizationGet(ctx context.Context, options GetOptions) (APIClientAuthorization, error) }