github.com/clerkinc/clerk-sdk-go@v1.49.1/clerk/sessions.go (about) 1 package clerk 2 3 import "fmt" 4 5 type SessionsService service 6 7 type Session struct { 8 Object string `json:"object"` 9 ID string `json:"id"` 10 ClientID string `json:"client_id"` 11 UserID string `json:"user_id"` 12 Status string `json:"status"` 13 LastActiveAt int64 `json:"last_active_at"` 14 LastActiveOrganizationID string `json:"last_active_organization_id,omitempty"` 15 ExpireAt int64 `json:"expire_at"` 16 AbandonAt int64 `json:"abandon_at"` 17 CreatedAt int64 `json:"created_at"` 18 UpdatedAt int64 `json:"updated_at"` 19 } 20 21 type SessionToken struct { 22 Object string `json:"object"` 23 JWT string `json:"jwt"` 24 } 25 26 type ListAllSessionsParams struct { 27 Limit *int 28 Offset *int 29 ClientID *string 30 UserID *string 31 Status *SessionStatus 32 } 33 34 type SessionStatus string 35 36 const ( 37 SessionStatusAbandoned SessionStatus = "abandoned" 38 SessionStatusActive SessionStatus = "active" 39 SessionStatusEnded SessionStatus = "ended" 40 SessionStatusExpired SessionStatus = "expired" 41 SessionStatusRemoved SessionStatus = "removed" 42 SessionStatusReplaced SessionStatus = "replaced" 43 SessionStatusRevoked SessionStatus = "revoked" 44 ) 45 46 func (s *SessionsService) ListAll() ([]Session, error) { 47 sessionsUrl := "sessions" 48 req, _ := s.client.NewRequest("GET", sessionsUrl) 49 50 var sessions []Session 51 _, err := s.client.Do(req, &sessions) 52 if err != nil { 53 return nil, err 54 } 55 return sessions, nil 56 } 57 58 func (s *SessionsService) ListAllWithFiltering(params ListAllSessionsParams) ([]Session, error) { 59 sessionsUrl := "sessions" 60 req, _ := s.client.NewRequest("GET", sessionsUrl) 61 62 paginationParams := PaginationParams{Limit: params.Limit, Offset: params.Offset} 63 query := req.URL.Query() 64 addPaginationParams(query, paginationParams) 65 66 if params.ClientID != nil { 67 query.Add("client_id", *params.ClientID) 68 } 69 if params.UserID != nil { 70 query.Add("user_id", *params.UserID) 71 } 72 if params.Status != nil { 73 status := string(*params.Status) 74 query.Add("status", status) 75 } 76 77 req.URL.RawQuery = query.Encode() 78 79 var sessions []Session 80 _, err := s.client.Do(req, &sessions) 81 if err != nil { 82 return nil, err 83 } 84 return sessions, nil 85 } 86 87 func (s *SessionsService) Read(sessionId string) (*Session, error) { 88 sessionUrl := fmt.Sprintf("%s/%s", SessionsUrl, sessionId) 89 req, _ := s.client.NewRequest("GET", sessionUrl) 90 91 var session Session 92 _, err := s.client.Do(req, &session) 93 if err != nil { 94 return nil, err 95 } 96 return &session, nil 97 } 98 99 func (s *SessionsService) Revoke(sessionId string) (*Session, error) { 100 sessionUrl := fmt.Sprintf("%s/%s/revoke", SessionsUrl, sessionId) 101 req, _ := s.client.NewRequest("POST", sessionUrl) 102 103 var session Session 104 _, err := s.client.Do(req, &session) 105 if err != nil { 106 return nil, err 107 } 108 return &session, nil 109 } 110 111 func (s *SessionsService) Verify(sessionId, token string) (*Session, error) { 112 verifyUrl := fmt.Sprintf("%s/%s/verify", SessionsUrl, sessionId) 113 var sessionResponse Session 114 115 err := doVerify(s.client, verifyUrl, token, &sessionResponse) 116 if err != nil { 117 return nil, err 118 } 119 return &sessionResponse, nil 120 } 121 122 func (s *SessionsService) CreateTokenFromTemplate(sessionID, templateSlug string) (*SessionToken, error) { 123 sessionURL := fmt.Sprintf("%s/%s/token/%s", SessionsUrl, sessionID, templateSlug) 124 req, _ := s.client.NewRequest("POST", sessionURL) 125 126 var sessionToken SessionToken 127 _, err := s.client.Do(req, &sessionToken) 128 if err != nil { 129 return nil, err 130 } 131 return &sessionToken, nil 132 }