-
Notifications
You must be signed in to change notification settings - Fork 0
/
shared.go
144 lines (123 loc) · 4.47 KB
/
shared.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package types
import (
"time"
)
// Generic Shared Fields //////////////////////////////////////////////////////////////////
// Used in all responses
type Meta struct {
ResourceType string `json:"resourceType,omitempty"`
Created time.Time `json:"created,omitempty"`
LastModified time.Time `json:"lastModified,omitempty"`
Location string `json:"location,omitempty"`
Version string `json:"version,omitempty"`
}
// Used with "ContainerPermissions and PrivilegedDataPermissions"
type PrivilegedDataRef struct {
Value string `json:"value,omitempty"`
Ref string `json:"$ref,omitempty"`
Display string `json:"display,omitempty"`
Type string `json:"type,omitempty"`
}
// Used with "ContainerPermissions and PrivilegedDataPermissions"
type GroupRef struct {
Value string `json:"value,omitempty"`
Ref string `json:"$ref,omitempty"`
Display string `json:"display,omitempty"`
}
// Used with "ContainerPermissions and PrivilegedDataPermissions"
type UserRef struct {
Value string `json:"value,omitempty"`
Ref string `json:"$ref,omitempty"`
Display string `json:"display,omitempty"`
}
// SCIM Service Provider Config //////////////////////////////////////////////////////////////////
type ScimConfig struct {
Schemas []string `json:"schemas"`
Patch Patch `json:"patch"`
Bulk Bulk `json:"bulk"`
Filter Filter `json:"filter"`
ChangePassword ChangePassword `json:"changePassword"`
Sort Sort `json:"sort"`
Etag Etag `json:"etag"`
AuthenticationSchemes []AuthenticationSchemes `json:"authenticationSchemes"`
Meta Meta `json:"meta"`
}
type Patch struct {
Supported bool `json:"supported"`
}
type Bulk struct {
Supported bool `json:"supported"`
MaxOperations int `json:"maxOperations"`
MaxPayloadSize int `json:"maxPayloadSize"`
}
type Filter struct {
Supported bool `json:"supported"`
MaxResults int `json:"maxResults"`
}
type ChangePassword struct {
Supported bool `json:"supported"`
}
type Sort struct {
Supported bool `json:"supported"`
}
type Etag struct {
Supported bool `json:"supported"`
}
type AuthenticationSchemes struct {
Type string `json:"type"`
Name string `json:"name"`
Description string `json:"description"`
}
// SCIM Resource Types ///////////////////////////////////////////
type ResourceTypes struct {
Schemas []string `json:"schemas"`
TotalResults int `json:"totalResults"`
ItemsPerPage int `json:"itemsPerPage"`
StartIndex int `json:"startIndex"`
Resources []ResourceType `json:"Resources"`
}
type ResourceType struct {
Name string `json:"name"`
Endpoint string `json:"endpoint"`
Schema string `json:"schema"`
SchemaExtensions []SchemaExtensions `json:"schemaExtensions,omitempty"`
Schemas []string `json:"schemas"`
Id string `json:"id"`
Meta Meta `json:"meta"`
}
type SchemaExtensions struct {
Schema string `json:"schema"`
Required bool `json:"required"`
}
// SCIM Schemas ///////////////////////////////////////////
type Schemas struct {
Schemas []string `json:"schemas"`
TotalResults int `json:"totalResults"`
ItemsPerPage int `json:"itemsPerPage"`
StartIndex int `json:"startIndex"`
Resources []Schema `json:"Resources"`
}
type Schema struct {
Name string `json:"name"`
Description string `json:"description,omitempty"`
Attributes []Attributes `json:"attributes,omitempty"`
Id string `json:"id"`
Meta Meta `json:"meta"`
}
type Attributes struct {
Name string `json:"name"`
Type string `json:"type"`
MultiValued bool `json:"multiValued"`
Required bool `json:"required"`
CaseExact bool `json:"caseExact,omitempty"`
SubAttributes []SubAttributes `json:"subAttributes,omitempty"`
Mutability string `json:"mutability,omitempty"`
Returned string `json:"returned,omitempty"`
}
type SubAttributes struct {
Name string `json:"name"`
Type string `json:"type"`
MultiValued bool `json:"multiValued"`
Required bool `json:"required"`
CaseExact bool `json:"caseExact"`
}