# Feedback

## Get Feedback by Run ID

> Retrieve feedback for a specific run. Returns null if no feedback exists.

```json
{"openapi":"3.0.0","info":{"title":"toolregistry.ai API","version":"1.0"},"servers":[{"url":"https://api.toolregistry.ai"}],"security":[{}],"paths":{"/v1/feedback/run/{runId}":{"get":{"description":"Retrieve feedback for a specific run. Returns null if no feedback exists.","operationId":"FeedbackController_getFeedbackByRunId","parameters":[{"name":"runId","required":true,"in":"path","description":"UUID of the run to get feedback for","schema":{"type":"string"}}],"responses":{"200":{"description":"Feedback retrieved successfully or null if not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackResponseDto"}}}},"401":{"description":"Unauthorized - invalid API key"},"404":{"description":"Run not found"}},"summary":"Get Feedback by Run ID","tags":["Feedback"]}}},"components":{"schemas":{"FeedbackResponseDto":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"rating":{"type":"string","enum":["positive","negative"]},"comment":{"type":"string"},"feedbackSource":{"$ref":"#/components/schemas/FeedbackSourceDto"},"metadata":{"$ref":"#/components/schemas/FeedbackMetadataDto"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","runId","rating","createdAt","updatedAt"]},"FeedbackSourceDto":{"type":"object","properties":{"type":{"type":"string","enum":["user","evaluator","api"]},"userId":{"type":"string"},"metadata":{"$ref":"#/components/schemas/FeedbackSourceMetadataDto"}}},"FeedbackSourceMetadataDto":{"type":"object","properties":{"device":{"type":"string"},"platform":{"type":"string"},"version":{"type":"string"},"sessionId":{"type":"string"},"userAgent":{"type":"string"}}},"FeedbackMetadataDto":{"type":"object","properties":{"version":{"type":"string"},"sessionId":{"type":"string"},"experimentId":{"type":"string"},"environment":{"type":"string"},"clientVersion":{"type":"string"}}}}}}
```

## Upsert Feedback

> Create or update feedback for a specific run

```json
{"openapi":"3.0.0","info":{"title":"toolregistry.ai API","version":"1.0"},"servers":[{"url":"https://api.toolregistry.ai"}],"security":[{}],"paths":{"/v1/feedback/run/{runId}":{"put":{"description":"Create or update feedback for a specific run","operationId":"FeedbackController_upsertFeedback","parameters":[{"name":"runId","required":true,"in":"path","description":"UUID of the run to provide feedback for","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertFeedbackDto"}}}},"responses":{"200":{"description":"Feedback successfully created or updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackResponseDto"}}}},"400":{"description":"Invalid request body or parameters"},"401":{"description":"Unauthorized - invalid API key"},"404":{"description":"Run not found"}},"summary":"Upsert Feedback","tags":["Feedback"]}}},"components":{"schemas":{"UpsertFeedbackDto":{"type":"object","properties":{"rating":{"type":"string","enum":["positive","negative"],"description":"Required when creating new feedback"},"comment":{"type":"string"},"source":{"$ref":"#/components/schemas/FeedbackSourceDto"},"metadata":{"$ref":"#/components/schemas/FeedbackMetadataDto"}}},"FeedbackSourceDto":{"type":"object","properties":{"type":{"type":"string","enum":["user","evaluator","api"]},"userId":{"type":"string"},"metadata":{"$ref":"#/components/schemas/FeedbackSourceMetadataDto"}}},"FeedbackSourceMetadataDto":{"type":"object","properties":{"device":{"type":"string"},"platform":{"type":"string"},"version":{"type":"string"},"sessionId":{"type":"string"},"userAgent":{"type":"string"}}},"FeedbackMetadataDto":{"type":"object","properties":{"version":{"type":"string"},"sessionId":{"type":"string"},"experimentId":{"type":"string"},"environment":{"type":"string"},"clientVersion":{"type":"string"}}},"FeedbackResponseDto":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"rating":{"type":"string","enum":["positive","negative"]},"comment":{"type":"string"},"feedbackSource":{"$ref":"#/components/schemas/FeedbackSourceDto"},"metadata":{"$ref":"#/components/schemas/FeedbackMetadataDto"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","runId","rating","createdAt","updatedAt"]}}}}
```

## Get Feedback by ID

> Retrieve feedback by its ID

```json
{"openapi":"3.0.0","info":{"title":"toolregistry.ai API","version":"1.0"},"servers":[{"url":"https://api.toolregistry.ai"}],"security":[{}],"paths":{"/v1/feedback/{feedbackId}":{"get":{"description":"Retrieve feedback by its ID","operationId":"FeedbackController_getFeedback","parameters":[{"name":"feedbackId","required":true,"in":"path","description":"UUID of the feedback to retrieve","schema":{"type":"string"}}],"responses":{"200":{"description":"Feedback retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackResponseDto"}}}},"401":{"description":"Unauthorized - invalid API key"},"404":{"description":"Feedback not found"}},"summary":"Get Feedback by ID","tags":["Feedback"]}}},"components":{"schemas":{"FeedbackResponseDto":{"type":"object","properties":{"id":{"type":"string"},"runId":{"type":"string"},"rating":{"type":"string","enum":["positive","negative"]},"comment":{"type":"string"},"feedbackSource":{"$ref":"#/components/schemas/FeedbackSourceDto"},"metadata":{"$ref":"#/components/schemas/FeedbackMetadataDto"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","runId","rating","createdAt","updatedAt"]},"FeedbackSourceDto":{"type":"object","properties":{"type":{"type":"string","enum":["user","evaluator","api"]},"userId":{"type":"string"},"metadata":{"$ref":"#/components/schemas/FeedbackSourceMetadataDto"}}},"FeedbackSourceMetadataDto":{"type":"object","properties":{"device":{"type":"string"},"platform":{"type":"string"},"version":{"type":"string"},"sessionId":{"type":"string"},"userAgent":{"type":"string"}}},"FeedbackMetadataDto":{"type":"object","properties":{"version":{"type":"string"},"sessionId":{"type":"string"},"experimentId":{"type":"string"},"environment":{"type":"string"},"clientVersion":{"type":"string"}}}}}}
```
