mirror of
https://github.com/pocket-id/pocket-id.git
synced 2026-02-04 11:36:46 +00:00
97 lines
2.5 KiB
Go
97 lines
2.5 KiB
Go
package dto
|
|
|
|
import (
|
|
"time"
|
|
|
|
datatype "github.com/pocket-id/pocket-id/backend/internal/model/types"
|
|
)
|
|
|
|
type ScimServiceProviderDTO struct {
|
|
ID string `json:"id"`
|
|
Endpoint string `json:"endpoint"`
|
|
Token string `json:"token"`
|
|
LastSyncedAt *datatype.DateTime `json:"lastSyncedAt"`
|
|
OidcClient OidcClientMetaDataDto `json:"oidcClient"`
|
|
CreatedAt datatype.DateTime `json:"createdAt"`
|
|
}
|
|
|
|
type ScimServiceProviderCreateDTO struct {
|
|
Endpoint string `json:"endpoint" binding:"required,url"`
|
|
Token string `json:"token"`
|
|
OidcClientID string `json:"oidcClientId" binding:"required"`
|
|
}
|
|
|
|
type ScimUser struct {
|
|
ScimResourceData
|
|
UserName string `json:"userName"`
|
|
Name *ScimName `json:"name,omitempty"`
|
|
Display string `json:"displayName,omitempty"`
|
|
Active bool `json:"active"`
|
|
Emails []ScimEmail `json:"emails,omitempty"`
|
|
}
|
|
|
|
type ScimName struct {
|
|
GivenName string `json:"givenName,omitempty"`
|
|
FamilyName string `json:"familyName,omitempty"`
|
|
}
|
|
|
|
type ScimEmail struct {
|
|
Value string `json:"value"`
|
|
Primary bool `json:"primary,omitempty"`
|
|
}
|
|
|
|
type ScimGroup struct {
|
|
ScimResourceData
|
|
Display string `json:"displayName"`
|
|
Members []ScimGroupMember `json:"members,omitempty"`
|
|
}
|
|
|
|
type ScimGroupMember struct {
|
|
Value string `json:"value"`
|
|
}
|
|
|
|
type ScimListResponse[T any] struct {
|
|
Resources []T `json:"Resources"`
|
|
TotalResults int `json:"totalResults"`
|
|
StartIndex int `json:"startIndex"`
|
|
ItemsPerPage int `json:"itemsPerPage"`
|
|
}
|
|
|
|
type ScimResourceData struct {
|
|
ID string `json:"id,omitempty"`
|
|
ExternalID string `json:"externalId,omitempty"`
|
|
Schemas []string `json:"schemas"`
|
|
Meta ScimResourceMeta `json:"meta,omitempty"`
|
|
}
|
|
|
|
type ScimResourceMeta struct {
|
|
Location string `json:"location,omitempty"`
|
|
ResourceType string `json:"resourceType,omitempty"`
|
|
Created time.Time `json:"created,omitempty"`
|
|
LastModified time.Time `json:"lastModified,omitempty"`
|
|
Version string `json:"version,omitempty"`
|
|
}
|
|
|
|
func (r ScimResourceData) GetID() string {
|
|
return r.ID
|
|
}
|
|
|
|
func (r ScimResourceData) GetExternalID() string {
|
|
return r.ExternalID
|
|
}
|
|
|
|
func (r ScimResourceData) GetSchemas() []string {
|
|
return r.Schemas
|
|
}
|
|
|
|
func (r ScimResourceData) GetMeta() ScimResourceMeta {
|
|
return r.Meta
|
|
}
|
|
|
|
type ScimResource interface {
|
|
GetID() string
|
|
GetExternalID() string
|
|
GetSchemas() []string
|
|
GetMeta() ScimResourceMeta
|
|
}
|