package api import ( "net/http" "browser.local/platform/dto" ) // remoteAdapters godoc // @Summary List or request scoped remote adapters // @Description Lists declared safe adapters or queues an owner-authorized fenced adapter job. // @Tags remote-adapters // @Accept json // @Produce json // @Success 200 {object} dto.RemoteAdapterDeclarationListResponse // @Success 202 {object} dto.RemoteAdapterResponse // @Failure 400 {object} dto.ErrorResponse // @Failure 401 {object} dto.ErrorResponse // @Failure 403 {object} dto.ErrorResponse // @Router /api/v1/server-instances/{id}/remote-adapters [get] // @Router /api/v1/server-instances/{id}/remote-adapters [post] func (h *coreHandlers) remoteAdapters(w http.ResponseWriter, r *http.Request) { serverInstanceID := r.PathValue("id") switch r.Method { case http.MethodGet: declarations, err := h.core.ListRemoteAdapterDeclarationsForSession(bearerToken(r), serverInstanceID) if err != nil { writeServiceError(w, err) return } writeJSON(w, http.StatusOK, dto.RemoteAdapterDeclarationsFromDomain(declarations)) case http.MethodPost: request, err := decodeJSON[dto.RemoteAdapterRequestBody](r) if err != nil { writeDecodeError(w, err) return } result, err := h.core.RequestRemoteAdapterForSession(bearerToken(r), request.ToDomain(serverInstanceID)) if err != nil { writeServiceError(w, err) return } writeJSON(w, http.StatusAccepted, dto.RemoteAdapterFromDomain(result)) default: writeMethodNotAllowed(w, "GET, POST") } }