14287: Add collection trash & untrash endpoints.
[arvados.git] / sdk / go / arvados / api.go
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: Apache-2.0
4
5 package arvados
6
7 type APIEndpoint struct {
8         Method string
9         Path   string
10         // "new attributes" key for create/update requests
11         AttrsKey string
12 }
13
14 var (
15         EndpointCollectionCreate              = APIEndpoint{"POST", "arvados/v1/collections", "collection"}
16         EndpointCollectionUpdate              = APIEndpoint{"PATCH", "arvados/v1/collections/:uuid", "collection"}
17         EndpointCollectionGet                 = APIEndpoint{"GET", "arvados/v1/collections/:uuid", ""}
18         EndpointCollectionList                = APIEndpoint{"GET", "arvados/v1/collections", ""}
19         EndpointCollectionProvenance          = APIEndpoint{"GET", "arvados/v1/collections/:uuid/provenance", ""}
20         EndpointCollectionUsedBy              = APIEndpoint{"GET", "arvados/v1/collections/:uuid/used_by", ""}
21         EndpointCollectionDelete              = APIEndpoint{"DELETE", "arvados/v1/collections/:uuid", ""}
22         EndpointCollectionTrash               = APIEndpoint{"POST", "arvados/v1/collections/:uuid/trash", ""}
23         EndpointCollectionUntrash             = APIEndpoint{"POST", "arvados/v1/collections/:uuid/untrash", ""}
24         EndpointSpecimenCreate                = APIEndpoint{"POST", "arvados/v1/specimens", "specimen"}
25         EndpointSpecimenUpdate                = APIEndpoint{"PATCH", "arvados/v1/specimens/:uuid", "specimen"}
26         EndpointSpecimenGet                   = APIEndpoint{"GET", "arvados/v1/specimens/:uuid", ""}
27         EndpointSpecimenList                  = APIEndpoint{"GET", "arvados/v1/specimens", ""}
28         EndpointSpecimenDelete                = APIEndpoint{"DELETE", "arvados/v1/specimens/:uuid", ""}
29         EndpointContainerCreate               = APIEndpoint{"POST", "arvados/v1/containers", "container"}
30         EndpointContainerUpdate               = APIEndpoint{"PATCH", "arvados/v1/containers/:uuid", "container"}
31         EndpointContainerGet                  = APIEndpoint{"GET", "arvados/v1/containers/:uuid", ""}
32         EndpointContainerList                 = APIEndpoint{"GET", "arvados/v1/containers", ""}
33         EndpointContainerDelete               = APIEndpoint{"DELETE", "arvados/v1/containers/:uuid", ""}
34         EndpointContainerLock                 = APIEndpoint{"POST", "arvados/v1/containers/:uuid/lock", ""}
35         EndpointContainerUnlock               = APIEndpoint{"POST", "arvados/v1/containers/:uuid/unlock", ""}
36         EndpointAPIClientAuthorizationCurrent = APIEndpoint{"GET", "arvados/v1/api_client_authorizations/current", ""}
37 )
38
39 type GetOptions struct {
40         UUID   string   `json:"uuid"`
41         Select []string `json:"select"`
42 }
43
44 type ListOptions struct {
45         Select             []string               `json:"select"`
46         Filters            []Filter               `json:"filters"`
47         Where              map[string]interface{} `json:"where"`
48         Limit              int                    `json:"limit"`
49         Offset             int                    `json:"offset"`
50         Order              []string               `json:"order"`
51         Distinct           bool                   `json:"distinct"`
52         Count              string                 `json:"count"`
53         IncludeTrash       bool                   `json:"include_trash"`
54         IncludeOldVersions bool                   `json:"include_old_versions"`
55 }
56
57 type CreateOptions struct {
58         ClusterID        string                 `json:"cluster_id"`
59         EnsureUniqueName bool                   `json:"ensure_unique_name"`
60         Select           []string               `json:"select"`
61         Attrs            map[string]interface{} `json:"attrs"`
62 }
63
64 type UpdateOptions struct {
65         UUID  string                 `json:"uuid"`
66         Attrs map[string]interface{} `json:"attrs"`
67 }
68
69 type DeleteOptions struct {
70         UUID string `json:"uuid"`
71 }