1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: Apache-2.0
13 "github.com/sirupsen/logrus"
16 type APIEndpoint struct {
19 // "new attributes" key for create/update requests
24 EndpointConfigGet = APIEndpoint{"GET", "arvados/v1/config", ""}
25 EndpointLogin = APIEndpoint{"GET", "login", ""}
26 EndpointLogout = APIEndpoint{"GET", "logout", ""}
27 EndpointCollectionCreate = APIEndpoint{"POST", "arvados/v1/collections", "collection"}
28 EndpointCollectionUpdate = APIEndpoint{"PATCH", "arvados/v1/collections/{uuid}", "collection"}
29 EndpointCollectionGet = APIEndpoint{"GET", "arvados/v1/collections/{uuid}", ""}
30 EndpointCollectionList = APIEndpoint{"GET", "arvados/v1/collections", ""}
31 EndpointCollectionProvenance = APIEndpoint{"GET", "arvados/v1/collections/{uuid}/provenance", ""}
32 EndpointCollectionUsedBy = APIEndpoint{"GET", "arvados/v1/collections/{uuid}/used_by", ""}
33 EndpointCollectionDelete = APIEndpoint{"DELETE", "arvados/v1/collections/{uuid}", ""}
34 EndpointCollectionTrash = APIEndpoint{"POST", "arvados/v1/collections/{uuid}/trash", ""}
35 EndpointCollectionUntrash = APIEndpoint{"POST", "arvados/v1/collections/{uuid}/untrash", ""}
36 EndpointSpecimenCreate = APIEndpoint{"POST", "arvados/v1/specimens", "specimen"}
37 EndpointSpecimenUpdate = APIEndpoint{"PATCH", "arvados/v1/specimens/{uuid}", "specimen"}
38 EndpointSpecimenGet = APIEndpoint{"GET", "arvados/v1/specimens/{uuid}", ""}
39 EndpointSpecimenList = APIEndpoint{"GET", "arvados/v1/specimens", ""}
40 EndpointSpecimenDelete = APIEndpoint{"DELETE", "arvados/v1/specimens/{uuid}", ""}
41 EndpointContainerCreate = APIEndpoint{"POST", "arvados/v1/containers", "container"}
42 EndpointContainerUpdate = APIEndpoint{"PATCH", "arvados/v1/containers/{uuid}", "container"}
43 EndpointContainerGet = APIEndpoint{"GET", "arvados/v1/containers/{uuid}", ""}
44 EndpointContainerList = APIEndpoint{"GET", "arvados/v1/containers", ""}
45 EndpointContainerDelete = APIEndpoint{"DELETE", "arvados/v1/containers/{uuid}", ""}
46 EndpointContainerLock = APIEndpoint{"POST", "arvados/v1/containers/{uuid}/lock", ""}
47 EndpointContainerUnlock = APIEndpoint{"POST", "arvados/v1/containers/{uuid}/unlock", ""}
48 EndpointContainerSSH = APIEndpoint{"GET", "arvados/v1/connect/{uuid}/ssh", ""} // move to /containers after #17014 fixes routing
49 EndpointContainerRequestCreate = APIEndpoint{"POST", "arvados/v1/container_requests", "container_request"}
50 EndpointContainerRequestUpdate = APIEndpoint{"PATCH", "arvados/v1/container_requests/{uuid}", "container_request"}
51 EndpointContainerRequestGet = APIEndpoint{"GET", "arvados/v1/container_requests/{uuid}", ""}
52 EndpointContainerRequestList = APIEndpoint{"GET", "arvados/v1/container_requests", ""}
53 EndpointContainerRequestDelete = APIEndpoint{"DELETE", "arvados/v1/container_requests/{uuid}", ""}
54 EndpointGroupCreate = APIEndpoint{"POST", "arvados/v1/groups", "group"}
55 EndpointGroupUpdate = APIEndpoint{"PATCH", "arvados/v1/groups/{uuid}", "group"}
56 EndpointGroupGet = APIEndpoint{"GET", "arvados/v1/groups/{uuid}", ""}
57 EndpointGroupList = APIEndpoint{"GET", "arvados/v1/groups", ""}
58 EndpointGroupContents = APIEndpoint{"GET", "arvados/v1/groups/contents", ""}
59 EndpointGroupContentsUUIDInPath = APIEndpoint{"GET", "arvados/v1/groups/{uuid}/contents", ""} // Alternative HTTP route; client-side code should always use EndpointGroupContents instead
60 EndpointGroupShared = APIEndpoint{"GET", "arvados/v1/groups/shared", ""}
61 EndpointGroupDelete = APIEndpoint{"DELETE", "arvados/v1/groups/{uuid}", ""}
62 EndpointGroupUntrash = APIEndpoint{"POST", "arvados/v1/groups/{uuid}/untrash", ""}
63 EndpointUserActivate = APIEndpoint{"POST", "arvados/v1/users/{uuid}/activate", ""}
64 EndpointUserCreate = APIEndpoint{"POST", "arvados/v1/users", "user"}
65 EndpointUserCurrent = APIEndpoint{"GET", "arvados/v1/users/current", ""}
66 EndpointUserDelete = APIEndpoint{"DELETE", "arvados/v1/users/{uuid}", ""}
67 EndpointUserGet = APIEndpoint{"GET", "arvados/v1/users/{uuid}", ""}
68 EndpointUserGetCurrent = APIEndpoint{"GET", "arvados/v1/users/current", ""}
69 EndpointUserGetSystem = APIEndpoint{"GET", "arvados/v1/users/system", ""}
70 EndpointUserList = APIEndpoint{"GET", "arvados/v1/users", ""}
71 EndpointUserMerge = APIEndpoint{"POST", "arvados/v1/users/merge", ""}
72 EndpointUserSetup = APIEndpoint{"POST", "arvados/v1/users/setup", "user"}
73 EndpointUserSystem = APIEndpoint{"GET", "arvados/v1/users/system", ""}
74 EndpointUserUnsetup = APIEndpoint{"POST", "arvados/v1/users/{uuid}/unsetup", ""}
75 EndpointUserUpdate = APIEndpoint{"PATCH", "arvados/v1/users/{uuid}", "user"}
76 EndpointUserUpdateUUID = APIEndpoint{"POST", "arvados/v1/users/{uuid}/update_uuid", ""}
77 EndpointUserBatchUpdate = APIEndpoint{"PATCH", "arvados/v1/users/batch_update", ""}
78 EndpointUserAuthenticate = APIEndpoint{"POST", "arvados/v1/users/authenticate", ""}
79 EndpointAPIClientAuthorizationCurrent = APIEndpoint{"GET", "arvados/v1/api_client_authorizations/current", ""}
82 type ContainerSSHOptions struct {
83 UUID string `json:"uuid"`
84 DetachKeys string `json:"detach_keys"`
85 LoginUsername string `json:"login_username"`
88 type ContainerSSHConnection struct {
89 Conn net.Conn `json:"-"`
90 Bufrw *bufio.ReadWriter `json:"-"`
91 Logger logrus.FieldLogger `json:"-"`
94 type GetOptions struct {
95 UUID string `json:"uuid,omitempty"`
96 Select []string `json:"select"`
97 IncludeTrash bool `json:"include_trash"`
98 ForwardedFor string `json:"forwarded_for,omitempty"`
99 Remote string `json:"remote,omitempty"`
102 type UntrashOptions struct {
103 UUID string `json:"uuid"`
104 EnsureUniqueName bool `json:"ensure_unique_name"`
107 type ListOptions struct {
108 ClusterID string `json:"cluster_id"`
109 Select []string `json:"select"`
110 Filters []Filter `json:"filters"`
111 Where map[string]interface{} `json:"where"`
112 Limit int64 `json:"limit"`
113 Offset int64 `json:"offset"`
114 Order []string `json:"order"`
115 Distinct bool `json:"distinct"`
116 Count string `json:"count"`
117 IncludeTrash bool `json:"include_trash"`
118 IncludeOldVersions bool `json:"include_old_versions"`
119 BypassFederation bool `json:"bypass_federation"`
120 ForwardedFor string `json:"forwarded_for,omitempty"`
121 Include string `json:"include"`
124 type CreateOptions struct {
125 ClusterID string `json:"cluster_id"`
126 EnsureUniqueName bool `json:"ensure_unique_name"`
127 Select []string `json:"select"`
128 Attrs map[string]interface{} `json:"attrs"`
131 type UpdateOptions struct {
132 UUID string `json:"uuid"`
133 Attrs map[string]interface{} `json:"attrs"`
134 BypassFederation bool `json:"bypass_federation"`
137 type GroupContentsOptions struct {
138 UUID string `json:"uuid,omitempty"`
139 Select []string `json:"select"`
140 Filters []Filter `json:"filters"`
141 Limit int64 `json:"limit"`
142 Offset int64 `json:"offset"`
143 Order []string `json:"order"`
144 Include string `json:"include"`
145 Recursive bool `json:"recursive"`
146 IncludeOldVersions bool `json:"include_old_versions"`
147 ExcludeHomeProject bool `json:"exclude_home_project"`
150 type UpdateUUIDOptions struct {
151 UUID string `json:"uuid"`
152 NewUUID string `json:"new_uuid"`
155 type UserActivateOptions struct {
156 UUID string `json:"uuid"`
159 type UserSetupOptions struct {
160 UUID string `json:"uuid,omitempty"`
161 Email string `json:"email,omitempty"`
162 OpenIDPrefix string `json:"openid_prefix,omitempty"`
163 RepoName string `json:"repo_name,omitempty"`
164 VMUUID string `json:"vm_uuid,omitempty"`
165 SendNotificationEmail bool `json:"send_notification_email,omitempty"`
166 Attrs map[string]interface{} `json:"attrs"`
169 type UserMergeOptions struct {
170 NewUserUUID string `json:"new_user_uuid,omitempty"`
171 OldUserUUID string `json:"old_user_uuid,omitempty"`
172 NewOwnerUUID string `json:"new_owner_uuid,omitempty"`
173 NewUserToken string `json:"new_user_token,omitempty"`
174 RedirectToNewUser bool `json:"redirect_to_new_user"`
177 type UserBatchUpdateOptions struct {
178 Updates map[string]map[string]interface{} `json:"updates"`
181 type UserBatchUpdateResponse struct{}
183 type DeleteOptions struct {
184 UUID string `json:"uuid"`
187 type LoginOptions struct {
188 ReturnTo string `json:"return_to"` // On success, redirect to this target with api_token=xxx query param
189 Remote string `json:"remote,omitempty"` // Salt token for remote Cluster ID
190 Code string `json:"code,omitempty"` // OAuth2 callback code
191 State string `json:"state,omitempty"` // OAuth2 callback state
194 type UserAuthenticateOptions struct {
195 Username string `json:"username,omitempty"` // PAM username
196 Password string `json:"password,omitempty"` // PAM password
199 type LogoutOptions struct {
200 ReturnTo string `json:"return_to"` // Redirect to this URL after logging out
204 ConfigGet(ctx context.Context) (json.RawMessage, error)
205 Login(ctx context.Context, options LoginOptions) (LoginResponse, error)
206 Logout(ctx context.Context, options LogoutOptions) (LogoutResponse, error)
207 CollectionCreate(ctx context.Context, options CreateOptions) (Collection, error)
208 CollectionUpdate(ctx context.Context, options UpdateOptions) (Collection, error)
209 CollectionGet(ctx context.Context, options GetOptions) (Collection, error)
210 CollectionList(ctx context.Context, options ListOptions) (CollectionList, error)
211 CollectionProvenance(ctx context.Context, options GetOptions) (map[string]interface{}, error)
212 CollectionUsedBy(ctx context.Context, options GetOptions) (map[string]interface{}, error)
213 CollectionDelete(ctx context.Context, options DeleteOptions) (Collection, error)
214 CollectionTrash(ctx context.Context, options DeleteOptions) (Collection, error)
215 CollectionUntrash(ctx context.Context, options UntrashOptions) (Collection, error)
216 ContainerCreate(ctx context.Context, options CreateOptions) (Container, error)
217 ContainerUpdate(ctx context.Context, options UpdateOptions) (Container, error)
218 ContainerGet(ctx context.Context, options GetOptions) (Container, error)
219 ContainerList(ctx context.Context, options ListOptions) (ContainerList, error)
220 ContainerDelete(ctx context.Context, options DeleteOptions) (Container, error)
221 ContainerLock(ctx context.Context, options GetOptions) (Container, error)
222 ContainerUnlock(ctx context.Context, options GetOptions) (Container, error)
223 ContainerSSH(ctx context.Context, options ContainerSSHOptions) (ContainerSSHConnection, error)
224 ContainerRequestCreate(ctx context.Context, options CreateOptions) (ContainerRequest, error)
225 ContainerRequestUpdate(ctx context.Context, options UpdateOptions) (ContainerRequest, error)
226 ContainerRequestGet(ctx context.Context, options GetOptions) (ContainerRequest, error)
227 ContainerRequestList(ctx context.Context, options ListOptions) (ContainerRequestList, error)
228 ContainerRequestDelete(ctx context.Context, options DeleteOptions) (ContainerRequest, error)
229 GroupCreate(ctx context.Context, options CreateOptions) (Group, error)
230 GroupUpdate(ctx context.Context, options UpdateOptions) (Group, error)
231 GroupGet(ctx context.Context, options GetOptions) (Group, error)
232 GroupList(ctx context.Context, options ListOptions) (GroupList, error)
233 GroupContents(ctx context.Context, options GroupContentsOptions) (ObjectList, error)
234 GroupShared(ctx context.Context, options ListOptions) (GroupList, error)
235 GroupDelete(ctx context.Context, options DeleteOptions) (Group, error)
236 GroupUntrash(ctx context.Context, options UntrashOptions) (Group, error)
237 SpecimenCreate(ctx context.Context, options CreateOptions) (Specimen, error)
238 SpecimenUpdate(ctx context.Context, options UpdateOptions) (Specimen, error)
239 SpecimenGet(ctx context.Context, options GetOptions) (Specimen, error)
240 SpecimenList(ctx context.Context, options ListOptions) (SpecimenList, error)
241 SpecimenDelete(ctx context.Context, options DeleteOptions) (Specimen, error)
242 UserCreate(ctx context.Context, options CreateOptions) (User, error)
243 UserUpdate(ctx context.Context, options UpdateOptions) (User, error)
244 UserUpdateUUID(ctx context.Context, options UpdateUUIDOptions) (User, error)
245 UserMerge(ctx context.Context, options UserMergeOptions) (User, error)
246 UserActivate(ctx context.Context, options UserActivateOptions) (User, error)
247 UserSetup(ctx context.Context, options UserSetupOptions) (map[string]interface{}, error)
248 UserUnsetup(ctx context.Context, options GetOptions) (User, error)
249 UserGet(ctx context.Context, options GetOptions) (User, error)
250 UserGetCurrent(ctx context.Context, options GetOptions) (User, error)
251 UserGetSystem(ctx context.Context, options GetOptions) (User, error)
252 UserList(ctx context.Context, options ListOptions) (UserList, error)
253 UserDelete(ctx context.Context, options DeleteOptions) (User, error)
254 UserBatchUpdate(context.Context, UserBatchUpdateOptions) (UserList, error)
255 UserAuthenticate(ctx context.Context, options UserAuthenticateOptions) (APIClientAuthorization, error)
256 APIClientAuthorizationCurrent(ctx context.Context, options GetOptions) (APIClientAuthorization, error)