@Deprecated use /organizations/{organization}/paginated-members [get] @Summary List organization members @ID list-organization-members @Security CoderSessionToken @Produce json @Tags Members @Param organization path string true "Organization ID" @Success 200 {object} []codersdk.OrganizationMemberWit
(rw http.ResponseWriter, r *http.Request)
| 214 | // @Success 200 {object} []codersdk.OrganizationMemberWithUserData |
| 215 | // @Router /api/v2/organizations/{organization}/members [get] |
| 216 | func (api *API) listMembers(rw http.ResponseWriter, r *http.Request) { |
| 217 | var ( |
| 218 | ctx = r.Context() |
| 219 | organization = httpmw.OrganizationParam(r) |
| 220 | ) |
| 221 | |
| 222 | params, errors := searchquery.Members(r.URL.Query().Get("q"), organization.ID) |
| 223 | if len(errors) > 0 { |
| 224 | httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{ |
| 225 | Message: "Invalid organization member search query.", |
| 226 | Validations: errors, |
| 227 | }) |
| 228 | return |
| 229 | } |
| 230 | |
| 231 | members, err := api.Database.OrganizationMembers(ctx, params) |
| 232 | if httpapi.Is404Error(err) { |
| 233 | httpapi.ResourceNotFound(rw) |
| 234 | return |
| 235 | } |
| 236 | if err != nil { |
| 237 | httpapi.InternalServerError(rw, err) |
| 238 | return |
| 239 | } |
| 240 | |
| 241 | userIDs := make([]uuid.UUID, 0, len(members)) |
| 242 | for _, member := range members { |
| 243 | userIDs = append(userIDs, member.OrganizationMember.UserID) |
| 244 | } |
| 245 | var aiSeatSet map[uuid.UUID]struct{} |
| 246 | if api.Entitlements.Enabled(codersdk.FeatureAIGovernanceUserLimit) { |
| 247 | //nolint:gocritic // AI seat state is a system-level read gated by entitlement. |
| 248 | aiSeatSet, err = getAISeatSetByUserIDs(dbauthz.AsSystemRestricted(ctx), api.Database, userIDs) |
| 249 | if err != nil { |
| 250 | httpapi.InternalServerError(rw, err) |
| 251 | return |
| 252 | } |
| 253 | } |
| 254 | |
| 255 | resp, err := convertOrganizationMembersWithUserData(ctx, api.Database, members, aiSeatSet) |
| 256 | if err != nil { |
| 257 | httpapi.InternalServerError(rw, err) |
| 258 | return |
| 259 | } |
| 260 | |
| 261 | httpapi.Write(ctx, rw, http.StatusOK, resp) |
| 262 | } |
| 263 | |
| 264 | // @Summary Paginated organization members |
| 265 | // @ID paginated-organization-members |
nothing calls this directly
no test coverage detected