{"openapi":"3.1.0","info":{"title":"TrustMetrics API","version":"1.0.0","description":"Read TrustMetrics data for one organization. The API reads TrustMetrics' database. It does not call Google and it does not post replies. API keys belong to the organization, not to a person. Location managers do not get their own keys, and a key is not limited to one manager's locations. Read endpoints require Scale or Franchise. POST /events stays on Growth for webhook and Zapier keys. GET /reviews, GET /replies, and GET /ratings return 404 while machine-to-machine Google content is off. Each key allows 600 requests a minute. Each organization allows 50000 requests a day. Review text is limited to rows still inside the 30-day storage window."},"servers":[{"url":"https://app.trustmetrics.io/api/v1"}],"tags":[{"name":"Read"},{"name":"Write"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Organization API key. The secret starts with tm_ak_live_ and is shown once."}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},"request_id":{"type":"string"}},"required":["error","request_id"],"additionalProperties":false},"Location":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"external_ref":{"type":["string","null"]},"timezone":{"type":"string"}},"required":["id","name","external_ref","timezone"],"additionalProperties":false},"LocationsResponse":{"type":"object","properties":{"locations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"external_ref":{"type":["string","null"]},"timezone":{"type":"string"}},"required":["id","name","external_ref","timezone"],"additionalProperties":false}},"request_id":{"type":"string"}},"required":["locations","request_id"],"additionalProperties":false},"Review":{"type":"object","properties":{"id":{"type":"string"},"location_id":{"type":"string"},"rating":{"type":"number"},"comment":{"type":["string","null"]},"comment_truncated":{"type":"boolean"},"reviewer_display_name":{"type":["string","null"]},"reviewed_at":{"type":["string","null"]},"has_reply":{"type":"boolean"},"reply":{"type":["string","null"]},"reply_updated_at":{"type":["string","null"]}},"required":["id","location_id","rating","comment","comment_truncated","reviewer_display_name","reviewed_at","has_reply","reply","reply_updated_at"],"additionalProperties":false},"ReviewsResponse":{"type":"object","properties":{"reviews":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"location_id":{"type":"string"},"rating":{"type":"number"},"comment":{"type":["string","null"]},"comment_truncated":{"type":"boolean"},"reviewer_display_name":{"type":["string","null"]},"reviewed_at":{"type":["string","null"]},"has_reply":{"type":"boolean"},"reply":{"type":["string","null"]},"reply_updated_at":{"type":["string","null"]}},"required":["id","location_id","rating","comment","comment_truncated","reviewer_display_name","reviewed_at","has_reply","reply","reply_updated_at"],"additionalProperties":false}},"next_cursor":{"type":["string","null"]},"truncated":{"type":"boolean"},"request_id":{"type":"string"}},"required":["reviews","next_cursor","truncated","request_id"],"additionalProperties":false},"Reply":{"type":"object","properties":{"review_id":{"type":"string"},"location_id":{"type":"string"},"reply":{"type":["string","null"]},"replied_at":{"type":["string","null"]},"actor":{"type":"string","enum":["manual","ai_autopost","unknown"]}},"required":["review_id","location_id","reply","replied_at","actor"],"additionalProperties":false},"RepliesResponse":{"type":"object","properties":{"replies":{"type":"array","items":{"type":"object","properties":{"review_id":{"type":"string"},"location_id":{"type":"string"},"reply":{"type":["string","null"]},"replied_at":{"type":["string","null"]},"actor":{"type":"string","enum":["manual","ai_autopost","unknown"]}},"required":["review_id","location_id","reply","replied_at","actor"],"additionalProperties":false}},"next_cursor":{"type":["string","null"]},"request_id":{"type":"string"}},"required":["replies","next_cursor","request_id"],"additionalProperties":false},"RatingsResponse":{"type":"object","properties":{"wording":{"type":"string","const":"on Google"},"note":{"type":"string"},"locations":{"type":"array","items":{"type":"object","properties":{"location_id":{"type":"string"},"name":{"type":"string"},"average_rating":{"type":["number","null"]},"total_review_count":{"type":["number","null"]},"as_of":{"type":["string","null"]},"caption":{"type":"string"}},"required":["location_id","name","average_rating","total_review_count","as_of","caption"],"additionalProperties":false}},"request_id":{"type":"string"}},"required":["wording","note","locations","request_id"],"additionalProperties":false},"StatsResponse":{"type":"object","properties":{"period":{"type":"string"},"as_of":{"type":"string"},"source":{"type":"string"},"new_reviews":{"type":"number"},"response_rate":{"type":"string"},"median_response_time":{"type":"string"},"median_response_note":{"type":"string"},"requests_sent":{"type":"number"},"link_clicks":{"type":"number"},"followups_sent":{"type":"number"},"replies_posted":{"type":"number"},"locations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"new_reviews":{"type":"number"},"response_rate":{"type":"string"},"requests_sent":{"type":"number"},"link_clicks":{"type":"number"}},"required":["id","name","new_reviews","response_rate","requests_sent","link_clicks"],"additionalProperties":false}},"note":{"type":"string"},"request_id":{"type":"string"}},"required":["period","as_of","source","new_reviews","response_rate","median_response_time","median_response_note","requests_sent","link_clicks","followups_sent","replies_posted","locations","note","request_id"],"additionalProperties":false},"RequestStatsResponse":{"type":"object","properties":{"period":{"type":"string"},"source":{"type":"string"},"requests_sent":{"type":"number"},"link_clicks":{"type":"number"},"followups_sent":{"type":"number"},"by_status":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"}},"note":{"type":"string"},"request_id":{"type":"string"}},"required":["period","source","requests_sent","link_clicks","followups_sent","by_status","note","request_id"],"additionalProperties":false},"ReviewRequest":{"type":"object","properties":{"id":{"type":"string"},"location_id":{"type":"string"},"contact_id":{"type":["string","null"]},"status":{"type":"string"},"source":{"type":["string","null"]},"event_type":{"type":["string","null"]},"channel":{"type":["string","null"]},"occurred_at":{"type":["string","null"]},"send_at":{"type":["string","null"]},"followup_at":{"type":["string","null"]},"clicked_at":{"type":["string","null"]},"created_at":{"type":"string"},"external_id":{"type":["string","null"]}},"required":["id","location_id","contact_id","status","source","event_type","channel","occurred_at","send_at","followup_at","clicked_at","created_at","external_id"],"additionalProperties":false},"ReviewRequestsResponse":{"type":"object","properties":{"review_requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"location_id":{"type":"string"},"contact_id":{"type":["string","null"]},"status":{"type":"string"},"source":{"type":["string","null"]},"event_type":{"type":["string","null"]},"channel":{"type":["string","null"]},"occurred_at":{"type":["string","null"]},"send_at":{"type":["string","null"]},"followup_at":{"type":["string","null"]},"clicked_at":{"type":["string","null"]},"created_at":{"type":"string"},"external_id":{"type":["string","null"]}},"required":["id","location_id","contact_id","status","source","event_type","channel","occurred_at","send_at","followup_at","clicked_at","created_at","external_id"],"additionalProperties":false}},"next_cursor":{"type":["string","null"]},"truncated":{"type":"boolean"},"request_id":{"type":"string"}},"required":["review_requests","next_cursor","truncated","request_id"],"additionalProperties":false},"LeaderboardResponse":{"type":"object","properties":{"period_days":{"anyOf":[{"type":"number","const":30},{"type":"number","const":90}]},"metric":{"type":"string"},"region":{"type":["string","null"]},"as_of":{"type":"string"},"truncated":{"type":"boolean"},"note":{"type":"string"},"locations":{"type":"array","items":{"type":"object","properties":{"rank":{"type":"number"},"location_id":{"type":"string"},"name":{"type":"string"},"region":{"type":["string","null"]},"trend":{"type":"string","enum":["positive","danger","neutral","none"]},"new_reviews":{"type":"number"},"average_rating_of_new_reviews":{"type":["number","null"]},"response_rate":{"type":["number","null"]},"median_response_time_ms":{"type":["number","null"]},"requests_sent":{"type":"number"},"link_clicks":{"type":"number"},"click_rate":{"type":["number","null"]},"google_rating":{"type":["number","null"]},"google_rating_as_of":{"type":["string","null"]},"google_rating_caption":{"type":"string"}},"required":["rank","location_id","name","region","trend","new_reviews","average_rating_of_new_reviews","response_rate","median_response_time_ms","requests_sent","link_clicks","click_rate"],"additionalProperties":false}},"request_id":{"type":"string"}},"required":["period_days","metric","region","as_of","truncated","note","locations","request_id"],"additionalProperties":false}}},"paths":{"/locations":{"get":{"operationId":"listLocations","summary":"List locations","description":"events:write on Growth and above, or any read scope on Scale and above. The list is every location in the organization.","responses":{"200":{"description":"Locations for this organization.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationsResponse"}}}},"304":{"description":"If-None-Match matched the ETag. The body is empty."},"401":{"description":"Missing, unknown, or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key's scope or the organization's plan does not allow this call.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The read API is off, the location is not in this organization, or Google content is not enabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A query parameter is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the organization is over its rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The rate limiter or the database could not be reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearerAuth":[]}],"tags":["Read"]}},"/reviews":{"get":{"operationId":"listReviews","summary":"List stored reviews","description":"Requires read:reviews. Returns 404 while Google content is off. Rows outside the 30-day storage window are omitted. Cursor pages are stable if a newer review arrives.","parameters":[{"name":"location_id","in":"query","required":false,"description":"Limit the page to one location in this organization.","schema":{"type":"string","format":"uuid"}},{"name":"since","in":"query","required":false,"description":"Inclusive ISO-8601 start.","schema":{"type":"string","format":"date-time"}},{"name":"until","in":"query","required":false,"description":"Exclusive ISO-8601 end.","schema":{"type":"string","format":"date-time"}},{"name":"rating","in":"query","required":false,"description":"Exact star rating from 1 to 5.","schema":{"type":"integer","minimum":1,"maximum":5}},{"name":"min_rating","in":"query","required":false,"description":"Minimum star rating from 1 to 5.","schema":{"type":"integer","minimum":1,"maximum":5}},{"name":"max_rating","in":"query","required":false,"description":"Maximum star rating from 1 to 5.","schema":{"type":"integer","minimum":1,"maximum":5}},{"name":"replied","in":"query","required":false,"description":"true or false. has_reply is accepted as the same filter.","schema":{"type":"string","enum":["true","false"]}},{"name":"limit","in":"query","required":false,"description":"Page size. Default 20. Maximum 100.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor from next_cursor. Omit on the first page.","schema":{"type":"string"}}],"responses":{"200":{"description":"One page of stored reviews.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewsResponse"}}}},"304":{"description":"If-None-Match matched the ETag. The body is empty."},"401":{"description":"Missing, unknown, or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key's scope or the organization's plan does not allow this call.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The read API is off, the location is not in this organization, or Google content is not enabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A query parameter is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the organization is over its rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The rate limiter or the database could not be reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearerAuth":[]}],"tags":["Read"]}},"/replies":{"get":{"operationId":"listReplies","summary":"List stored replies","description":"Requires read:reviews. Reply text only, with manual or AI when that is known. Returns 404 while Google content is off. Does not include the review text.","parameters":[{"name":"location_id","in":"query","required":false,"description":"Limit the page to one location in this organization.","schema":{"type":"string","format":"uuid"}},{"name":"since","in":"query","required":false,"description":"Inclusive ISO-8601 start.","schema":{"type":"string","format":"date-time"}},{"name":"until","in":"query","required":false,"description":"Exclusive ISO-8601 end.","schema":{"type":"string","format":"date-time"}},{"name":"rating","in":"query","required":false,"description":"Exact star rating from 1 to 5.","schema":{"type":"integer","minimum":1,"maximum":5}},{"name":"min_rating","in":"query","required":false,"description":"Minimum star rating from 1 to 5.","schema":{"type":"integer","minimum":1,"maximum":5}},{"name":"max_rating","in":"query","required":false,"description":"Maximum star rating from 1 to 5.","schema":{"type":"integer","minimum":1,"maximum":5}},{"name":"replied","in":"query","required":false,"description":"true or false. has_reply is accepted as the same filter.","schema":{"type":"string","enum":["true","false"]}},{"name":"limit","in":"query","required":false,"description":"Page size. Default 20. Maximum 100.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor from next_cursor. Omit on the first page.","schema":{"type":"string"}}],"responses":{"200":{"description":"One page of stored replies.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepliesResponse"}}}},"304":{"description":"If-None-Match matched the ETag. The body is empty."},"401":{"description":"Missing, unknown, or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key's scope or the organization's plan does not allow this call.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The read API is off, the location is not in this organization, or Google content is not enabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A query parameter is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the organization is over its rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The rate limiter or the database could not be reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearerAuth":[]}],"tags":["Read"]}},"/ratings":{"get":{"operationId":"getRatings","summary":"Google rating totals stored at sync","description":"Requires read:reviews. Google's own average and count, worded on Google, with an as-of time. Returns 404 while Google content is off. This is not an average of stored review rows, and it does not call Google.","parameters":[{"name":"location_id","in":"query","required":false,"description":"One location, or omit for every location.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Stored Google totals.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatingsResponse"}}}},"304":{"description":"If-None-Match matched the ETag. The body is empty."},"401":{"description":"Missing, unknown, or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key's scope or the organization's plan does not allow this call.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The read API is off, the location is not in this organization, or Google content is not enabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A query parameter is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the organization is over its rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The rate limiter or the database could not be reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearerAuth":[]}],"tags":["Read"]}},"/stats":{"get":{"operationId":"getStats","summary":"Report stats","description":"Requires read:stats. Uses the same calculations as the in-app report, on reviews stored in TrustMetrics. The numbers are not saved. Google was not called.","parameters":[{"name":"location_id","in":"query","required":false,"description":"One location, or omit for the organization.","schema":{"type":"string","format":"uuid"}},{"name":"period","in":"query","required":false,"description":"last_month, since_joining, or YYYY-MM. Defaults to last_month.","schema":{"type":"string"}}],"responses":{"200":{"description":"Live stats for the period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsResponse"}}}},"304":{"description":"If-None-Match matched the ETag. The body is empty."},"401":{"description":"Missing, unknown, or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key's scope or the organization's plan does not allow this call.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The read API is off, the location is not in this organization, or Google content is not enabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A query parameter is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the organization is over its rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The rate limiter or the database could not be reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearerAuth":[]}],"tags":["Read"]}},"/review-requests":{"get":{"operationId":"listReviewRequests","summary":"List review requests","description":"Requires read:requests. First-party request records. The redirect token, email, and phone are not included.","parameters":[{"name":"location_id","in":"query","required":false,"description":"One location, or omit for every location.","schema":{"type":"string","format":"uuid"}},{"name":"since","in":"query","required":false,"description":"Inclusive ISO-8601 start on created_at.","schema":{"type":"string","format":"date-time"}},{"name":"until","in":"query","required":false,"description":"Exclusive ISO-8601 end on created_at.","schema":{"type":"string","format":"date-time"}},{"name":"status","in":"query","required":false,"description":"A review request status.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size. Default 20. Maximum 100.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor from next_cursor. Omit on the first page.","schema":{"type":"string"}}],"responses":{"200":{"description":"One page of review requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewRequestsResponse"}}}},"304":{"description":"If-None-Match matched the ETag. The body is empty."},"401":{"description":"Missing, unknown, or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key's scope or the organization's plan does not allow this call.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The read API is off, the location is not in this organization, or Google content is not enabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A query parameter is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the organization is over its rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The rate limiter or the database could not be reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearerAuth":[]}],"tags":["Read"]}},"/review-requests/stats":{"get":{"operationId":"getReviewRequestStats","summary":"Review request counts","description":"Requires read:requests. Requests sent, link clicks, and follow-ups. These are TrustMetrics records, not a count of reviews caused by those requests.","parameters":[{"name":"location_id","in":"query","required":false,"description":"One location, or omit for the organization.","schema":{"type":"string","format":"uuid"}},{"name":"period","in":"query","required":false,"description":"last_month, since_joining, or YYYY-MM. Defaults to last_month.","schema":{"type":"string"}}],"responses":{"200":{"description":"Request counts for the period.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestStatsResponse"}}}},"304":{"description":"If-None-Match matched the ETag. The body is empty."},"401":{"description":"Missing, unknown, or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key's scope or the organization's plan does not allow this call.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The read API is off, the location is not in this organization, or Google content is not enabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A query parameter is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the organization is over its rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The rate limiter or the database could not be reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearerAuth":[]}],"tags":["Read"]}},"/leaderboard":{"get":{"operationId":"getLeaderboard","summary":"Location leaderboard","description":"Requires read:stats and the Scale or Franchise leaderboard. Ranked on one metric at a time. There is no combined score. Google rating totals are omitted while Google content is off.","parameters":[{"name":"period","in":"query","required":false,"description":"30 or 90 days. Defaults to 30.","schema":{"type":"string","enum":["30","90"]}},{"name":"metric","in":"query","required":false,"description":"rating, velocity, reply_rate, response_time, or conversion.","schema":{"type":"string"}},{"name":"region","in":"query","required":false,"description":"Optional region label.","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"Column to sort. Defaults to the metric.","schema":{"type":"string"}},{"name":"dir","in":"query","required":false,"description":"asc or desc.","schema":{"type":"string","enum":["asc","desc"]}}],"responses":{"200":{"description":"Locations ranked on one metric.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardResponse"}}}},"304":{"description":"If-None-Match matched the ETag. The body is empty."},"401":{"description":"Missing, unknown, or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"The key's scope or the organization's plan does not allow this call.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The read API is off, the location is not in this organization, or Google content is not enabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A query parameter is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"The key or the organization is over its rate limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"The rate limiter or the database could not be reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"bearerAuth":[]}],"tags":["Read"]}},"/events":{"post":{"operationId":"createEvent","summary":"Schedule a review request","description":"Requires events:write and Growth or above. See /developers for the body.","tags":["Write"],"security":[{"bearerAuth":[]}],"responses":{"202":{"description":"Accepted."},"401":{"description":"Invalid key or signature.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Missing scope or plan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Duplicate external id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Invalid body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}