ebf44a82221045c163e78233af650fe43285d048
[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         EndpointSpecimenCreate                = APIEndpoint{"POST", "arvados/v1/specimens", "specimen"}
23         EndpointSpecimenUpdate                = APIEndpoint{"PATCH", "arvados/v1/specimens/:uuid", "specimen"}
24         EndpointSpecimenGet                   = APIEndpoint{"GET", "arvados/v1/specimens/:uuid", ""}
25         EndpointSpecimenList                  = APIEndpoint{"GET", "arvados/v1/specimens", ""}
26         EndpointSpecimenDelete                = APIEndpoint{"DELETE", "arvados/v1/specimens/:uuid", ""}
27         EndpointContainerCreate               = APIEndpoint{"POST", "arvados/v1/containers", "container"}
28         EndpointContainerUpdate               = APIEndpoint{"PATCH", "arvados/v1/containers/:uuid", "container"}
29         EndpointContainerGet                  = APIEndpoint{"GET", "arvados/v1/containers/:uuid", ""}
30         EndpointContainerList                 = APIEndpoint{"GET", "arvados/v1/containers", ""}
31         EndpointContainerDelete               = APIEndpoint{"DELETE", "arvados/v1/containers/:uuid", ""}
32         EndpointContainerLock                 = APIEndpoint{"POST", "arvados/v1/containers/:uuid/lock", ""}
33         EndpointContainerUnlock               = APIEndpoint{"POST", "arvados/v1/containers/:uuid/unlock", ""}
34         EndpointAPIClientAuthorizationCurrent = APIEndpoint{"GET", "arvados/v1/api_client_authorizations/current", ""}
35 )
36
37 type GetOptions struct {
38         UUID   string   `json:"uuid"`
39         Select []string `json:"select"`
40 }
41
42 type ListOptions struct {
43         Select             []string               `json:"select"`
44         Filters            []Filter               `json:"filters"`
45         Where              map[string]interface{} `json:"where"`
46         Limit              int                    `json:"limit"`
47         Offset             int                    `json:"offset"`
48         Order              []string               `json:"order"`
49         Distinct           bool                   `json:"distinct"`
50         Count              string                 `json:"count"`
51         IncludeTrash       bool                   `json:"include_trash"`
52         IncludeOldVersions bool                   `json:"include_old_versions"`
53 }
54
55 type CreateOptions struct {
56         ClusterID        string                 `json:"cluster_id"`
57         EnsureUniqueName bool                   `json:"ensure_unique_name"`
58         Select           []string               `json:"select"`
59         Attrs            map[string]interface{} `json:"attrs"`
60 }
61
62 type UpdateOptions struct {
63         UUID  string                 `json:"uuid"`
64         Attrs map[string]interface{} `json:"attrs"`
65 }
66
67 type DeleteOptions struct {
68         UUID string `json:"uuid"`
69 }