{
  "openapi": "3.1.0",
  "info": {
    "title": "Feedspace API",
    "description": "Feedspace API v3 - Feedback and testimonial management platform",
    "license": {
      "name": "MIT"
    },
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.feedspace.io/v3"
    }
  ],
  "paths": {
    "/oauth/token": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Create an access token",
        "description": "Authenticate and obtain an access or refresh token.",
        "operationId": "createAccessToken",
        "requestBody": {
          "description": "Login or refresh parameters.",
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "username": {
                    "type": "string",
                    "description": "Required, your feedspace.io account's email"
                  },
                  "password": {
                    "type": "string",
                    "description": "Required, feedspace.io account's password"
                  },
                  "grant_type": {
                    "type": "string",
                    "description": "Required, either 'password' or 'refresh_token'"
                  },
                  "client_id": {
                    "type": "string",
                    "description": "Required, will be provided by feedspace team."
                  },
                  "client_secret": {
                    "type": "string",
                    "description": "Required, will be provided by feedspace team."
                  },
                  "refresh_token": {
                    "type": "string",
                    "description": "Required if grant_type is 'refresh_token'"
                  }
                },
                "required": [
                  "grant_type",
                  "client_id",
                  "client_secret"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful authentication response.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "token_type": {
                      "type": "string"
                    },
                    "expires_in": {
                      "type": "integer"
                    },
                    "access_token": {
                      "type": "string"
                    },
                    "refresh_token": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "token_type": "Bearer",
                      "expires_in": 31536000,
                      "access_token": "<access_token>",
                      "refresh_token": "<refresh_token>"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/feeds": {
      "get": {
        "tags": [
          "Feeds"
        ],
        "summary": "Get all reviews",
        "description": "Get a paginated list of reviews across the workspace. Supports optional filters: `filter[search]`, `filter[feed-types][]`, `filter[favourite]`, `filter[review_with_comment]`, `filter[sentiments][]`, `filter[star-rating][]`, `filter[feed-forms][]`, `filter[review-labels][]`, and `filter[imported-froms][]`. All filters are optional; filters of different types are AND-combined, while values within a single filter array are OR-combined (except `filter[star-rating][]`, which matches the inclusive range between the lowest and highest values sent).",
        "operationId": "getAllReviews",
        "parameters": [
          {
            "name": "filter[search]",
            "in": "query",
            "description": "Free-text keyword search. Matches the keyword (case-insensitive substring) against the reviewer's name and the review text/comment, returning only reviews that contain it. Multi-word strings are matched literally (encode spaces as %20 or +). An unmatched keyword returns an empty result. Note: the bare `search` query parameter has no effect on this endpoint — use `filter[search]`.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter[feed-types][]",
            "in": "query",
            "description": "Restrict to specific review types. Values: `audio`, `video`, `text`, `social`. Repeat the parameter to combine multiple types (OR). Reviews are matched by the media they carry, not by their stored `feed_type`, so a returned item's `feed_type` can differ from the value you filtered on. For example, a social review that has a video attachment (such as an imported Instagram or YouTube video) is returned by `video` even though its `feed_type` is `social_feed`. In full: `video` and `audio` return native video/audio reviews plus any social review that carries a video or audio attachment; `text` returns native text reviews (`feed_type: text_feed`) plus text reviews you added manually (stored as `feed_type: social_feed`). `social` currently has no filtering effect — it returns the same unfiltered list as omitting the parameter entirely, verified against the live API. Filter client-side on `feed_type: social_feed` until this is fixed.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "audio",
                  "video",
                  "text",
                  "social"
                ]
              }
            }
          },
          {
            "name": "filter[favourite]",
            "in": "query",
            "description": "Return only favourited reviews. The value is read as a string, so only truthiness matters: `true`, `1` and `false` all return favourited reviews only, while `0` behaves as though the parameter were absent. No value returns non-favourited reviews only.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "true"
              ]
            }
          },
          {
            "name": "filter[review_with_comment]",
            "in": "query",
            "description": "Return only reviews that have a non-empty comment. The value is read as a string, so only truthiness matters: `true`, `1` and `false` all return reviews with comments only, while `0` behaves as though the parameter were absent. No value returns comment-less reviews only.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "true"
              ]
            }
          },
          {
            "name": "filter[sentiments][]",
            "in": "query",
            "description": "Filter by AI-detected sentiment. Repeat the parameter to combine multiple values (OR).",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "positive",
                  "negative",
                  "neutral"
                ]
              }
            }
          },
          {
            "name": "filter[star-rating][]",
            "in": "query",
            "description": "Filter by star rating. Send one or more values from 1 to 5; the filter matches the inclusive range between the lowest and highest values you send (for example, 2 and 4 matches 2, 3 and 4).",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 1,
                "maximum": 5
              }
            }
          },
          {
            "name": "filter[feed-forms][]",
            "in": "query",
            "description": "Filter to reviews collected via specific review forms. Pass the numeric form ID (the integer `id` from GET /forms, not `unique_form_id`).",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer"
              }
            }
          },
          {
            "name": "filter[review-labels][]",
            "in": "query",
            "description": "Filter by review label ID(s). Use the `id` field returned by `GET /review-labels` as the value.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "filter[imported-froms][]",
            "in": "query",
            "description": "Filter to reviews imported from specific source platforms. Accepts numeric platform IDs. A public listing endpoint for these IDs is on the roadmap.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer"
              }
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number (default: 1). The response is paginated with 15 items per page.",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Reviews list fetched successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaginatedResponse"
                    },
                    "show_migration_banner": {
                      "type": "boolean",
                      "description": "Whether to show migration banner"
                    },
                    "show_updated_banner": {
                      "type": "boolean"
                    },
                    "updated_banner_video": {
                      "type": "string"
                    },
                    "show_workspaces_merge_banner": {
                      "type": "boolean"
                    },
                    "unique_form_id": {
                      "type": "string"
                    },
                    "marketing_materials": {
                      "type": "integer",
                      "description": "Count of marketing materials"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": {
                        "current_page": 1,
                        "data": [
                          {
                            "id": 544,
                            "feed_type": "audio_feed",
                            "unique_feedback_id": "qrTTi2",
                            "public_url": "https://feedspace.io/af/qrTTi2",
                            "comment": null,
                            "favourite": false,
                            "feed_identifier": null,
                            "sentiment_id": 1,
                            "is_locked": 0,
                            "created_at": "2025-04-07T08:50:44.000000Z",
                            "reviewed_at": "2025-04-07T08:50:44.000000Z",
                            "feed_fields": {
                              "name": "Prajakta Managuli",
                              "profile_pic_url": null,
                              "position": "Content Writer",
                              "organization_name": "Techuplabs",
                              "consent": null
                            },
                            "review_labels": [
                              {
                                "id": "01jpz0s8ypx0x4w7z0m6n2qk3t",
                                "name": "Feature request",
                                "attributes": {
                                  "css_color_code": "#1794cc"
                                }
                              }
                            ],
                            "audio_feed": {
                              "is_audio_converted": 1,
                              "transcript": null,
                              "file_url": "https://dm219012nbq21.cloudfront.net/uploads/zhBU6t/audio-feed/feed_zhBU6t1744015722679.mp3"
                            },
                            "is_download_enabled": false
                          }
                        ],
                        "first_page_url": "https://api.feedspace.io/v3/feeds?page=1",
                        "from": 1,
                        "next_page_url": null,
                        "path": "https://api.feedspace.io/v3/feeds",
                        "per_page": 15,
                        "prev_page_url": null,
                        "to": 2
                      },
                      "show_migration_banner": false,
                      "show_updated_banner": false,
                      "updated_banner_video": "https://feedspace-test.s3.ap-south-1.amazonaws.com/uploads/F43kUl/video-feed/feed_MJcmzA81710841191347.mp4",
                      "show_workspaces_merge_banner": false,
                      "unique_form_id": "form_gSgElcsXX8LaI6RtMA6JqlkN",
                      "marketing_materials": 0
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/review-labels": {
      "get": {
        "tags": [
          "ReviewLabels"
        ],
        "summary": "Get all review labels",
        "description": "Get all review labels defined in the workspace. Use the `id` returned by this endpoint as the value for `filter[review-labels][]` on GET /feeds.",
        "operationId": "getAllReviewLabels",
        "parameters": [
          {
            "name": "include[]",
            "in": "query",
            "description": "Optional related data to include on each label. Currently supported value: `reviews_count` (number of reviews tagged with this label). An unrecognised value is ignored rather than rejected, and the field is simply absent from the response.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "reviews_count"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Review labels fetched successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Label ID. Pass this to filter[review-labels][] on GET /feeds."
                          },
                          "name": {
                            "type": "string",
                            "description": "Display name of the label."
                          },
                          "attributes": {
                            "type": "object",
                            "properties": {
                              "css_color_code": {
                                "type": "string",
                                "description": "Hex colour code used to render the label in the UI. Always set: labels created without one are given a default colour."
                              }
                            }
                          },
                          "reviews_count": {
                            "type": "integer",
                            "description": "Number of reviews tagged with this label. Only present when include[]=reviews_count was passed."
                          },
                          "description": {
                            "type": "string",
                            "nullable": true,
                            "description": "Optional description of the label. Null if not set."
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": [
                        {
                          "id": "01krk3zwze14apa6gmx045ky8a",
                          "name": "liked",
                          "description": null,
                          "attributes": {
                            "css_color_code": "#EA580C"
                          },
                          "reviews_count": 1
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/feeds/audio/{id}": {
      "get": {
        "tags": [
          "AudioFeeds"
        ],
        "summary": "Get an audio review",
        "description": "Get details of a specific audio review by its ID.",
        "operationId": "getAudioReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The review's numeric ID, as returned in the `id` field of `GET /feeds`. This is **not** the `unique_feedback_id` field — that value is not accepted here.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 544
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Audio review details fetched successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AudioFeedResponse"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": {
                        "id": 544,
                        "unique_feedback_id": "qrTTi2",
                        "language_id": null,
                        "public_url": "https://www.feedspace.io/af/qrTTi2",
                        "comment": null,
                        "review_text": null,
                        "review_title": null,
                        "reviewed_at": null,
                        "rating": null,
                        "type": "Uploaded",
                        "favourite": false,
                        "sentiment_id": null,
                        "transcript": null,
                        "transcript_generated": false,
                        "is_audio_converted": 1,
                        "created_at": "2025-04-07T08:50:44.000000Z",
                        "feed_fields": {
                          "name": "Prajakta Managuli",
                          "profile_pic_url": null,
                          "position": "Content Writer",
                          "organization_name": "Techuplabs",
                          "consent": null
                        },
                        "feed_form": {
                          "name": "New Review Form",
                          "unique_form_id": "form_gSgElcsXX8LaI6RtMA6JqlkN",
                          "public_url": "https://www.feedspace.io/u/4en9smV"
                        },
                        "question_answers": [
                          {
                            "feed_form_question_id": 30081,
                            "question_type": 1,
                            "question_text": "name",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "Prajakta Managuli",
                            "placeholder": "Name"
                          },
                          {
                            "feed_form_question_id": 30082,
                            "question_type": 1,
                            "question_text": "email",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Email"
                          },
                          {
                            "feed_form_question_id": 30084,
                            "question_type": 1,
                            "question_text": "position",
                            "default_value": "",
                            "question_label": "Job Role",
                            "mandatory": 0,
                            "answer": "Content Writer",
                            "placeholder": "Job Role"
                          },
                          {
                            "feed_form_question_id": 30085,
                            "question_type": 1,
                            "question_text": "organization_name",
                            "default_value": "",
                            "question_label": "Company Name",
                            "mandatory": 0,
                            "answer": "Techuplabs",
                            "placeholder": "Company Name"
                          },
                          {
                            "feed_form_question_id": 30086,
                            "question_type": 1,
                            "question_text": "contact_number",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "9876543210",
                            "placeholder": "Contact Number"
                          },
                          {
                            "feed_form_question_id": 30083,
                            "question_type": 4,
                            "question_text": "consent",
                            "default_value": "",
                            "question_label": "I hereby grant permission to share this review with others.",
                            "mandatory": 0,
                            "answer": "1",
                            "placeholder": "Consent"
                          }
                        ],
                        "file_url": "https://dm219012nbq21.cloudfront.net/uploads/zhBU6t/audio-feed/feed_zhBU6t1744015722679.mp3",
                        "is_download_enabled": false,
                        "meta_properties": null,
                        "trim_status": null,
                        "reviewer_social_urls": [],
                        "duplicated_from_id": null
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "tags": [
          "AudioFeeds"
        ],
        "summary": "Delete an audio review",
        "description": "Delete a specific audio review from the list.",
        "operationId": "deleteAudioReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The review's numeric ID, as returned in the `id` field of `GET /feeds`. This is **not** the `unique_feedback_id` field — that value is not accepted here.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 544
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Audio review deleted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "message": "Review deleted successfully"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "AudioFeeds"
        ],
        "summary": "Update an audio review",
        "description": "Edit a specific audio review.",
        "operationId": "updateAudioReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The review's numeric ID, as returned in the `id` field of `GET /feeds`. This is **not** the `unique_feedback_id` field — that value is not accepted here.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 544
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Request body for updating an audio review. Only `_method` is required; all other fields are optional.",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "_method": {
                    "type": "string",
                    "enum": [
                      "PUT"
                    ],
                    "description": "Must be PUT"
                  },
                  "favourite": {
                    "type": "integer",
                    "enum": [
                      0,
                      1
                    ],
                    "description": "Set to 1 to add to favourites, 0 to remove."
                  },
                  "review_text": {
                    "type": "string",
                    "description": "Review text"
                  },
                  "rating": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 5,
                    "description": "Rating value (1-5)"
                  },
                  "review_title": {
                    "type": "string",
                    "description": "Review title (max 255 characters)"
                  },
                  "reviewed_at": {
                    "type": "string",
                    "format": "date",
                    "description": "Date when the review was submitted (YYYY-MM-DD)"
                  },
                  "sentiment_id": {
                    "type": "integer",
                    "enum": [
                      1,
                      2,
                      3
                    ],
                    "description": "Sentiment of the review: 1 = positive, 2 = neutral, 3 = negative. Any other value is rejected."
                  },
                  "audio": {
                    "type": "string",
                    "format": "binary",
                    "description": "Replacement audio file (max 100MB). Only allowed for a review that already has audio."
                  },
                  "transcript": {
                    "type": "string",
                    "description": "Transcript text"
                  },
                  "question_answers[0][feed_form_question_id]": {
                    "type": "string",
                    "description": "Review form question ID. Either the numeric `id` of a stored question (from `questions[].id` on `GET /forms/{unique_form_id}`, or `question_answers[].feed_form_question_id` on this review), or one of the built-in keys: organization_name, position, photo, name, email, contact_number, company_logo, company_url."
                  },
                  "question_answers[0][answer]": {
                    "type": "string",
                    "description": "Answer text for the question"
                  },
                  "question_answers[0][answer_file]": {
                    "type": "string",
                    "format": "binary",
                    "description": "Image file upload as answer (if applicable)"
                  },
                  "question_answers[1][feed_form_question_id]": {
                    "type": "string",
                    "description": "Review form question ID"
                  },
                  "question_answers[1][answer]": {
                    "type": "string",
                    "description": "Answer text for the question"
                  },
                  "question_answers[1][answer_file]": {
                    "type": "string",
                    "format": "binary",
                    "description": "Image file upload as answer (if applicable)"
                  },
                  "reviewer_social_urls[twitter]": {
                    "type": "string",
                    "description": "Twitter profile URL"
                  },
                  "reviewer_social_urls[linkedin]": {
                    "type": "string",
                    "description": "LinkedIn profile URL"
                  },
                  "reviewer_social_urls[facebook]": {
                    "type": "string",
                    "description": "Facebook profile URL"
                  },
                  "reviewer_social_urls[instagram]": {
                    "type": "string",
                    "description": "Instagram profile URL"
                  }
                },
                "required": [
                  "_method"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Audio review updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "$ref": "#/components/schemas/AudioFeedResponse"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "message": "Review updated successfully",
                      "data": {
                        "id": 543,
                        "unique_feedback_id": "aLYF10",
                        "language_id": null,
                        "public_url": "https://www.feedspace.io/af/aLYF10",
                        "comment": null,
                        "review_text": "Hello, guys. I'm Hamel Kalia, full-time freelancer. Uh, so I, in my journey, I started, uh, full-time freelancing since a 2 year. So at that time, I'm looking for the tool or software where I can ask my client for their genuine video feedback and test text testimonial. So I found, I like, I checked too many, so many, uh, similar tools, but, uh, They haven't fulfilled my actual requirement and a couple of uh tools are actually fulfill my requirement, but it's too expensive in terms of finance point of view. So after 7 or 8 months later, one of my friends suggest me. Uh, feed space tool. So I explore the entire feed space tool and it's actually, uh, fulfill all my requirements and like in terms of the video feed, uh, feedbacks, in terms of the text feed feedback. So I use feed space tools in 6 to 7 months and actually it's a very unique tool and it's a Uh, fulfill all my requirements. Uh, so it's very useful and, and also useful in my corporate life. So when I ask my client, like if, if I want to ask my client for feedback, so I can just share that link so they can just, uh, record a video and give me the appropriate feedback. So I highly recommended all the freelancer or individual developer to use feedspace tools, uh, in their corporate life. Yeah, thank you.",
                        "review_title": null,
                        "reviewed_at": null,
                        "rating": null,
                        "type": "Uploaded",
                        "favourite": true,
                        "sentiment_id": null,
                        "transcript": "Hello, guys. I'm Hamel Kalia, full-time freelancer. Uh, so I, in my journey, I started, uh, full-time freelancing since a 2 year. So at that time, I'm looking for the tool or software where I can ask my client for their genuine video feedback and test text testimonial. So I found, I like, I checked too many, so many, uh, similar tools, but, uh, They haven't fulfilled my actual requirement and a couple of uh tools are actually fulfill my requirement, but it's too expensive in terms of finance point of view. So after 7 or 8 months later, one of my friends suggest me. Uh, feed space tool. So I explore the entire feed space tool and it's actually, uh, fulfill all my requirements and like in terms of the video feed, uh, feedbacks, in terms of the text feed feedback. So I use feed space tools in 6 to 7 months and actually it's a very unique tool and it's a Uh, fulfill all my requirements. Uh, so it's very useful and, and also useful in my corporate life. So when I ask my client, like if, if I want to ask my client for feedback, so I can just share that link so they can just, uh, record a video and give me the appropriate feedback. So I highly recommended all the freelancer or individual developer to use feedspace tools, uh, in their corporate life. Yeah, thank you.",
                        "transcript_generated": true,
                        "is_audio_converted": 1,
                        "created_at": "2025-04-07T08:46:52.000000Z",
                        "feed_fields": {
                          "name": "Amanda",
                          "profile_pic_url": "https://static.feedspace.io/uploads/zhBU6t/allinone-feed-user-photo/1751872933-FoLLHjV.png",
                          "position": "",
                          "organization_name": null,
                          "consent": null
                        },
                        "feed_form": {
                          "name": "New Review Form",
                          "unique_form_id": "form_gSgElcsXX8LaI6RtMA6JqlkN",
                          "public_url": "https://www.feedspace.io/u/4en9smV"
                        },
                        "question_answers": [
                          {
                            "feed_form_question_id": 32330,
                            "question_type": 5,
                            "question_text": "photo",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "https://static.feedspace.io/uploads/zhBU6t/allinone-feed-user-photo/1751872933-FoLLHjV.png",
                            "placeholder": "Photo"
                          },
                          {
                            "feed_form_question_id": 30081,
                            "question_type": 1,
                            "question_text": "name",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "Amanda",
                            "placeholder": "Name"
                          },
                          {
                            "feed_form_question_id": 30082,
                            "question_type": 1,
                            "question_text": "email",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Email"
                          },
                          {
                            "feed_form_question_id": 30084,
                            "question_type": 1,
                            "question_text": "position",
                            "default_value": "",
                            "question_label": "Job Role",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Job Role"
                          },
                          {
                            "feed_form_question_id": 30085,
                            "question_type": 1,
                            "question_text": "organization_name",
                            "default_value": "",
                            "question_label": "Company Name",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Company Name"
                          },
                          {
                            "feed_form_question_id": 30086,
                            "question_type": 1,
                            "question_text": "contact_number",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Contact Number"
                          },
                          {
                            "feed_form_question_id": 30083,
                            "question_type": 4,
                            "question_text": "consent",
                            "default_value": "",
                            "question_label": "I hereby grant permission to share this review with others.",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Consent"
                          }
                        ],
                        "file_url": "https://static.feedspace.io/uploads/zhBU6t/audio-feed/feed_zhBU6t1744015360038.mp3",
                        "is_download_enabled": false,
                        "meta_properties": null,
                        "trim_status": null,
                        "reviewer_social_urls": [],
                        "duplicated_from_id": null
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/feeds/video/{id}": {
      "get": {
        "tags": [
          "VideoFeeds"
        ],
        "summary": "Get a video review",
        "description": "Get details of a single Video Review.",
        "operationId": "getVideoReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The review's numeric ID, as returned in the `id` field of `GET /feeds`. This is **not** the `unique_feedback_id` field — that value is not accepted here.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 3295
            }
          }
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Video review details fetched successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/VideoFeedResponse"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": {
                        "id": 3295,
                        "unique_feedback_id": "GtITNG",
                        "language_id": null,
                        "public_url": "https://www.feedspace.io/vf/GtITNG",
                        "comment": null,
                        "review_text": null,
                        "review_title": null,
                        "reviewed_at": null,
                        "rating": null,
                        "type": "Uploaded",
                        "favourite": false,
                        "sentiment_id": null,
                        "transcript": "Hi, I'm Prajakha. I'm a content writer, and I've been using feedspace to collect feedback and testimonials from my clients. The feedback is helping me get better at my work and provide better value to my clients. Whereas the testimonials, I've been sharing those on social media. I'm adding them in my portfolio, and I am putting them on my blog also along with case studies. So this is helping me get a lot of inbound leads and also instill. I trust in my potential clients. So, yeah, it's been really helpful so far.",
                        "transcript_generated": true,
                        "static_thumb_url": "https://static.feedspace.io/uploads/zhBU6t/thumbs/feed_zhBU6t17440151726652-thumb.jpg",
                        "is_video_converted": 1,
                        "created_at": "2025-04-07T08:40:15.000000Z",
                        "feed_fields": {
                          "name": "Anonymous",
                          "profile_pic_url": null,
                          "position": "Content Writer",
                          "organization_name": null,
                          "consent": null
                        },
                        "feed_form": {
                          "name": "New Review Form",
                          "unique_form_id": "form_gSgElcsXX8LaI6RtMA6JqlkN",
                          "public_url": "https://www.feedspace.io/u/4en9smV"
                        },
                        "question_answers": [
                          {
                            "feed_form_question_id": 30081,
                            "question_type": 1,
                            "question_text": "name",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Name"
                          },
                          {
                            "feed_form_question_id": 30082,
                            "question_type": 1,
                            "question_text": "email",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Email"
                          },
                          {
                            "feed_form_question_id": 30084,
                            "question_type": 1,
                            "question_text": "position",
                            "default_value": "",
                            "question_label": "Job Role",
                            "mandatory": 0,
                            "answer": "Content Writer",
                            "placeholder": "Job Role"
                          },
                          {
                            "feed_form_question_id": 30085,
                            "question_type": 1,
                            "question_text": "organization_name",
                            "default_value": "",
                            "question_label": "Company Name",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Company Name"
                          },
                          {
                            "feed_form_question_id": 30086,
                            "question_type": 1,
                            "question_text": "contact_number",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Contact Number"
                          },
                          {
                            "feed_form_question_id": 30083,
                            "question_type": 4,
                            "question_text": "consent",
                            "default_value": "",
                            "question_label": "I hereby grant permission to share this review with others.",
                            "mandatory": 0,
                            "answer": "1",
                            "placeholder": "Consent"
                          }
                        ],
                        "file_url": "https://static.feedspace.io/uploads/zhBU6t/video-feed/feed_zhBU6t17440151726652.mp4",
                        "is_download_enabled": false,
                        "is_pro_editor_enabled": true,
                        "meta_properties": null,
                        "trim_status": null,
                        "reviewer_social_urls": [],
                        "duplicated_from_id": null
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "VideoFeeds"
        ],
        "summary": "Delete a video review",
        "description": "Delete a specific video review from the list.",
        "operationId": "deleteVideoReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The review's numeric ID, as returned in the `id` field of `GET /feeds`. This is **not** the `unique_feedback_id` field — that value is not accepted here.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 3295
            }
          }
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Video review deleted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "message": "Review deleted successfully"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "VideoFeeds"
        ],
        "summary": "Update a video review",
        "description": "Edit a specific video review.",
        "operationId": "updateVideoReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The review's numeric ID, as returned in the `id` field of `GET /feeds`. This is **not** the `unique_feedback_id` field — that value is not accepted here.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 3295
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Request body for updating a video review. Only `_method` is required; all other fields are optional.",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "_method": {
                    "type": "string",
                    "enum": [
                      "PUT"
                    ],
                    "description": "Must be PUT"
                  },
                  "favourite": {
                    "type": "integer",
                    "enum": [
                      0,
                      1
                    ],
                    "description": "Set to 1 to add to favourites, 0 to remove."
                  },
                  "review_text": {
                    "type": "string",
                    "description": "Review text"
                  },
                  "rating": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 5,
                    "description": "Rating value (1-5)"
                  },
                  "review_title": {
                    "type": "string",
                    "description": "Review title (max 255 characters)"
                  },
                  "reviewed_at": {
                    "type": "string",
                    "format": "date",
                    "description": "Date when the review was submitted (YYYY-MM-DD)"
                  },
                  "sentiment_id": {
                    "type": "integer",
                    "enum": [
                      1,
                      2,
                      3
                    ],
                    "description": "Sentiment of the review: 1 = positive, 2 = neutral, 3 = negative. Any other value is rejected."
                  },
                  "video": {
                    "type": "string",
                    "format": "binary",
                    "description": "Replacement video file (max 100MB). Only allowed for a review that already has a video."
                  },
                  "transcript": {
                    "type": "string",
                    "description": "Transcript text"
                  },
                  "question_answers[0][feed_form_question_id]": {
                    "type": "string",
                    "description": "Review form question ID. Either the numeric `id` of a stored question (from `questions[].id` on `GET /forms/{unique_form_id}`, or `question_answers[].feed_form_question_id` on this review), or one of the built-in keys: organization_name, position, photo, name, email, contact_number, company_logo, company_url."
                  },
                  "question_answers[0][answer]": {
                    "type": "string",
                    "description": "Answer text for the question"
                  },
                  "question_answers[0][answer_file]": {
                    "type": "string",
                    "format": "binary",
                    "description": "Image file upload as answer (if applicable)"
                  },
                  "question_answers[1][feed_form_question_id]": {
                    "type": "string",
                    "description": "Review form question ID"
                  },
                  "question_answers[1][answer]": {
                    "type": "string",
                    "description": "Answer text for the question"
                  },
                  "question_answers[1][answer_file]": {
                    "type": "string",
                    "format": "binary",
                    "description": "Image file upload as answer (if applicable)"
                  },
                  "reviewer_social_urls[twitter]": {
                    "type": "string",
                    "description": "Twitter profile URL"
                  },
                  "reviewer_social_urls[linkedin]": {
                    "type": "string",
                    "description": "LinkedIn profile URL"
                  },
                  "reviewer_social_urls[facebook]": {
                    "type": "string",
                    "description": "Facebook profile URL"
                  },
                  "reviewer_social_urls[instagram]": {
                    "type": "string",
                    "description": "Instagram profile URL"
                  },
                  "static_thumb": {
                    "type": "string",
                    "format": "binary",
                    "description": "Static thumbnail image file"
                  },
                  "static_thumb_extension": {
                    "type": "string",
                    "enum": [
                      "jpeg",
                      "jpg",
                      "png",
                      "gif",
                      "webp"
                    ],
                    "description": "Image file extension"
                  }
                },
                "required": [
                  "_method"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Video review updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "$ref": "#/components/schemas/VideoFeedResponse"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "message": "Review updated successfully",
                      "data": {
                        "id": 3295,
                        "unique_feedback_id": "GtITNG",
                        "language_id": null,
                        "public_url": "https://www.feedspace.io/vf/GtITNG",
                        "comment": null,
                        "review_text": null,
                        "review_title": null,
                        "reviewed_at": null,
                        "rating": null,
                        "type": "Uploaded",
                        "favourite": true,
                        "sentiment_id": null,
                        "transcript": "Hi, I'm Prajakha. I'm a content writer, and I've been using feedspace to collect feedback and testimonials from my clients. The feedback is helping me get better at my work and provide better value to my clients. Whereas the testimonials, I've been sharing those on social media. I'm adding them in my portfolio, and I am putting them on my blog also along with case studies. So this is helping me get a lot of inbound leads and also instill. I trust in my potential clients. So, yeah, it's been really helpful so far.",
                        "transcript_generated": true,
                        "static_thumb_url": "https://static.feedspace.io/uploads/zhBU6t/thumbs/feed_zhBU6t17440151726652-thumb.jpg",
                        "is_video_converted": 1,
                        "created_at": "2025-04-07T08:40:15.000000Z",
                        "feed_fields": {
                          "name": "Amanda",
                          "profile_pic_url": "https://static.feedspace.io/uploads/zhBU6t/allinone-feed-user-photo/1751872706-dp2VTq0.png",
                          "position": "",
                          "organization_name": null,
                          "consent": null
                        },
                        "feed_form": {
                          "name": "New Review Form",
                          "unique_form_id": "form_gSgElcsXX8LaI6RtMA6JqlkN",
                          "public_url": "https://www.feedspace.io/u/4en9smV"
                        },
                        "question_answers": [
                          {
                            "feed_form_question_id": 32330,
                            "question_type": 5,
                            "question_text": "photo",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "https://static.feedspace.io/uploads/zhBU6t/allinone-feed-user-photo/1751872706-dp2VTq0.png",
                            "placeholder": "Photo"
                          },
                          {
                            "feed_form_question_id": 30081,
                            "question_type": 1,
                            "question_text": "name",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "Amanda",
                            "placeholder": "Name"
                          },
                          {
                            "feed_form_question_id": 30082,
                            "question_type": 1,
                            "question_text": "email",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Email"
                          },
                          {
                            "feed_form_question_id": 30084,
                            "question_type": 1,
                            "question_text": "position",
                            "default_value": "",
                            "question_label": "Job Role",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Job Role"
                          },
                          {
                            "feed_form_question_id": 30085,
                            "question_type": 1,
                            "question_text": "organization_name",
                            "default_value": "",
                            "question_label": "Company Name",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Company Name"
                          },
                          {
                            "feed_form_question_id": 30086,
                            "question_type": 1,
                            "question_text": "contact_number",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Contact Number"
                          },
                          {
                            "feed_form_question_id": 30083,
                            "question_type": 4,
                            "question_text": "consent",
                            "default_value": "",
                            "question_label": "I hereby grant permission to share this review with others.",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Consent"
                          }
                        ],
                        "file_url": "https://static.feedspace.io/uploads/zhBU6t/video-feed/feed_zhBU6t17440151726652.mp4",
                        "is_download_enabled": false,
                        "is_pro_editor_enabled": true,
                        "meta_properties": null,
                        "trim_status": null,
                        "reviewer_social_urls": [],
                        "duplicated_from_id": null
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/feeds/text/{id}": {
      "get": {
        "tags": [
          "TextFeeds"
        ],
        "summary": "Get a text review",
        "description": "Get details of a specific text review by its ID.",
        "operationId": "getTextReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The review's numeric ID, as returned in the `id` field of `GET /feeds`. This is **not** the `unique_feedback_id` field — that value is not accepted here.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 9793
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Text review details fetched successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/TextFeedResponse"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": {
                        "id": 9793,
                        "unique_feedback_id": "YiyoZB",
                        "language_id": null,
                        "public_url": "https://www.feedspace.io/f/YiyoZB",
                        "comment": "Nice product, keep going!",
                        "favourite": true,
                        "rating_type": "star",
                        "response": "5",
                        "review_title": "Excellent Service",
                        "sentiment_id": null,
                        "reviewed_at": "2025-04-07T06:12:05.000000Z",
                        "created_at": "2025-04-07T06:12:05.000000Z",
                        "feed_fields": {
                          "name": "Henry Ford",
                          "profile_pic_url": null,
                          "position": "Engineer",
                          "organization_name": null,
                          "consent": null
                        },
                        "feed_form": {
                          "name": "New Review Form",
                          "unique_form_id": "form_gSgElcsXX8LaI6RtMA6JqlkN",
                          "public_url": "https://www.feedspace.io/u/4en9smV"
                        },
                        "question_answers": [
                          {
                            "feed_form_question_id": 30081,
                            "question_type": 1,
                            "question_text": "name",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "Henry Ford",
                            "placeholder": "Name"
                          },
                          {
                            "feed_form_question_id": 30082,
                            "question_type": 1,
                            "question_text": "email",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Email"
                          },
                          {
                            "feed_form_question_id": 30084,
                            "question_type": 1,
                            "question_text": "position",
                            "default_value": "",
                            "question_label": "Job Role",
                            "mandatory": 0,
                            "answer": "Engineer",
                            "placeholder": "Job Role"
                          },
                          {
                            "feed_form_question_id": 30085,
                            "question_type": 1,
                            "question_text": "organization_name",
                            "default_value": "",
                            "question_label": "Company Name",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Company Name"
                          },
                          {
                            "feed_form_question_id": 30086,
                            "question_type": 1,
                            "question_text": "contact_number",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Contact Number"
                          },
                          {
                            "feed_form_question_id": 30083,
                            "question_type": 4,
                            "question_text": "consent",
                            "default_value": "",
                            "question_label": "I hereby grant permission to share this review with others.",
                            "mandatory": 0,
                            "answer": "1",
                            "placeholder": "Consent"
                          }
                        ],
                        "extra_details": null,
                        "meta_properties": null,
                        "reviewer_social_urls": [],
                        "duplicated_from_id": null,
                        "attachments": []
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "TextFeeds"
        ],
        "summary": "Update a text review",
        "description": "Edit a specific text review.",
        "operationId": "updateTextReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The review's numeric ID, as returned in the `id` field of `GET /feeds`. This is **not** the `unique_feedback_id` field — that value is not accepted here.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 9793
            }
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Request body for updating a text review. Only `_method` is required; all other fields are optional.",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "_method": {
                    "type": "string",
                    "enum": [
                      "PUT"
                    ],
                    "description": "Must be PUT"
                  },
                  "favourite": {
                    "type": "integer",
                    "enum": [
                      0,
                      1
                    ],
                    "description": "Set to 1 to add to favourites, 0 to remove."
                  },
                  "comment": {
                    "type": "string",
                    "description": "Review comment"
                  },
                  "response": {
                    "type": "integer",
                    "enum": [
                      0,
                      1,
                      2,
                      3,
                      4,
                      5
                    ],
                    "description": "Rating value (0-5)"
                  },
                  "review_title": {
                    "type": "string",
                    "description": "Review title (max 255 characters)"
                  },
                  "reviewed_at": {
                    "type": "string",
                    "format": "date",
                    "description": "Date when the review was submitted (YYYY-MM-DD)"
                  },
                  "sentiment_id": {
                    "type": "integer",
                    "enum": [
                      1,
                      2,
                      3
                    ],
                    "description": "Sentiment of the review: 1 = positive, 2 = neutral, 3 = negative. Any other value is rejected."
                  },
                  "media[]": {
                    "type": "string",
                    "format": "binary",
                    "description": "Attachment files to add to the review. Repeat the key to send multiple files."
                  },
                  "remove_media[]": {
                    "type": "string",
                    "description": "Attachment IDs to remove from the review. Send an empty array to remove every attachment."
                  },
                  "transcript": {
                    "type": "string",
                    "description": "Transcript text"
                  },
                  "question_answers[0][feed_form_question_id]": {
                    "type": "string",
                    "description": "Review form question ID. Either the numeric `id` of a stored question (from `questions[].id` on `GET /forms/{unique_form_id}`, or `question_answers[].feed_form_question_id` on this review), or one of the built-in keys: organization_name, position, photo, name, email, contact_number, company_logo, company_url."
                  },
                  "question_answers[0][answer]": {
                    "type": "string",
                    "description": "Answer text for the question"
                  },
                  "question_answers[0][answer_file]": {
                    "type": "string",
                    "format": "binary",
                    "description": "Image file upload as answer (if applicable)"
                  },
                  "question_answers[1][feed_form_question_id]": {
                    "type": "string",
                    "description": "Review form question ID"
                  },
                  "question_answers[1][answer]": {
                    "type": "string",
                    "description": "Answer text for the question"
                  },
                  "question_answers[1][answer_file]": {
                    "type": "string",
                    "format": "binary",
                    "description": "Image file upload as answer (if applicable)"
                  },
                  "reviewer_social_urls[twitter]": {
                    "type": "string",
                    "description": "Twitter profile URL"
                  },
                  "reviewer_social_urls[linkedin]": {
                    "type": "string",
                    "description": "LinkedIn profile URL"
                  },
                  "reviewer_social_urls[facebook]": {
                    "type": "string",
                    "description": "Facebook profile URL"
                  },
                  "reviewer_social_urls[instagram]": {
                    "type": "string",
                    "description": "Instagram profile URL"
                  },
                  "static_thumb[0][attachment_id]": {
                    "type": "string",
                    "description": "Attachment ID for the thumbnail update"
                  },
                  "static_thumb[0][static_thumb]": {
                    "type": "string",
                    "format": "binary",
                    "description": "Thumbnail image file"
                  },
                  "static_thumb[0][extension]": {
                    "type": "string",
                    "enum": [
                      "jpeg",
                      "jpg",
                      "png",
                      "gif",
                      "webp"
                    ],
                    "description": "Image file extension"
                  },
                  "static_thumb[1][attachment_id]": {
                    "type": "string",
                    "description": "Attachment ID for the thumbnail update"
                  },
                  "static_thumb[1][static_thumb]": {
                    "type": "string",
                    "format": "binary",
                    "description": "Thumbnail image file"
                  },
                  "static_thumb[1][extension]": {
                    "type": "string",
                    "enum": [
                      "jpeg",
                      "jpg",
                      "png",
                      "gif",
                      "webp"
                    ],
                    "description": "Image file extension"
                  }
                },
                "required": [
                  "_method"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Text review updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "$ref": "#/components/schemas/TextFeedResponse"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "message": "Review updated successfully",
                      "data": {
                        "id": 9793,
                        "unique_feedback_id": "YiyoZB",
                        "language_id": null,
                        "public_url": "https://www.feedspace.io/f/YiyoZB",
                        "comment": "Here is the edited review comment",
                        "favourite": true,
                        "rating_type": "star",
                        "response": "5",
                        "review_title": "Great Product Experience",
                        "sentiment_id": null,
                        "reviewed_at": "2025-04-07T06:12:05.000000Z",
                        "created_at": "2025-04-07T06:12:05.000000Z",
                        "feed_fields": {
                          "name": "Amanda",
                          "profile_pic_url": "https://static.feedspace.io/uploads/zhBU6t/allinone-feed-user-photo/1751871416-fLyBnT6.png",
                          "position": "",
                          "organization_name": null,
                          "consent": null
                        },
                        "feed_form": {
                          "name": "New Review Form",
                          "unique_form_id": "form_gSgElcsXX8LaI6RtMA6JqlkN",
                          "public_url": "https://www.feedspace.io/u/4en9smV"
                        },
                        "question_answers": [
                          {
                            "feed_form_question_id": 32330,
                            "question_type": 5,
                            "question_text": "photo",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "https://static.feedspace.io/uploads/zhBU6t/allinone-feed-user-photo/1751871416-fLyBnT6.png",
                            "placeholder": "Photo"
                          },
                          {
                            "feed_form_question_id": 30081,
                            "question_type": 1,
                            "question_text": "name",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "Amanda",
                            "placeholder": "Name"
                          },
                          {
                            "feed_form_question_id": 30082,
                            "question_type": 1,
                            "question_text": "email",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Email"
                          },
                          {
                            "feed_form_question_id": 30084,
                            "question_type": 1,
                            "question_text": "position",
                            "default_value": "",
                            "question_label": "Job Role",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Job Role"
                          },
                          {
                            "feed_form_question_id": 30085,
                            "question_type": 1,
                            "question_text": "organization_name",
                            "default_value": "",
                            "question_label": "Company Name",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Company Name"
                          },
                          {
                            "feed_form_question_id": 30086,
                            "question_type": 1,
                            "question_text": "contact_number",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Contact Number"
                          },
                          {
                            "feed_form_question_id": 30083,
                            "question_type": 4,
                            "question_text": "consent",
                            "default_value": "",
                            "question_label": "I hereby grant permission to share this review with others.",
                            "mandatory": 0,
                            "answer": "",
                            "placeholder": "Consent"
                          }
                        ],
                        "extra_details": null,
                        "meta_properties": null,
                        "reviewer_social_urls": [],
                        "duplicated_from_id": null,
                        "attachments": []
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "tags": [
          "TextFeeds"
        ],
        "summary": "Delete a text review",
        "description": "Delete a specific text review from the list.",
        "operationId": "deleteTextReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The review's numeric ID, as returned in the `id` field of `GET /feeds`. This is **not** the `unique_feedback_id` field — that value is not accepted here.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 9793
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Text review deleted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "message": "Review deleted successfully"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/pages": {
      "get": {
        "tags": [
          "Pages"
        ],
        "summary": "Get all pages",
        "description": "Get all pages.",
        "operationId": "getAllPages",
        "security": [
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List of pages fetched successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "show_merge_wol_banner": {
                      "type": "boolean"
                    },
                    "unique_workspace": {
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "unique_form_id": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "total_feeds_count": {
                      "type": "integer"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": {
                        "current_page": 1,
                        "data": [
                          {
                            "id": 406,
                            "unique_page_id": "page_3quM56ynXjoHeUsRPqrBe1f9",
                            "slug": "klcw97GWPX",
                            "name": "Page",
                            "preview_image": "uploads/zhBU6t/promotion/174400722399rrrPd-preview.jpg",
                            "meta": {
                              "allow_custom_domain": 0
                            },
                            "view_count": 0,
                            "public_url": "https://www.feedspace.io/w/klcw97GWPX",
                            "workspace": null,
                            "show_switch_workspace": true,
                            "preview_image_url": "https://dm219012nbq21.cloudfront.net/uploads/zhBU6t/promotion/174400722399rrrPd-preview.jpg"
                          },
                          {
                            "id": 405,
                            "unique_page_id": "page_Rf1KiPbaKNWxJMo6fm3icsxp",
                            "slug": "QN5pr8yne2",
                            "name": "My Page",
                            "preview_image": "uploads/zhBU6t/promotion/1744006043SlJXm2M-preview.jpg",
                            "meta": {
                              "allow_custom_domain": 0
                            },
                            "view_count": 0,
                            "public_url": "https://www.feedspace.io/w/QN5pr8yne2",
                            "workspace": null,
                            "show_switch_workspace": true,
                            "preview_image_url": "https://dm219012nbq21.cloudfront.net/uploads/zhBU6t/promotion/1744006043SlJXm2M-preview.jpg"
                          }
                        ],
                        "first_page_url": "https://api.feedspace.io/v3/pages?page=1",
                        "from": 1,
                        "next_page_url": null,
                        "path": "https://api.feedspace.io/v3/pages",
                        "per_page": 1000,
                        "prev_page_url": null,
                        "to": 2
                      },
                      "show_merge_wol_banner": false,
                      "unique_workspace": null,
                      "unique_form_id": "form_gSgElcsXX8LaI6RtMA6JqlkN",
                      "total_feeds_count": 6
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Pages"
        ],
        "summary": "Create a page",
        "description": "Create a new page.",
        "operationId": "createPage",
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name of the page (optional, max 256 characters). If omitted, a sequential name such as \"Wall of Love 2\" is assigned automatically.",
                    "maxLength": 256
                  },
                  "custom_attributes": {
                    "type": "object",
                    "description": "Custom attributes for the page",
                    "properties": {
                      "cta_enabled": {
                        "type": "integer",
                        "enum": [
                          0,
                          1
                        ],
                        "description": "Enable the CTA section (1 = enabled, 0 = disabled)."
                      },
                      "cta_attributes": {
                        "type": "object",
                        "properties": {
                          "heading_text": {
                            "type": "string",
                            "description": "CTA heading text (max 120 characters)"
                          },
                          "body_text": {
                            "type": "string",
                            "description": "CTA body text (max 500 characters)"
                          },
                          "button_label": {
                            "type": "string",
                            "description": "CTA button label (max 60 characters)"
                          },
                          "button_color": {
                            "type": "string",
                            "description": "CTA button color (max 20 characters)"
                          },
                          "position": {
                            "type": "string",
                            "description": "CTA position (max 50 characters)"
                          },
                          "card_background_color": {
                            "type": "string",
                            "description": "CTA card background color (max 20 characters)"
                          },
                          "card_border_color": {
                            "type": "string",
                            "description": "CTA card border color (max 20 characters)"
                          },
                          "button_url": {
                            "type": "string",
                            "description": "CTA button URL (max 2048 characters)"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Page created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "type": "object"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "message": "Page Created Successfully",
                      "data": {
                        "id": 407,
                        "unique_page_id": "page_asN7DjyRStBAGx4xANmUuNK5",
                        "slug": "J0SrBzf5yj",
                        "public_url": "https://www.feedspace.io/w/J0SrBzf5yj"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/pages/feeds": {
      "get": {
        "tags": [
          "Pages"
        ],
        "summary": "Get all reviews for pages",
        "description": "Get all reviews for pages, with filters for review types, favourite, forms, imported sources, sentiments, ratings, labels, and search.",
        "operationId": "getPageReviews",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "Page number (default: 1)",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort_order",
            "in": "query",
            "description": "Sort order for reviews. Use 'asc' for ascending or 'desc' for descending. **Only applied when `only_selected_feed=1`.** For every other request the results are always returned latest first and this parameter is ignored.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          {
            "name": "filter[feed-types][]",
            "in": "query",
            "description": "Filter by review types. Can specify multiple values. Accepted values: 'text', 'video', 'audio', 'social'. Reviews are matched by the media they carry, not by their stored `feed_type`, so a returned item's type can differ from the value you filtered on. For example, a social review that has a video attachment (such as an imported Instagram or YouTube video) is returned by `video` even though it is a `social_feed`. In full: `video` and `audio` return native video/audio reviews plus any social review that carries a video or audio attachment; `text` returns native text reviews plus text reviews you added manually (stored as `social_feed`). Platform and web link reviews that only contain text are returned by `social`, not `text`.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "text",
                  "video",
                  "audio",
                  "social"
                ]
              }
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "filter[favourite]",
            "in": "query",
            "description": "Filter for favourite reviews. Use '1' for favourite, '0' or omit for all",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "0",
                "1"
              ]
            }
          },
          {
            "name": "filter[feed-forms][]",
            "in": "query",
            "description": "Filter by review form IDs. Can specify multiple form IDs. Use the numeric `id` of the form, not its `unique_form_id`.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer"
              }
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "filter[review_with_comment]",
            "in": "query",
            "description": "Filter for reviews with comments. Use '1' to show only reviews with comments",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "0",
                "1"
              ]
            }
          },
          {
            "name": "filter[sentiments][]",
            "in": "query",
            "description": "Filter by sentiment IDs. Can specify multiple sentiment IDs",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "positive",
                  "neutral",
                  "negative"
                ]
              }
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "filter[star-rating][]",
            "in": "query",
            "description": "Filter by star rating. Send one or more values from 1 to 5; the filter matches the inclusive range between the lowest and highest values you send.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "enum": [
                  1,
                  2,
                  3,
                  4,
                  5
                ]
              }
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "filter[review-labels][]",
            "in": "query",
            "description": "Filter by review label IDs. Can specify multiple label IDs",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "style": "form",
            "explode": true
          },
          {
            "name": "filter[search]",
            "in": "query",
            "description": "Search filter for reviews. Searches across review content",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "only_selected_feed",
            "in": "query",
            "description": "Return only selected reviews. Use '1' to return only selected reviews",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "0",
                "1"
              ]
            }
          },
          {
            "name": "per_page_limit",
            "in": "query",
            "description": "Number of items per page. Defaults to 1000 when omitted.",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000
            }
          }
        ],
        "security": [
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Page reviews fetched successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaginatedResponse"
                    },
                    "unique_form_id": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": {
                        "current_page": 1,
                        "data": [
                          {
                            "feed_identifier": "feed-social-item-24132",
                            "feed_type": "social_feed",
                            "id": 24132,
                            "unique_feedback_id": "S4ZbTv",
                            "comment": "<p class=\"text-gray-800 dark:text-neutral-200\">I've looked at tools like Feedspace for a while and nothing really clicked until this one. I grabbed Tier 1 for a client and it's been great, which quickly convinced me to purchase Tier 2 for myself. The extra widgets and longer recording times make a big difference. Setup was super easy, and I even jumped on a 1:1 with Chirag (the CEO), who was genuinely helpful. Honest take: Tier 1 is a bit limiting. If you're serious about using Feedspace, Tier 2+ is where the real value is. Totally worth it. Test</p>",
                            "favourite": 0,
                            "is_locked": null,
                            "is_video_converted": null,
                            "is_audio_converted": null,
                            "social_feed_type": "social",
                            "customer_designation": null,
                            "customer_company": null,
                            "sort_reviews_at": "2025-12-19 13:17:10",
                            "feed_fields": {
                              "name": "DarkHorse",
                              "profile_pic_url": "https://feedspace-staging.s3.us-east-2.amazonaws.com/uploads/gx8N4Q/appsumo-reviews/appsumo-review-author-profile-YuzS-1766414944.jpeg",
                              "position": "",
                              "organization_name": "",
                              "consent": null
                            },
                            "social_feed": {
                              "rating_type": 1,
                              "rating": 5,
                              "review_at": "Dec 19, 2025",
                              "review_title": null,
                              "extra_details": {
                                "embed_video_url": null
                              },
                              "social_platform": {
                                "icon_full_url": "https://feedspace-staging.s3.us-east-2.amazonaws.com/assets/img/social-icons/v2/appsumo.png",
                                "review_url": "https://appsumo.com/products/feedspace/reviews/feedspace-gave-me-some-headspace-370375/",
                                "review_type": 6,
                                "slug": "appsumo"
                              },
                              "attachments": []
                            },
                            "review_labels": []
                          }
                        ],
                        "first_page_url": "http://api.feedspace.io/v3/pages/feeds?page=1",
                        "from": 1,
                        "next_page_url": null,
                        "path": "http://api.feedspace.io/v3/pages/feeds",
                        "per_page": 1000,
                        "prev_page_url": null,
                        "to": 20
                      },
                      "unique_form_id": "form_f5Uc9agvcXRKgPdDrVCIZYc1"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/pages/selected-feeds": {
      "post": {
        "tags": [
          "Pages"
        ],
        "summary": "Get selected reviews for a page",
        "description": "Get review details for selected review identifiers. This endpoint accepts an array of review identifiers and returns the corresponding review details formatted for pages.",
        "operationId": "getPageSelectedReviews",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "selected_feeds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Array of review identifiers. Format: feed-text-item-{id}, feed-video-item-{id}, feed-audio-item-{id}, or feed-social-item-{id}. e.g. ['feed-text-item-9793', 'feed-video-item-123']"
                  }
                },
                "required": [
                  "selected_feeds"
                ]
              },
              "examples": {
                "request": {
                  "value": {
                    "selected_feeds": [
                      "feed-text-item-9793",
                      "feed-video-item-123",
                      "feed-audio-item-544",
                      "feed-social-item-170021"
                    ]
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Selected reviews fetched successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SelectedPageFeed"
                      }
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": [
                        {
                          "id": 24132,
                          "unique_feedback_id": "S4ZbTv",
                          "response": "354",
                          "comment": "<p class=\"text-gray-800 dark:text-neutral-200\">I've looked at tools like Feedspace for a while and nothing really clicked until this one. I grabbed Tier 1 for a client and it's been great, which quickly convinced me to purchase Tier 2 for myself. The extra widgets and longer recording times make a big difference. Setup was super easy, and I even jumped on a 1:1 with Chirag (the CEO), who was genuinely helpful. Honest take: Tier 1 is a bit limiting. If you're serious about using Feedspace, Tier 2+ is where the real value is. Totally worth it. Test</p>",
                          "sentiment_id": null,
                          "extra_details": {
                            "answer_type": null,
                            "approved": true,
                            "author_id": 922322,
                            "author_name": "DarkHorse"
                          },
                          "app_user_name": "DarkHorse",
                          "favourite": false,
                          "rating": 5,
                          "review_text": null,
                          "review_title": null,
                          "reviewed_at": "2025-12-19T00:00:00.000000Z",
                          "created_at": "2025-12-22T14:49:08.000000Z",
                          "feed_type": "social_feed",
                          "rating_type": 1,
                          "feed_form_id": null,
                          "social_feed_type": "social",
                          "customer_avatar": "uploads/gx8N4Q/appsumo-reviews/appsumo-review-author-profile-YuzS-1766414944.jpeg",
                          "review_at": "Dec 19, 2025",
                          "review_url": "https://appsumo.com/products/feedspace/reviews/feedspace-gave-me-some-headspace-370375/",
                          "customer_designation": null,
                          "customer_company": "",
                          "product_name": "",
                          "social_platform": {
                            "id": 36,
                            "name": "AppSumo",
                            "slug": "appsumo",
                            "icon_url": "/assets/img/social-icons/v2/appsumo.png",
                            "icon_full_url": "https://feedspace-staging.s3.us-east-2.amazonaws.com/assets/img/social-icons/v2/appsumo.png"
                          },
                          "workspace_name": "Primary",
                          "display_review_url": "https://appsumo.com/products/feedspace/reviews/feedspace-gave-me-some-headspace-370375/",
                          "attachments": []
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/pages/{unique_page_id}": {
      "post": {
        "tags": [
          "Pages"
        ],
        "summary": "Update a page",
        "description": "Update an existing page. Send the body as `multipart/form-data` using a `POST` request with a `_method=PUT` field.",
        "operationId": "updatePage",
        "parameters": [
          {
            "name": "unique_page_id",
            "in": "path",
            "description": "The page's unique string identifier, as returned in the `unique_page_id` field of `GET /pages`. This is **not** the numeric `id` field.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "page_asN7DjyRStBAGx4xANmUuNK5"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "_method": {
                    "type": "string",
                    "enum": [
                      "PUT"
                    ],
                    "description": "Must be PUT."
                  },
                  "show_logo": {
                    "type": "string",
                    "enum": [
                      "0",
                      "1"
                    ],
                    "description": "Show logo (0 = no, 1 = yes)"
                  },
                  "logo": {
                    "type": "string",
                    "format": "binary",
                    "description": "Logo image file (max 15MB)"
                  },
                  "is_logo_redirect_url": {
                    "type": "string",
                    "enum": [
                      "0",
                      "1"
                    ],
                    "description": "Enable logo redirect URL (0 = no, 1 = yes)"
                  },
                  "redirect_url": {
                    "type": "string",
                    "description": "Redirect URL when logo is clicked (required if is_logo_redirect_url is 1)"
                  },
                  "name": {
                    "type": "string",
                    "description": "Name of the page (required, max 256 characters)"
                  },
                  "public_slug": {
                    "type": "string",
                    "description": "Custom slug for the page's public URL. Must be a valid slug (letters, numbers and hyphens), between 3 and 100 characters."
                  },
                  "title": {
                    "type": "string",
                    "description": "Page title"
                  },
                  "subtitle": {
                    "type": "string",
                    "description": "Page subtitle"
                  },
                  "enable_cta_button": {
                    "type": "string",
                    "enum": [
                      "0",
                      "1"
                    ],
                    "description": "Enable CTA button (0 = no, 1 = yes)"
                  },
                  "button_name": {
                    "type": "string",
                    "description": "CTA button name (required if enable_cta_button is 1, max 60 characters)"
                  },
                  "button_url": {
                    "type": "string",
                    "description": "CTA button URL"
                  },
                  "feeds[]": {
                    "type": "string",
                    "description": "You can add multiple feeds[] keys. The value is the review's `feed_identifier`, in the form `feed-{type}-item-{numeric id}`.\n\nGet these values from `GET /pages/feeds` (Get All Reviews). Note that `GET /feeds` returns `feed_identifier` as `null`, so it cannot be used as the source for this field.\n e.g. \n feed-text-item-9793 \n feed-social-item-170021"
                  },
                  "allow_to_display_feed_date": {
                    "type": "string",
                    "enum": [
                      "0",
                      "1"
                    ],
                    "description": "Allow to display review date (0 = no, 1 = yes)"
                  },
                  "reorder": {
                    "type": "string",
                    "enum": [
                      "0",
                      "1"
                    ],
                    "description": "Reorder reviews based on sort preference (0 = no, 1 = yes)"
                  },
                  "custom_attributes": {
                    "type": "object",
                    "description": "Custom attributes for the page",
                    "properties": {
                      "cta_enabled": {
                        "type": "integer",
                        "enum": [
                          0,
                          1
                        ],
                        "description": "Enable the CTA section (1 = enabled, 0 = disabled)."
                      },
                      "cta_attributes": {
                        "type": "object",
                        "properties": {
                          "heading_text": {
                            "type": "string",
                            "description": "CTA heading text (max 120 characters)"
                          },
                          "body_text": {
                            "type": "string",
                            "description": "CTA body text (max 500 characters)"
                          },
                          "button_label": {
                            "type": "string",
                            "description": "CTA button label (max 60 characters)"
                          },
                          "button_color": {
                            "type": "string",
                            "description": "CTA button color (max 20 characters)"
                          },
                          "position": {
                            "type": "string",
                            "description": "CTA position (max 50 characters)"
                          },
                          "card_background_color": {
                            "type": "string",
                            "description": "CTA card background color (max 20 characters)"
                          },
                          "card_border_color": {
                            "type": "string",
                            "description": "CTA card border color (max 20 characters)"
                          },
                          "button_url": {
                            "type": "string",
                            "description": "CTA button URL (max 2048 characters)"
                          }
                        }
                      }
                    }
                  }
                },
                "required": [
                  "_method",
                  "name"
                ]
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Page updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PageResponse"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "message": "Page Updated Successfully",
                      "data": {
                        "id": 480,
                        "user_id": 282,
                        "project_id": 354,
                        "unique_page_id": "page_v0IQTtiz2BbLqZvWnT1einAE",
                        "slug": "TY5bBiTQNy",
                        "page_name": "Wall of Love 1767339300586",
                        "meta": {
                          "logo": "uploads/gx8N4Q/promotion/1767339816_FS-Tiktok_Profile_Pic.png",
                          "name": "Our Wall of Love",
                          "feeds": [
                            "feed-social-item-24139",
                            "feed-social-item-24138",
                            "feed-text-item-12536",
                            "feed-text-item-12535",
                            "feed-social-item-24132"
                          ],
                          "theme": "2",
                          "favicon": "uploads/gx8N4Q/workspace/1767084513FS-Tiktok_Profile_Pic.png",
                          "subtitle": "Test",
                          "show_logo": "1",
                          "button_url": null,
                          "custom_css": null,
                          "button_name": "Contact us",
                          "redirect_url": null,
                          "background_type": "background_color",
                          "allow_custom_css": 0,
                          "background_color": "#d4d7dc",
                          "background_image": null,
                          "enable_cta_button": "0",
                          "navigation_link_1": "0",
                          "navigation_link_2": "0",
                          "allow_custom_domain": 0,
                          "is_logo_redirect_url": "0",
                          "add_cta_to_navigation": "0",
                          "add_custom_background": "1",
                          "navigation_link_1_url": "",
                          "navigation_link_2_url": "",
                          "navigation_link_1_text": "",
                          "navigation_link_2_text": "",
                          "allow_darken_background": "0",
                          "allow_to_remove_branding": 0,
                          "review_selection_sort_by": null,
                          "allow_shorten_long_reviews": "1",
                          "allow_to_display_feed_date": "0",
                          "allow_to_display_wol_footer": 0,
                          "logo_url": "https://feedspace-staging.s3.us-east-2.amazonaws.com/uploads/gx8N4Q/promotion/1767339816_FS-Tiktok_Profile_Pic.png",
                          "background_image_url": null
                        },
                        "custom_attributes": {
                          "font": {
                            "name": "DM Sans",
                            "font_url": "https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap",
                            "provider": "google"
                          },
                          "cta_enabled": 1,
                          "border_color": "#e5e7eb",
                          "cta_attributes": {
                            "position": "random",
                            "body_text": "Join thousands of happy customers today.",
                            "button_url": "https://feedspace.io",
                            "button_color": "#1c54e3",
                            "button_label": "Get Started",
                            "heading_text": "Ready to get started?",
                            "card_border_color": "#e5e7eb",
                            "position_interval": "6",
                            "card_background_color": "#ffffff"
                          },
                          "is_show_border": "1",
                          "is_show_ratings": "1",
                          "reviews_to_load": 15,
                          "card_hover_color": "#f3f4f6",
                          "dark_mode_colors": {
                            "card_hover_color": "#404040",
                            "primary_text_color": "#FFFFFF",
                            "external_link_color": "#246DFF",
                            "secondary_text_color": "#E5E5E5",
                            "card_background_color": "#262626",
                            "page_background_color": "#171717",
                            "highlighted_text_color": "#451A03",
                            "star_rating_border_color": "#EAB308",
                            "star_rating_background_color": "#E5E7EB"
                          },
                          "enable_load_more": "0",
                          "star_rating_color": "#facc15",
                          "load_more_btn_text": "Load More",
                          "page_primary_color": "#1794cc",
                          "primary_text_color": "#d4d4d8",
                          "show_platform_icon": "1",
                          "external_link_color": "#246dff",
                          "page_backgound_color": "#d4d7dc",
                          "secondary_text_color": "#a1a1aa",
                          "card_background_color": "#1a1d21",
                          "cta_button_text_color": "#ffffff",
                          "highlighted_text_color": "#fef3c7",
                          "allow_social_redirection": "1",
                          "star_rating_border_color": "#eab308",
                          "load_more_button_bg_color": "#ffffff",
                          "load_more_button_text_color": "#4b5563",
                          "load_more_button_border_color": "#e5e7eb"
                        },
                        "automation_filters": null,
                        "wol_meta": {
                          "wol_feeds_selection_limit": "0"
                        },
                        "branding_meta": {
                          "hide_fs_branding": "1",
                          "allow_custom_domain": "1",
                          "allow_custom_css": "0"
                        },
                        "public_url": "https://feedspace.io/w/TY5bBiTQNy/testapp3",
                        "public_url_with_custom_domain": "https://feedspace.io/w/TY5bBiTQNy/testapp3",
                        "public_display_url": "feedspace.io/w/TY5bBiTQNy/testapp3",
                        "public_display_url_with_custom_domain": "feedspace.io/w/TY5bBiTQNy/testapp3",
                        "is_custom_domain": false,
                        "branding_assets": {
                          "font": {
                            "name": "DM Sans",
                            "font_url": "https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap",
                            "provider": "google"
                          },
                          "primary_text_color": "#d4d4d8",
                          "card_on_hover_color": "#272b31",
                          "primary_button_color": "#1794cc",
                          "secondary_text_color": "#a1a1aa",
                          "card_background_color": "#1a1d21",
                          "page_background_color": "#d4d7dc"
                        },
                        "widget": {
                          "id": 917,
                          "common_id": 480,
                          "unique_widget_id": "260a6058-4827-48ef-b814-5cdf40ce74c6",
                          "builder_js": "d7.min.js",
                          "preview_image_url": null,
                          "public_info_url": "https://feedspace.io/widget/260a6058-4827-48ef-b814-5cdf40ce74c6/testapp3?info=1",
                          "workspace": null
                        },
                        "user": {
                          "id": 282,
                          "unique_user_id": "gx8N4Q",
                          "appsumo_uuid": null,
                          "name": "Nikhil Radadiya Test",
                          "email": "nikhil.radadiya+test@techuplabs.com",
                          "email_verified_at": "2025-10-18T04:15:55.000000Z",
                          "invited_by": null,
                          "referred_by": null,
                          "payment_email": null,
                          "provider": null,
                          "provider_id": null,
                          "plan_id": null,
                          "beta_user": 0,
                          "is_verified_account": 1,
                          "is_blocked": 0,
                          "ip_address": "127.0.0.1",
                          "created_at": "2025-10-18T04:15:37.000000Z",
                          "updated_at": "2025-10-18T04:15:55.000000Z"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/forms": {
      "get": {
        "tags": [
          "ReviewForms"
        ],
        "summary": "Get all review forms",
        "description": "Returns a list of all review forms.",
        "operationId": "getAllReviewForms",
        "security": [
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "A list of review forms.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PaginatedResponse"
                    },
                    "can": {
                      "type": "object",
                      "description": "Capability flags for the current user.",
                      "properties": {
                        "pause": {
                          "type": "boolean",
                          "description": "Whether the user is allowed to pause forms"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": {
                        "current_page": 1,
                        "data": [
                          {
                            "id": 251,
                            "project_id": 354,
                            "unique_form_id": "form_f5Uc9agvcXRKgPdDrVCIZYc1",
                            "name": "Testimonial Collection Form",
                            "page_image": "uploads/gx8N4Q/allinone-feed-form/1766392380_cloned_1766055929FS-Shopify_App-Logo.png",
                            "page_image_url": "https://feedspace-staging.s3.us-east-2.amazonaws.com/uploads/gx8N4Q/allinone-feed-form/1766392380_cloned_1766055929FS-Shopify_App-Logo.png",
                            "public_url": "https://feedspace.io/u/E31TFy1/testapp3",
                            "public_display_url": "feedspace.io/u/E31TFy1/testapp3",
                            "updated_at": "2026-01-01 11:29:00",
                            "hits": "35",
                            "reviews": "14",
                            "conversion_rate": 40,
                            "is_paused": 0,
                            "form_kind": "legacy",
                            "updated_by": {
                              "id": 282,
                              "name": "Nikhil Radadiya"
                            }
                          }
                        ],
                        "first_page_url": "http://api.feedspace.io/v3/forms?page=1",
                        "from": 1,
                        "next_page_url": null,
                        "path": "http://api.feedspace.io/v3/forms",
                        "per_page": 1000,
                        "prev_page_url": null,
                        "to": 5
                      },
                      "can": {
                        "pause": true
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ReviewForms"
        ],
        "summary": "Create a review form",
        "description": "Creates a new review form.\n\nOnly `name` is required and validated on create. Any other field sent in the body is accepted and stored as provided, without validation. To change form settings with full validation applied, use `PUT /forms/{unique_form_id}` after creating the form.",
        "operationId": "createReviewForm",
        "security": [
          {
            "basicAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewFormInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Review form created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "integer"
                        },
                        "unique_form_id": {
                          "type": "string"
                        },
                        "slug": {
                          "type": "string"
                        },
                        "public_url": {
                          "type": "string"
                        }
                      }
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "message": "Review Form Created Successfully",
                      "data": {
                        "id": 10391,
                        "unique_form_id": "form_MbgOEoTSlvsjYg8wN7NTZ1fg",
                        "slug": "cGdkixR",
                        "public_url": "https://www.feedspace.io/u/cGdkixR"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/forms/{unique_form_id}": {
      "get": {
        "tags": [
          "ReviewForms"
        ],
        "summary": "Get a review form",
        "description": "Returns a single review form by its `unique_form_id`.",
        "operationId": "getReviewForm",
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": [
          {
            "name": "unique_form_id",
            "in": "path",
            "required": true,
            "description": "The form's unique string identifier, as returned in the `unique_form_id` field of `GET /forms`. Note this is **not** the numeric `id` field, and **not** the `feed_form_id` field found inside `questions[]` — passing either of those returns 404.",
            "schema": {
              "type": "string",
              "example": "form_f5Uc9agvcXRKgPdDrVCIZYc1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A review form.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ReviewForm"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": {
                        "id": 251,
                        "project_id": 354,
                        "unique_form_id": "form_f5Uc9agvcXRKgPdDrVCIZYc1",
                        "user_id": 282,
                        "slug": "E31TFy1",
                        "language_id": "en",
                        "name": "Testimonial Collection Form",
                        "description": null,
                        "page_title": "Share Your Feedback with Us!",
                        "page_main_message": "<p class=\"text-gray-800 dark:text-neutral-200\">We value your opinion. Please share your experience with us.</p>",
                        "messaging_description": "<p class=\"text-gray-800 dark:text-neutral-200\">Please provide your feedback along with a video or audio testimonial.</p>",
                        "page_image": "uploads/gx8N4Q/allinone-feed-form/1766392380_cloned_1766055929FS-Shopify_App-Logo.png",
                        "hide_image": 0,
                        "favicon": "uploads/gx8N4Q/workspace/1764593836workspace_favicon.png",
                        "submit_attributes": {
                          "attribution_title": "Tell Us More About Yourself",
                          "attribution_subtitle": "Help us personalize your testimonial."
                        },
                        "thankyou_attributes": {
                          "hide_fs_signup": "1",
                          "thank_you_type": "thank_you_page",
                          "thankyou_title": "Thank You for Sharing!",
                          "thankyou_message": "Your testimonial has been submitted successfully. We appreciate your valuable feedback.",
                          "thankyou_reveal_text": null,
                          "google_review_section": 0,
                          "other_review_platforms": {
                            "items": [
                              {
                                "url": "https://www.trustpilot.com/review/feedspace.io",
                                "icon": "trustpilot_other_icon.svg",
                                "platform": "trustpilot",
                                "is_enabled": true,
                                "button_text": "Trustpilot",
                                "button_style": {
                                  "color": "#FFFFFF",
                                  "border-color": "#029862",
                                  "background-color": "#029862"
                                }
                              }
                            ]
                          },
                          "thankyou_affiliate_link": "",
                          "thankyou_redirection_url": null,
                          "allow_video_and_shareable_link": "1",
                          "other_review_platforms_enabled": "1",
                          "thankyou_is_enable_affiliate_link": "0"
                        },
                        "form_attributes": {
                          "text": {
                            "or_label": "OR",
                            "modal_title": null,
                            "rating_type": "star",
                            "question_text": null,
                            "allow_review_type": "1",
                            "allow_text_review": "1",
                            "button_label_back": "Back",
                            "fields_label_name": "Name",
                            "text_button_label": "Text review",
                            "fields_label_email": "Email",
                            "fields_label_photo": "Avatar",
                            "is_required_remark": "1",
                            "remark_placeholder": "Submit Your Testimonial",
                            "submit_button_label": "Submit Your Testimonial",
                            "option_to_add_remark": 1,
                            "fields_label_position": "Role",
                            "is_mandatory_feedback": 1,
                            "fields_label_try_again": "Try again",
                            "fields_try_again_title": "Are you sure?",
                            "fields_placeholder_name": "Eg. Henry Ford",
                            "has_allow_image_uploads": "1",
                            "button_label_reload_page": "Reload Page",
                            "fields_placeholder_email": "Eg. henry@ford.com",
                            "audio_recording_box_title": "Record your audio",
                            "fields_label_button_submit": "Submit",
                            "fields_try_again_button_no": "No, cancel",
                            "fields_try_again_sub_title": "You'll lose your progress if you try again",
                            "fields_label_contact_number": "Contact Number",
                            "fields_placeholder_position": "Eg. CEO",
                            "fields_try_again_button_yes": "Yes, try again",
                            "fields_label_photo_sub_title": "Upload photo",
                            "thankyou_word_of_mouth_title": "Share review with your friends",
                            "fields_label_photo_sub_title2": "Pick a photo up to 15 MB",
                            "fields_label_organization_name": "Company Name",
                            "screen_recording_button_tooltip": "Click to start recording",
                            "thankyou_word_of_mouth_sub_title": "Copy link below and share with others or share on social media.",
                            "fields_placeholder_contact_number": "Eg. +1583...",
                            "microphone_camera_access_required": "Microphone & camera access required",
                            "recording_label_camera_live_preview": "Live preview of your camera",
                            "thankyou_word_of_mouth_link_tooltip": "Click to Copy the Link",
                            "fields_placeholder_organization_name": "Eg. Ford Motors",
                            "placeholder_capture_comment_with_media": "Write a Review",
                            "thankyou_collect_review_platform_title": "Click on the button and you'll be redirected to the platform and give your review. Your review will be copied on your clipboard you can paste the review on the platform.",
                            "browser_permission_allow_continue_title": "Please Allow the Permissions to Continue.",
                            "microphone_camera_access_required_check": "Please check your browser or device settings and allow access to microphone and camera. If you have already allowed, try reloading the page.",
                            "recording_label_microphone_live_preview": "Live preview of your microphone",
                            "thankyou_social_platform_button_text_g2": "Review us on G2",
                            "microphone_camera_access_required_detect": "We couldn't detect any microphone or camera in device, please make sure working microphone or camera is attached or use mobile phone to record your voice and video. Copy the form link and open in your mobile browser.",
                            "microphone_camera_access_required_reload": "Please reload this page and give microphone and camera access so that you can record your voice and video.",
                            "browser_permission_allow_continue_sub_title": "We're waiting for the permission. Once you give the camera & mic permission your video will be shown here",
                            "microphone_camera_access_required_not_found": "Microphone or Camera not found",
                            "microphone_camera_access_required_sub_title": "Please go to browser settings & give access to microphone and camera so that you can record your voice and video.",
                            "thankyou_social_platform_button_text_clutch": "Review us on Clutch",
                            "thankyou_social_platform_button_text_google": "Review us on Google",
                            "thankyou_social_platform_button_text_facebook": "Review us on Facebook",
                            "recording_label_camera_microphone_live_preview": "Live preview of your camera/microphone",
                            "thankyou_collect_review_platform_divider_title": "Or, review us on other platforms",
                            "thankyou_social_platform_button_text_app_store": "Review us on App Store",
                            "thankyou_social_platform_button_text_trustpilot": "Review us on Trustpilot",
                            "thankyou_social_platform_button_text_tripadvisor": "Review us on Tripadvisor",
                            "fields_collect_consent": "I hereby grant permission to amplify feedback on social media & beyond"
                          },
                          "audio": {
                            "audio_duration": "60",
                            "audio_button_label": "Record Audio Testimonial",
                            "allow_audio_recording": "1"
                          },
                          "media": {
                            "has_capture_comment": "0",
                            "has_allow_media_review": "1",
                            "has_capture_star_rating": "0"
                          },
                          "video": {
                            "video_duration": "60",
                            "video_button_label": "Record Video Testimonial",
                            "screen_button_label": "Share Your Screen",
                            "allow_video_recording": "1",
                            "allow_screen_recording": "0"
                          },
                          "branding": {
                            "branding_affiliate_link": "https://feedspace.io/?via=wqAsw",
                            "is_enable_affiliate_link": "1"
                          },
                          "allow_ratings": {
                            "allow_star_redirection": true,
                            "star_redirection_platforms": [
                              {
                                "url": "https://www.trustpilot.com/review/feedspace.io",
                                "icon": "trustpilot_other_icon.svg",
                                "platform": "trustpilot",
                                "is_enabled": true,
                                "button_text": "Trustpilot",
                                "button_style": {
                                  "color": "#FFFFFF",
                                  "border-color": "#029862",
                                  "background-color": "#029862"
                                }
                              }
                            ]
                          },
                          "instruction_page": {
                            "instruction_title": null,
                            "instruction_description": null,
                            "instruction_page_display": "do_not_show",
                            "open_recorder_button_label": "Start Recording"
                          },
                          "upload_file_option": {
                            "allow_files": [],
                            "text_file_upload_label": "Choose a file to upload",
                            "allow_upload_file_option": "0"
                          }
                        },
                        "custom_attributes": {
                          "font": {
                            "name": "DM Sans",
                            "font_url": "https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap",
                            "provider": "google"
                          },
                          "custom_css": null,
                          "shadow_size": "3",
                          "border_color": "#e5e7eb",
                          "shadow_color": "#000000",
                          "shadow_style": "blurred",
                          "is_show_border": "1",
                          "is_show_shadow": "1",
                          "reviews_widget": {
                            "builder_js": null,
                            "widget_type": null,
                            "unique_widget_id": null,
                            "show_reviews_on_form": false
                          },
                          "background_type": "background_gradient",
                          "allow_custom_css": 0,
                          "page_primary_color": "#144cd8",
                          "page_backgound_color": "#eff6ff",
                          "add_custom_background": "1",
                          "allow_darken_background": "0",
                          "custom_background_image": null,
                          "custom_background_gradient": "gradient-5",
                          "background_image_url": null
                        },
                        "media_attributes": {
                          "introduction_media": [
                            {
                              "type": "video",
                              "details": {
                                "file": "",
                                "file_name": "feed_Y3y9keV17658678014062.mp4",
                                "file_size": null,
                                "gif_thumb": null,
                                "thumbnail": "",
                                "original_url": "https://feedspace-staging.s3.us-east-2.amazonaws.com/originals-introduction/introduction-video/gx8N4Q/introduction_feed_Y3y9keV17658678014062_form_f5Uc9agvcXRKgPdDrVCIZYc1_1766462239578.mp4",
                                "original_path": "originals-introduction/introduction-video/gx8N4Q/introduction_feed_Y3y9keV17658678014062_form_f5Uc9agvcXRKgPdDrVCIZYc1_1766462239578.mp4"
                              }
                            }
                          ],
                          "thankyou_message_media": [],
                          "allow_introduction_media": "1",
                          "allow_thankyou_message_media": "0"
                        },
                        "review_label_ids": [],
                        "allow_auto_detect_language": 0,
                        "allow_to_remove_branding": 0,
                        "allow_custom_domain": 0,
                        "is_paused": 0,
                        "video_meta": {
                          "video_time_limit": "300",
                          "upload_video_outside_app": "1"
                        },
                        "audio_meta": {
                          "audio_time_limit": "60",
                          "upload_audio_outside_app": "1"
                        },
                        "branding_meta": {
                          "hide_fs_branding": "1",
                          "allow_custom_domain": "1",
                          "allow_custom_css": "0"
                        },
                        "thankyou_meta": {
                          "allow_hide_fs_signup": "1"
                        },
                        "media_meta": {
                          "allow_introduction_media": "1",
                          "allow_thankyou_message_media": "1"
                        },
                        "star_redirection_meta": {
                          "allow_star_redirection": "1"
                        },
                        "allow_star_redirection": true,
                        "star_redirection_min_rating": 4,
                        "star_redirection_platforms": [
                          {
                            "url": "https://www.trustpilot.com/review/feedspace.io",
                            "icon": "trustpilot_other_icon.svg",
                            "platform": "trustpilot",
                            "is_enabled": true,
                            "button_text": "Trustpilot",
                            "button_style": {
                              "color": "#FFFFFF",
                              "border-color": "#029862",
                              "background-color": "#029862"
                            }
                          }
                        ],
                        "public_url": "https://feedspace.io/u/E31TFy1/testapp3",
                        "public_url_with_custom_domain": "https://feedspace.io/u/E31TFy1/testapp3",
                        "public_display_url": "feedspace.io/u/E31TFy1/testapp3",
                        "public_display_url_with_custom_domain": "feedspace.io/u/E31TFy1/testapp3",
                        "is_custom_domain": false,
                        "uuid": "gx8N4Q",
                        "introduction_media_url": null,
                        "introduction_media_thumbnail_url": null,
                        "thankyou_message_media_url": null,
                        "thankyou_message_media_thumbnail_url": null,
                        "branding_assets": {
                          "font": {
                            "name": "DM Sans",
                            "font_url": "https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap",
                            "provider": "google"
                          },
                          "primary_text_color": "#d4d4d8",
                          "card_on_hover_color": "#272b31",
                          "primary_button_color": "#1794cc",
                          "secondary_text_color": "#a1a1aa",
                          "card_background_color": "#1a1d21",
                          "page_background_color": "#d4d7dc"
                        },
                        "has_language_rtl": false,
                        "page_image_url": "https://feedspace-staging.s3.us-east-2.amazonaws.com/uploads/gx8N4Q/allinone-feed-form/1766392380_cloned_1766055929FS-Shopify_App-Logo.png",
                        "favicon_url": "https://feedspace-staging.s3.us-east-2.amazonaws.com/uploads/gx8N4Q/workspace/1764593836workspace_favicon.png",
                        "questions": [
                          {
                            "id": 1333,
                            "feed_form_id": 251,
                            "question_type": 1,
                            "question_text": "name",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "enabled": 1
                          },
                          {
                            "id": 1334,
                            "feed_form_id": 251,
                            "question_type": 1,
                            "question_text": "email",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "enabled": 1
                          },
                          {
                            "id": 1335,
                            "feed_form_id": 251,
                            "question_type": 1,
                            "question_text": "position",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "enabled": 0
                          },
                          {
                            "id": 1336,
                            "feed_form_id": 251,
                            "question_type": 1,
                            "question_text": "organization_name",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "enabled": 0
                          },
                          {
                            "id": 1337,
                            "feed_form_id": 251,
                            "question_type": 1,
                            "question_text": "contact_number",
                            "default_value": "",
                            "question_label": "",
                            "mandatory": 0,
                            "enabled": 0
                          },
                          {
                            "id": 1338,
                            "feed_form_id": 251,
                            "question_type": 4,
                            "question_text": "consent",
                            "default_value": "",
                            "question_label": "I hereby grant permission to amplify feedback on social media & beyond",
                            "mandatory": 0,
                            "enabled": 1
                          },
                          {
                            "id": 1351,
                            "feed_form_id": 251,
                            "question_type": 5,
                            "question_text": "photo",
                            "default_value": "",
                            "question_label": "photo",
                            "mandatory": 0,
                            "enabled": 0
                          },
                          {
                            "id": 1352,
                            "feed_form_id": 251,
                            "question_type": 1,
                            "question_text": "company_url",
                            "default_value": "",
                            "question_label": "company_url",
                            "mandatory": 0,
                            "enabled": 0
                          },
                          {
                            "id": 1353,
                            "feed_form_id": 251,
                            "question_type": 5,
                            "question_text": "company_logo",
                            "default_value": "",
                            "question_label": "company_logo",
                            "mandatory": 0,
                            "enabled": 0
                          }
                        ],
                        "language": {
                          "id": "en",
                          "name": "English",
                          "direction": "ltr",
                          "is_active": 1,
                          "sort_order": 1,
                          "created_at": null,
                          "updated_at": null
                        },
                        "other_review_platforms_styles": {
                          "items": [
                            {
                              "platform": "google",
                              "icon": "google_other_icon.svg",
                              "button_text": "Review us on Google",
                              "button_style": {
                                "background-color": "#FFFFFF",
                                "color": "#1F2937",
                                "border-color": "#E5E7EB",
                                "border-width": "1px",
                                "border-radius": "8px",
                                "font-weight": "500",
                                "box-shadow": "0px 1px 2px -1px rgba(0, 0, 0, 0.1)"
                              }
                            },
                            {
                              "platform": "trustpilot",
                              "icon": "trustpilot_other_icon.svg",
                              "button_text": "Review us on Trustpilot",
                              "button_style": {
                                "background-color": "#029862",
                                "color": "#FFFFFF",
                                "border-color": "#029862",
                                "border-width": "1px",
                                "border-radius": "8px",
                                "font-weight": "500",
                                "box-shadow": "0px 1px 2px -1px rgba(0, 0, 0, 0.1)"
                              }
                            },
                            {
                              "platform": "facebook",
                              "icon": "facebook_other_icon.svg",
                              "button_text": "Review us on Facebook",
                              "button_style": {
                                "background-color": "#1877F2",
                                "color": "#FFFFFF",
                                "border-color": "#1877F2",
                                "border-width": "1px",
                                "border-radius": "8px",
                                "font-weight": "500",
                                "box-shadow": "0px 1px 2px -1px rgba(0, 0, 0, 0.1)"
                              }
                            }
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "ReviewForms"
        ],
        "summary": "Update a review form",
        "description": "Updates an existing review form by its `unique_form_id`.",
        "operationId": "updateReviewForm",
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": [
          {
            "name": "unique_form_id",
            "in": "path",
            "required": true,
            "description": "The form's unique string identifier, as returned in the `unique_form_id` field of `GET /forms`. Note this is **not** the numeric `id` field, and **not** the `feed_form_id` field found inside `questions[]` — passing either of those returns 404.",
            "schema": {
              "type": "string",
              "example": "form_f5Uc9agvcXRKgPdDrVCIZYc1"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReviewFormInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Review form updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "message": "Form Updated Successfully"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ReviewForms"
        ],
        "summary": "Delete a review form",
        "description": "Permanently deletes a review form by its `unique_form_id`.\n\n**Reviews already collected through this form are not deleted.** They stay in your Feedbox and remain on any Wall of Love page or widget that already includes them.\n\nThe form's public page stops resolving as soon as the form is deleted. Deleting a form cannot be undone through the API.\n\nIf the form is embedded on your site, remove the embed code separately: deleting the form does not remove it from your pages.",
        "operationId": "deleteReviewForm",
        "security": [
          {
            "basicAuth": []
          }
        ],
        "parameters": [
          {
            "name": "unique_form_id",
            "in": "path",
            "required": true,
            "description": "The form's unique string identifier, as returned in the `unique_form_id` field of `GET /forms`. Note this is **not** the numeric `id` field, and **not** the `feed_form_id` field found inside `questions[]`.",
            "schema": {
              "type": "string",
              "example": "form_f5Uc9agvcXRKgPdDrVCIZYc1"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Review form deleted successfully. Reviews collected through it are retained.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "message": "Review Form Deleted Successfully"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/imports/self-imports/text-review": {
      "post": {
        "tags": [
          "Imports"
        ],
        "summary": "Import a text review",
        "description": "Import a text review manually into the workspace. All fields are optional, but at least one of the following must be provided: `rating`, `review`, or `attachments`.",
        "operationId": "importTextReview",
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/TextReviewImportRequest"
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Text review imported successfully.\n\nThis endpoint also returns 200 when the import fails. In that case the body is `{ \"data\": { \"error\": \"Failed to store reviews.\" } }` instead of the imported review, so check for a `data.error` key rather than relying on the status code alone.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": {
                        "project_id": 5020,
                        "social_platform_id": 46,
                        "source": "Manual Text Review",
                        "extra_details": "{\"customer_name\":\"User\",\"customer_email\":\"developer@feedspace.io\",\"customer_designation\":\"Engineer\",\"customer_company\":\"Feedspace\",\"rating\":\"5\",\"review_url\":\"https:\\/\\/www.feedspace.io\\/\",\"review\":\"Excellent Digital Product. They create client testimonial videos and interview the clients from the comfort of their own homes.\",\"fs_workspace_id\":\"workspace_XFNj94dgkDhc6lc5rsjF66nr\",\"fs_original_workspace_id\":5020,\"search\":\"Manual Text Review\"}",
                        "is_feed_imported": 1,
                        "user_id": 7243,
                        "created_by": 7243,
                        "updated_at": "2025-06-11T07:31:49.000000Z",
                        "created_at": "2025-06-11T07:31:44.000000Z",
                        "id": 4066,
                        "user": {
                          "id": 7243,
                          "unique_user_id": "zhBU6t",
                          "appsumo_uuid": null,
                          "name": "User",
                          "email": "developer@feedspace.io",
                          "email_verified_at": null,
                          "referred_by": "0",
                          "payment_email": null,
                          "provider": null,
                          "provider_id": null,
                          "plan_id": null,
                          "beta_user": 0,
                          "is_verified_account": 1,
                          "is_blocked": 0,
                          "ip_address": "49.36.88.114",
                          "created_at": "2025-04-04T11:52:43.000000Z",
                          "updated_at": "2025-04-04T11:52:43.000000Z"
                        },
                        "social_platform": {
                          "id": 46,
                          "slug": "manual_text_review",
                          "name": "Manual Text Review",
                          "url": null,
                          "icon_url": "/assets/img/social-icons/v2/manual_text_review_icon.svg",
                          "review_type": 1,
                          "auto_sync_status": 0,
                          "created_at": "2025-04-22T07:49:08.000000Z",
                          "updated_at": "2025-04-22T07:49:08.000000Z",
                          "icon_full_url": "https://static.feedspace.io/assets/img/social-icons/v2/manual_text_review_icon.svg"
                        },
                        "social_feeds": [
                          {
                            "id": 176111,
                            "unique_feedback_id": "WjOvsE",
                            "user_id": 7243,
                            "project_id": 5020,
                            "social_platform_id": 46,
                            "social_feed_source_id": 4066,
                            "import_scheduler_id": null,
                            "feed_type": "manual_text",
                            "review_id": "xqr1lB",
                            "review": "Excellent Digital Product. They create client testimonial videos and interview the clients from the comfort of their own homes.",
                            "review_title": null,
                            "review_url": "https://www.feedspace.io/",
                            "review_website_logo": "uploads/zhBU6t/manual_text_review-reviews/manual_text_review-review-author-profile-L036-1749627109.jpg",
                            "rating": 5,
                            "rating_type": 1,
                            "is_rating_display": 1,
                            "customer_name": "User",
                            "customer_email": "developer@feedspace.io",
                            "customer_company": "Feedspace",
                            "customer_designation": "Engineer",
                            "customer_avatar": null,
                            "review_at": "2025-06-11 07:31:44",
                            "extra_details": "{\"customer_name\":\"User\",\"customer_email\":\"developer@feedspace.io\",\"customer_designation\":\"Engineer\",\"customer_company\":\"Feedspace\",\"rating\":\"5\",\"review_url\":\"https:\\/\\/www.feedspace.io\\/\",\"review\":\"Excellent Digital Product. They create client testimonial videos and interview the clients from the comfort of their own homes.\",\"fs_workspace_id\":\"workspace_XFNj94dgkDhc6lc5rsjF66nr\",\"fs_original_workspace_id\":5020,\"search\":\"Manual Text Review\"}",
                            "favourite": 0,
                            "sentiment_id": null,
                            "review_submitted_at": "2025-06-11 07:31:44",
                            "created_by": 7243,
                            "deleted_at": null,
                            "created_at": "2025-06-11T07:31:44.000000Z",
                            "updated_at": "2025-06-11T07:31:49.000000Z"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/imports/self-imports/video-review": {
      "post": {
        "tags": [
          "Imports"
        ],
        "summary": "Import a video review",
        "description": "Import a video review manually into the workspace. All fields are optional. If `type` is 'file', then `attachments[]` (video files) is required. If `type` is not 'file' or omitted, then `attachment_urls[]` is required.",
        "operationId": "importVideoReview",
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/VideoReviewImportRequest"
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Video review imported successfully.\n\nThis endpoint also returns 200 when the import fails. In that case the body is `{ \"data\": { \"error\": \"Failed to store reviews.\" } }` instead of the imported review, so check for a `data.error` key rather than relying on the status code alone.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": {
                        "project_id": 5020,
                        "social_platform_id": 53,
                        "source": "Manual Video Review",
                        "extra_details": "{\"customer_name\":\"User\",\"customer_email\":\"developer@feedspace.io\",\"customer_designation\":\"Engineer\",\"customer_company\":\"Feedspace\",\"rating\":\"5\",\"review_url\":\"https:\\/\\/www.feedspace.io\\/\",\"review\":\"Excellent Digital Product. They create client testimonial videos and interview the clients from the comfort of their own homes.\",\"type\":\"file\",\"fs_workspace_id\":\"workspace_XFNj94dgkDhc6lc5rsjF66nr\",\"fs_original_workspace_id\":5020,\"customer_avatar\":{},\"website_logo\":{},\"attachments\":[{}],\"search\":\"Manual Video Review\"}",
                        "is_feed_imported": 1,
                        "user_id": 7243,
                        "created_by": 7243,
                        "updated_at": "2025-06-18T12:58:29.000000Z",
                        "created_at": "2025-06-18T12:58:29.000000Z",
                        "id": 4585,
                        "user": {
                          "id": 7243,
                          "unique_user_id": "zhBU6t",
                          "appsumo_uuid": null,
                          "name": "User",
                          "email": "developer@feedspace.io",
                          "email_verified_at": null,
                          "referred_by": "0",
                          "payment_email": null,
                          "provider": null,
                          "provider_id": null,
                          "plan_id": null,
                          "beta_user": 0,
                          "is_verified_account": 1,
                          "is_blocked": 0,
                          "ip_address": "49.36.88.114",
                          "created_at": "2025-04-04T11:52:43.000000Z",
                          "updated_at": "2025-04-04T11:52:43.000000Z"
                        },
                        "social_platform": {
                          "id": 53,
                          "slug": "manual_video_review",
                          "name": "Manual Video Review",
                          "url": null,
                          "icon_url": "/assets/img/social-icons/v2/manual_video_review_icon.svg",
                          "review_type": 1,
                          "auto_sync_status": 0,
                          "created_at": "2025-05-29T08:47:05.000000Z",
                          "updated_at": "2025-05-29T08:47:05.000000Z",
                          "icon_full_url": "https://static.feedspace.io/assets/img/social-icons/v2/manual_video_review_icon.svg"
                        },
                        "social_feeds": [
                          {
                            "id": 179022,
                            "unique_feedback_id": "QDU5g4",
                            "user_id": 7243,
                            "project_id": 5020,
                            "social_platform_id": 53,
                            "social_feed_source_id": 4585,
                            "import_scheduler_id": null,
                            "feed_type": "manual_video",
                            "review_id": "FlsqMs",
                            "review": "Excellent Digital Product. They create client testimonial videos and interview the clients from the comfort of their own homes.",
                            "review_title": null,
                            "review_url": "https://www.feedspace.io/",
                            "review_website_logo": "uploads/zhBU6t/manual_video_review-reviews/manual_video_review-review-author-profile-GHgS-1750251509.jpg",
                            "rating": 5,
                            "rating_type": 1,
                            "is_rating_display": 1,
                            "customer_name": "User",
                            "customer_email": "developer@feedspace.io",
                            "customer_company": "Feedspace",
                            "customer_designation": "Engineer",
                            "customer_avatar": "uploads/zhBU6t/manual_video_review-reviews/manual_video_review-review-author-profile-CAVq-1750251509.jpg",
                            "review_at": "2025-06-18 12:58:29",
                            "extra_details": "{\"customer_name\":\"User\",\"customer_email\":\"developer@feedspace.io\",\"customer_designation\":\"Engineer\",\"customer_company\":\"Feedspace\",\"rating\":\"5\",\"review_url\":\"https:\\/\\/www.feedspace.io\\/\",\"review\":\"Excellent Digital Product. They create client testimonial videos and interview the clients from the comfort of their own homes.\",\"type\":\"file\",\"fs_workspace_id\":\"workspace_XFNj94dgkDhc6lc5rsjF66nr\",\"fs_original_workspace_id\":5020,\"customer_avatar\":{},\"website_logo\":{},\"attachments\":[{}],\"search\":\"Manual Video Review\"}",
                            "favourite": 0,
                            "sentiment_id": null,
                            "review_submitted_at": "2025-06-18 12:58:29",
                            "created_by": 7243,
                            "deleted_at": null,
                            "created_at": "2025-06-18T12:58:29.000000Z",
                            "updated_at": "2025-06-18T12:58:29.000000Z"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/imports/self-imports/audio-review": {
      "post": {
        "tags": [
          "Imports"
        ],
        "summary": "Import an audio review",
        "description": "Import an audio review manually into the workspace. All fields are optional. If `type` is 'file', then `attachments[]` (audio files) is required. If `type` is not 'file' or omitted, then `attachment_urls[]` is required.",
        "operationId": "importAudioReview",
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/AudioReviewImportRequest"
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Audio review imported successfully.\n\nThis endpoint also returns 200 when the import fails. In that case the body is `{ \"data\": { \"error\": \"Failed to store reviews.\" } }` instead of the imported review, so check for a `data.error` key rather than relying on the status code alone.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": {
                        "project_id": 5020,
                        "social_platform_id": 54,
                        "source": "Manual Audio Review",
                        "is_feed_imported": 1,
                        "user_id": 7243,
                        "created_at": "2025-06-18T12:58:29.000000Z",
                        "id": 4586,
                        "social_platform": {
                          "slug": "manual_audio_review",
                          "name": "Manual Audio Review",
                          "review_type": 1
                        },
                        "social_feeds": [
                          {
                            "id": 179023,
                            "unique_feedback_id": "QDU5g5",
                            "feed_type": "manual_audio",
                            "review": "Great product, the onboarding call was very helpful.",
                            "review_url": "https://www.feedspace.io/",
                            "rating": 5,
                            "rating_type": 1,
                            "customer_name": "User",
                            "customer_email": "developer@feedspace.io",
                            "customer_company": "Feedspace",
                            "customer_designation": "Engineer",
                            "review_at": "2025-06-18 12:58:29",
                            "created_at": "2025-06-18T12:58:29.000000Z"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/imports/self-imports/web-link": {
      "post": {
        "tags": [
          "Imports"
        ],
        "summary": "Import a review from a web link",
        "description": "Import Reviews from Web Link. Enter the web link url from where you want to import reviews into Feedspace.",
        "operationId": "importWebLinkReview",
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/WebLinkImportRequest"
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Reviews imported successfully or error details if import failed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "reviews_imported": {
                          "type": "integer",
                          "description": "Number of reviews successfully imported"
                        },
                        "error": {
                          "type": "string",
                          "description": "Error message if import failed"
                        },
                        "message": {
                          "type": "string",
                          "description": "Additional message or error details"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": {
                        "reviews_imported": 5
                      }
                    }
                  },
                  "error": {
                    "value": {
                      "data": {
                        "error": "Unable to fetch reviews from the provided URL",
                        "message": "The web link could not be accessed or does not contain valid reviews"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - import creation failed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "error": {
                          "type": "string",
                          "description": "Error message"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "creation_failed": {
                    "value": {
                      "data": {
                        "error": "Failed to store reviews."
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/imports/self-imports/image-to-text-review": {
      "post": {
        "tags": [
          "Imports"
        ],
        "summary": "Import a review from a screenshot",
        "description": "Screenshot to Review. Upload a screenshot of your review to automatically import it.",
        "operationId": "importImageToTextReview",
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ImageToTextReviewImportRequest"
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Reviews imported successfully. May include warnings if some images failed processing.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "source_id": {
                          "type": "integer",
                          "description": "Import source ID"
                        },
                        "reviews": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "integer",
                                "description": "Review ID"
                              },
                              "user_id": {
                                "type": "integer",
                                "description": "User ID"
                              },
                              "social_platform_id": {
                                "type": [
                                  "integer",
                                  "null"
                                ],
                                "description": "Social platform ID"
                              },
                              "review": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Review text extracted from image"
                              },
                              "review_title": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Review title"
                              },
                              "rating": {
                                "type": [
                                  "number",
                                  "null"
                                ],
                                "description": "Rating value. May include decimals such as 4.5."
                              },
                              "customer_name": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "description": "Customer name"
                              },
                              "review_at": {
                                "type": [
                                  "string",
                                  "null"
                                ],
                                "format": "date-time",
                                "description": "Review date"
                              }
                            }
                          },
                          "description": "Array of imported reviews"
                        }
                      }
                    },
                    "warnings": {
                      "type": "object",
                      "properties": {
                        "message": {
                          "type": "string",
                          "description": "Warning message"
                        },
                        "failed_count": {
                          "type": "integer",
                          "description": "Number of images that failed"
                        },
                        "failed_images": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "image_name": {
                                "type": "string",
                                "description": "Name of the failed image"
                              },
                              "error": {
                                "type": "string",
                                "description": "Error message"
                              }
                            }
                          },
                          "description": "Array of failed image details"
                        }
                      },
                      "description": "Warnings if some images failed (only present if errors occurred)"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": {
                        "source_id": 123,
                        "reviews": [
                          {
                            "id": 456,
                            "user_id": 789,
                            "social_platform_id": null,
                            "review": "Great product! Highly recommend it.",
                            "review_title": "Excellent Service",
                            "rating": 5,
                            "customer_name": "John Doe",
                            "review_at": "2024-01-01T00:00:00.000000Z"
                          }
                        ]
                      }
                    }
                  },
                  "partial_success": {
                    "value": {
                      "data": {
                        "source_id": 123,
                        "reviews": [
                          {
                            "id": 456,
                            "user_id": 789,
                            "social_platform_id": null,
                            "review": "Great product!",
                            "review_title": null,
                            "rating": 5,
                            "customer_name": "John Doe",
                            "review_at": null
                          }
                        ]
                      },
                      "warnings": {
                        "message": "Some images could not be processed",
                        "failed_count": 1,
                        "failed_images": [
                          {
                            "image_name": "screenshot2.jpg",
                            "error": "Unable to extract review from image"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Access denied - user does not have permission to create image-to-text reviews.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "examples": {
                  "access_denied": {
                    "value": {
                      "message": "You are not allowed to import image reviews."
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "No reviews extracted from the image(s).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "Error message"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "image_name": {
                            "type": "string",
                            "description": "Name of the image"
                          },
                          "error": {
                            "type": "string",
                            "description": "Error message"
                          }
                        }
                      },
                      "description": "Array of error details for failed images"
                    }
                  }
                },
                "examples": {
                  "no_reviews": {
                    "value": {
                      "message": "No reviews could be extracted from the uploaded images.",
                      "errors": [
                        {
                          "image_name": "screenshot.jpg",
                          "error": "Unable to extract review data from image"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Server error during processing.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "Error message"
                    }
                  }
                },
                "examples": {
                  "server_error": {
                    "value": {
                      "error": "Failed to store reviews."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/feeds/social/{id}": {
      "get": {
        "tags": [
          "SocialReviews"
        ],
        "summary": "Get a social review",
        "description": "Get details of a specific social review by its ID. Social reviews are testimonials imported from social platforms (G2, Trustpilot, Product Hunt, etc.) and manual or web-link imports that are stored as social records.",
        "operationId": "getSocialReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The review's numeric ID, as returned in the `id` field of `GET /feeds`. This is **not** the `unique_feedback_id` field — that value is not accepted here.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1201
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Social review details fetched successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SocialFeedResponse"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": {
                        "id": 1201,
                        "unique_feedback_id": "aB3xYz",
                        "language_id": null,
                        "comment": "Feedspace made collecting testimonials effortless.",
                        "favourite": false,
                        "sentiment_id": 1,
                        "created_at": "2025-06-10T09:15:00.000000Z",
                        "feed_fields": {
                          "name": "Jordan Lee",
                          "profile_pic_url": null,
                          "position": "Founder",
                          "organization_name": "Acme"
                        },
                        "rating_type": "star",
                        "rating": "5",
                        "review_at": "2025-06-10T09:15:00.000000Z",
                        "review_title": null,
                        "public_url": "https://www.feedspace.io/sf/aB3xYz",
                        "public_display_url": "https://www.feedspace.io/sf/aB3xYz",
                        "social_platform": {
                          "icon_full_url": "https://static.feedspace.io/assets/img/social-icons/v2/g2.png",
                          "review_url": "https://www.g2.com/products/example/reviews",
                          "review_type": "social",
                          "name": "G2",
                          "slug": "g2"
                        },
                        "social_feed_source": {
                          "source_url": "https://www.g2.com/products/example/reviews"
                        },
                        "meta_properties": null,
                        "meta_attributes": [],
                        "allow_video_audio_transcript": false,
                        "question_answers": [],
                        "attachments": [],
                        "is_pro_editor_enabled": false,
                        "is_download_enabled": false,
                        "reviewer_social_urls": [],
                        "duplicated_from_id": null,
                        "review_labels": [],
                        "extra_details": {
                          "embed_video_url": null
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "tags": [
          "SocialReviews"
        ],
        "summary": "Delete a social review",
        "description": "Delete a specific social review from the list. This is a soft delete.",
        "operationId": "deleteSocialReview",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The review's numeric ID, as returned in the `id` field of `GET /feeds`. This is **not** the `unique_feedback_id` field — that value is not accepted here.",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 1201
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Social review deleted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "message": "Review deleted successfully"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/contacts": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get all contacts",
        "description": "List contacts in the workspace. Contacts power Feedspace's email automation and are commonly synced from external platforms (Zapier, Pabbly, Make, n8n). Requires the workspace's plan/role to include email automation.",
        "operationId": "getAllContacts",
        "parameters": [
          {
            "name": "source",
            "in": "query",
            "description": "Filter by how the contact first entered the workspace. One of: `csv`, `public_api`, `review_submission`, `manual`, `social_import`, `stripe`.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "csv",
                "public_api",
                "review_submission",
                "manual",
                "social_import",
                "stripe"
              ]
            }
          },
          {
            "name": "tag_ids[]",
            "in": "query",
            "description": "Filter to contacts carrying any of these tag IDs. Each value must be a numeric tag `id` from `GET /contact-tags` in this workspace.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer"
              }
            }
          },
          {
            "name": "unsubscribed",
            "in": "query",
            "description": "Subscription state to include.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "subscribed",
                "unsubscribed",
                "all"
              ],
              "default": "all"
            }
          },
          {
            "name": "q",
            "in": "query",
            "description": "Free-text search across name and email (max 255 characters).",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "description": "Sort field.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "created_at",
                "email",
                "name"
              ],
              "default": "created_at"
            }
          },
          {
            "name": "sort_dir",
            "in": "query",
            "description": "Sort direction.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "desc"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number (default 1).",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "description": "Items per page (1-100, default 50).",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contacts fetched successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Contact"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "description": "Pagination metadata: current_page, last_page, per_page, total, from, to, and has_activated_automation."
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": [
                        {
                          "id": 8801,
                          "email": "jordan@example.com",
                          "name": "Jordan Lee",
                          "phone": null,
                          "primary_source": "public_api",
                          "country": null,
                          "state": null,
                          "city": null,
                          "zipcode": null,
                          "company": "Acme",
                          "date_added": "2026-05-01",
                          "date_added_label": "May 1, 2026",
                          "is_unsubscribed": false,
                          "unsubscribe_reason": null,
                          "unsubscribed_at": null,
                          "enriched_at": null,
                          "tag_ids": [
                            3,
                            7
                          ],
                          "has_reviewed": false,
                          "created_at": "2026-05-01T10:00:00.000000Z",
                          "updated_at": "2026-05-01T10:00:00.000000Z"
                        }
                      ],
                      "meta": {
                        "current_page": 1,
                        "last_page": 1,
                        "per_page": 50,
                        "total": 1,
                        "from": 1,
                        "to": 1,
                        "has_activated_automation": true
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Create or update a contact",
        "description": "Create or update a contact. This is an **upsert keyed on email** (within the workspace): if a contact with the same email exists it is updated, otherwise it is created. On an existing contact, scalar fields are only filled where they are currently empty (customer-entered values are preserved), and tags are attached only when the contact is newly created. The response `status` field tells you which happened. Contacts created through the API key are stamped `primary_source: \"public_api\"`.",
        "operationId": "createOrUpdateContact",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email",
                    "maxLength": 255,
                    "description": "Contact email. The upsert key; lowercased and trimmed."
                  },
                  "name": {
                    "type": "string",
                    "maxLength": 255
                  },
                  "phone": {
                    "type": "string",
                    "maxLength": 50
                  },
                  "country": {
                    "type": "string",
                    "maxLength": 100
                  },
                  "state": {
                    "type": "string",
                    "maxLength": 100
                  },
                  "city": {
                    "type": "string",
                    "maxLength": 100
                  },
                  "zipcode": {
                    "type": "string",
                    "maxLength": 20
                  },
                  "company": {
                    "type": "string",
                    "maxLength": 255
                  },
                  "date_added": {
                    "type": "string",
                    "format": "date",
                    "description": "Date the contact was added (YYYY-MM-DD). Common date formats are accepted and normalised."
                  },
                  "external_metadata": {
                    "type": "object",
                    "description": "Arbitrary key/value metadata from your system. Merged per key on update (existing keys are preserved)."
                  },
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    },
                    "description": "Tag IDs to attach (must exist in this workspace). Applied only when the contact is newly created."
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "maxLength": 100
                    },
                    "description": "Tag names to attach; missing tags are auto-created. Applied only when the contact is newly created."
                  },
                  "primary_source": {
                    "type": "string",
                    "enum": [
                      "csv",
                      "public_api",
                      "review_submission",
                      "manual",
                      "social_import",
                      "stripe"
                    ],
                    "description": "Override the source stamp. Defaults to `public_api` for API-key requests. Locked to the first value; never changed on later upserts."
                  }
                },
                "required": [
                  "email"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Contact upserted. Returns `200` when the contact was updated or unchanged, `201` when a new contact was created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "created",
                        "updated",
                        "unchanged"
                      ],
                      "description": "Which operation occurred. Use this to branch in integrations."
                    },
                    "contact": {
                      "$ref": "#/components/schemas/Contact"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "status": "created",
                      "contact": {
                        "id": 8801,
                        "email": "jordan@example.com",
                        "name": "Jordan Lee",
                        "phone": null,
                        "primary_source": "public_api",
                        "country": null,
                        "state": null,
                        "city": null,
                        "zipcode": null,
                        "company": "Acme",
                        "date_added": "2026-05-01",
                        "date_added_label": "May 1, 2026",
                        "is_unsubscribed": false,
                        "unsubscribe_reason": null,
                        "unsubscribed_at": null,
                        "enriched_at": null,
                        "tag_ids": [
                          3,
                          7
                        ],
                        "has_reviewed": false,
                        "created_at": "2026-05-01T10:00:00.000000Z",
                        "updated_at": "2026-05-01T10:00:00.000000Z"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/contacts/{id}": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get a contact",
        "description": "Get a single contact plus its activity timeline.",
        "operationId": "getContact",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Numeric contact ID.",
            "schema": {
              "type": "integer",
              "example": 8801
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contact fetched successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "contact": {
                      "$ref": "#/components/schemas/Contact"
                    },
                    "timeline": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string"
                          },
                          "event_at": {
                            "type": "string"
                          },
                          "summary": {
                            "type": "string"
                          },
                          "payload": {}
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "put": {
        "tags": [
          "Contacts"
        ],
        "summary": "Update a contact",
        "description": "Update a contact's profile fields. Only the fields you send are changed. Email, source, and subscription state cannot be changed here (use the upsert for email, and the unsubscribe endpoint for subscription state).",
        "operationId": "updateContact",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Numeric contact ID.",
            "schema": {
              "type": "integer",
              "example": 8801
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "maxLength": 255
                  },
                  "phone": {
                    "type": "string",
                    "maxLength": 50
                  },
                  "country": {
                    "type": "string",
                    "maxLength": 100
                  },
                  "state": {
                    "type": "string",
                    "maxLength": 100
                  },
                  "city": {
                    "type": "string",
                    "maxLength": 100
                  },
                  "zipcode": {
                    "type": "string",
                    "maxLength": 20
                  },
                  "company": {
                    "type": "string",
                    "maxLength": 255
                  },
                  "date_added": {
                    "type": "string",
                    "format": "date",
                    "description": "YYYY-MM-DD. Common date formats are accepted and normalised."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Contact updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Contact"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Contacts"
        ],
        "summary": "Delete a contact",
        "description": "Delete a contact. This is a soft delete.",
        "operationId": "deleteContact",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Numeric contact ID.",
            "schema": {
              "type": "integer",
              "example": 8801
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contact deleted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "message": "Contact deleted successfully."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/contacts/{id}/unsubscribe": {
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Unsubscribe a contact",
        "description": "Unsubscribe a contact from email automation. Idempotent: if the contact is already unsubscribed, the existing reason and timestamp are kept.",
        "operationId": "unsubscribeContact",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Numeric contact ID.",
            "schema": {
              "type": "integer",
              "example": 8801
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "reason": {
                    "type": "string",
                    "enum": [
                      "manual",
                      "one_click",
                      "mailto",
                      "spam_report",
                      "hard_bounce",
                      "complaint"
                    ],
                    "default": "manual",
                    "description": "Why the contact is being unsubscribed."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Contact unsubscribed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Contact"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/contacts/{id}/tags": {
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Assign tags to a contact",
        "description": "Assign one or more tags to a contact. Idempotent — tags already present are left as-is.",
        "operationId": "assignContactTags",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Numeric contact ID.",
            "schema": {
              "type": "integer",
              "example": 8801
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    },
                    "minItems": 1,
                    "description": "Tag IDs to assign (must exist in this workspace)."
                  }
                },
                "required": [
                  "tag_ids"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tags assigned.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Contact"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Contacts"
        ],
        "summary": "Remove tags from a contact",
        "description": "Remove one or more tags from a contact. Send the tag IDs in the request body.",
        "operationId": "unassignContactTags",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Numeric contact ID.",
            "schema": {
              "type": "integer",
              "example": 8801
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tag_ids": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    },
                    "minItems": 1,
                    "description": "Tag IDs to remove."
                  }
                },
                "required": [
                  "tag_ids"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tags removed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Contact"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/contact-tags": {
      "get": {
        "tags": [
          "ContactTags"
        ],
        "summary": "Get all contact tags",
        "description": "List all contact tags in the workspace, each with the number of contacts carrying it.",
        "operationId": "getAllContactTags",
        "responses": {
          "200": {
            "description": "Tags fetched successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ContactTag"
                      }
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "data": [
                        {
                          "id": 3,
                          "name": "Newsletter",
                          "color": "#EA580C",
                          "contacts_count": 42,
                          "created_at": "2026-04-01T10:00:00.000000Z",
                          "updated_at": "2026-04-01T10:00:00.000000Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "post": {
        "tags": [
          "ContactTags"
        ],
        "summary": "Create a contact tag",
        "description": "Create a contact tag. Tag names must be unique within the workspace.",
        "operationId": "createContactTag",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "maxLength": 100,
                    "description": "Tag name. Unique within the workspace."
                  },
                  "color": {
                    "type": "string",
                    "maxLength": 50,
                    "description": "Optional colour (hex or named)."
                  }
                },
                "required": [
                  "name"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tag created (HTTP 201).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ContactTag"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    },
    "/contact-tags/{id}": {
      "put": {
        "tags": [
          "ContactTags"
        ],
        "summary": "Update a contact tag",
        "description": "Update a contact tag. Only the fields you send are changed; sending `color: null` does not clear it.",
        "operationId": "updateContactTag",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Numeric tag ID.",
            "schema": {
              "type": "integer",
              "example": 3
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "maxLength": 100,
                    "description": "New tag name. Unique within the workspace."
                  },
                  "color": {
                    "type": "string",
                    "maxLength": 50
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tag updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ContactTag"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      },
      "delete": {
        "tags": [
          "ContactTags"
        ],
        "summary": "Delete a contact tag",
        "description": "Delete a contact tag. Its assignments to contacts are removed automatically.",
        "operationId": "deleteContactTag",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Numeric tag ID.",
            "schema": {
              "type": "integer",
              "example": 3
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tag deleted successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "value": {
                      "message": "Tag deleted successfully."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "SocialFeedResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Numeric review ID."
          },
          "unique_feedback_id": {
            "type": "string"
          },
          "language_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "comment": {
            "type": [
              "string",
              "null"
            ],
            "description": "The review text."
          },
          "favourite": {
            "type": "boolean"
          },
          "sentiment_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "created_at": {
            "type": "string"
          },
          "feed_fields": {
            "$ref": "#/components/schemas/FeedFields"
          },
          "rating_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "string",
              "null"
            ]
          },
          "review_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "review_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "public_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "public_display_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "social_platform": {
            "type": [
              "object",
              "null"
            ],
            "description": "Source platform metadata: icon_full_url, review_url, review_type, name, slug."
          },
          "social_feed_source": {
            "type": [
              "object",
              "null"
            ],
            "description": "Original source URL of the review."
          },
          "meta_properties": {
            "type": [
              "object",
              "null"
            ]
          },
          "meta_attributes": {
            "type": "array",
            "items": {}
          },
          "allow_video_audio_transcript": {
            "type": "boolean"
          },
          "question_answers": {
            "type": "array",
            "items": {},
            "description": "Fixed set of reviewer profile fields (name, email, designation, company, etc.)."
          },
          "attachments": {
            "type": "array",
            "items": {},
            "description": "Media attachments; each has id, attachment_url, attachment_type, and (for video/audio) static_thumb_url, transcript, and conversion status."
          },
          "is_pro_editor_enabled": {
            "type": "boolean"
          },
          "is_download_enabled": {
            "type": "boolean"
          },
          "reviewer_social_urls": {
            "type": "array",
            "items": {}
          },
          "duplicated_from_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "review_labels": {
            "type": "array",
            "items": {},
            "description": "Array of { id, name, attributes }."
          },
          "extra_details": {
            "type": [
              "object",
              "null"
            ]
          }
        }
      },
      "Contact": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "email": {
            "type": "string"
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "primary_source": {
            "type": "string",
            "description": "How the contact first entered the workspace: csv, public_api, review_submission, manual, social_import, or stripe. Locked to the first source."
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "zipcode": {
            "type": [
              "string",
              "null"
            ]
          },
          "company": {
            "type": [
              "string",
              "null"
            ]
          },
          "date_added": {
            "type": [
              "string",
              "null"
            ],
            "description": "YYYY-MM-DD."
          },
          "date_added_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "Human-readable date, e.g. \"May 1, 2026\"."
          },
          "is_unsubscribed": {
            "type": "boolean"
          },
          "unsubscribe_reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "unsubscribed_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "enriched_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "tag_ids": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "has_reviewed": {
            "type": "boolean",
            "description": "True if this contact has submitted or been imported as a review."
          },
          "created_at": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          }
        }
      },
      "ContactTag": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "color": {
            "type": [
              "string",
              "null"
            ]
          },
          "contacts_count": {
            "type": "integer"
          },
          "created_at": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          }
        }
      },
      "FeedFields": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "profile_pic_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "position": {
            "type": [
              "string",
              "null"
            ]
          },
          "organization_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "consent": {
            "type": [
              "boolean",
              "null"
            ]
          }
        }
      },
      "QuestionAnswer": {
        "type": "object",
        "properties": {
          "feed_form_question_id": {
            "type": [
              "integer",
              "string"
            ],
            "description": "Numeric question ID. When the form has no matching question, a default question is injected and this is a string key such as \"name\", \"email\" or \"company_logo\"."
          },
          "question_type": {
            "type": "integer"
          },
          "question_text": {
            "type": "string"
          },
          "default_value": {
            "type": [
              "string",
              "null"
            ]
          },
          "question_label": {
            "type": "string"
          },
          "mandatory": {
            "type": [
              "integer",
              "boolean"
            ],
            "description": "0 or 1 for stored questions, and boolean false for injected default questions."
          },
          "answer": {
            "type": "string",
            "description": "Answer value. Empty string when unanswered, never null."
          },
          "placeholder": {
            "type": "string"
          }
        }
      },
      "PaginatedResponse": {
        "type": "object",
        "properties": {
          "current_page": {
            "type": "integer"
          },
          "data": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "first_page_url": {
            "type": "string"
          },
          "from": {
            "type": "integer"
          },
          "next_page_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "path": {
            "type": "string"
          },
          "per_page": {
            "type": "integer"
          },
          "prev_page_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "to": {
            "type": "integer"
          }
        }
      },
      "Workspace": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "unique_workspace_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "domain": {
            "type": [
              "string",
              "null"
            ]
          },
          "website_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "logo": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "logo_url": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "User": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "unique_user_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "user_meta": {
            "type": "object"
          },
          "workspaces": {
            "type": "integer"
          }
        }
      },
      "FeedForm": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "unique_form_id": {
            "type": "string"
          },
          "public_url": {
            "type": "string"
          }
        }
      },
      "ReviewForm": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "project_id": {
            "type": "integer"
          },
          "unique_form_id": {
            "type": "string"
          },
          "user_id": {
            "type": "integer"
          },
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "page_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "page_main_message": {
            "type": [
              "string",
              "null"
            ]
          },
          "messaging_description": {
            "type": [
              "string",
              "null"
            ]
          },
          "page_image": {
            "type": [
              "string",
              "null"
            ]
          },
          "hide_image": {
            "type": "integer"
          },
          "submit_attributes": {
            "type": "object"
          },
          "thankyou_attributes": {
            "type": "object"
          },
          "form_attributes": {
            "type": "object"
          },
          "custom_attributes": {
            "type": "object"
          },
          "allow_auto_detect_language": {
            "type": "integer"
          },
          "allow_to_remove_branding": {
            "type": "integer"
          },
          "allow_custom_domain": {
            "type": "integer"
          },
          "video_meta": {
            "type": "object"
          },
          "audio_meta": {
            "type": "object"
          },
          "branding_meta": {
            "type": "object"
          },
          "allow_star_redirection": {
            "type": "integer"
          },
          "public_url": {
            "type": "string"
          },
          "public_url_with_custom_domain": {
            "type": "string"
          },
          "public_display_url": {
            "type": "string"
          },
          "public_display_url_with_custom_domain": {
            "type": "string"
          },
          "is_custom_domain": {
            "type": "boolean"
          },
          "uuid": {
            "type": "string"
          },
          "page_image_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "questions": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "other_review_platforms_styles": {
            "type": "object",
            "description": "Configuration styles for other review platforms",
            "properties": {
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "platform": {
                      "type": "string",
                      "description": "Platform identifier (e.g., google, trustpilot, facebook)"
                    },
                    "icon": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Icon filename for the platform"
                    },
                    "button_text": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Default button text for the platform"
                    },
                    "button_style": {
                      "type": "object",
                      "description": "Button styling configuration",
                      "additionalProperties": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "required": [
          "name"
        ]
      },
      "ReviewFormInput": {
        "type": "object",
        "description": "Request body for creating or updating a review form. Most fields are optional.\n\n**On create (`POST /forms`), only `name` is validated.** Every other field is accepted and stored as provided. The conditional requirements described below, and the `is_paused` short-circuit, are enforced on update (`PUT /forms/{unique_form_id}`) only.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the review form (required, max 140 characters)",
            "maxLength": 140
          },
          "is_paused": {
            "type": "boolean",
            "description": "Pause or unpause the form. On update, when this field is present, only this field is applied and all other fields in the body are ignored."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Form description"
          },
          "public_slug": {
            "type": [
              "string",
              "null"
            ],
            "description": "Custom slug for the form's public URL. Update only. Must be a valid slug (letters, numbers and hyphens), between 3 and 100 characters."
          },
          "language_id": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 2,
            "description": "Two-letter language code applied to the form's public page, for example \"en\". Not a numeric id."
          },
          "allow_reviewer_email_notification": {
            "type": "integer",
            "enum": [
              0,
              1
            ],
            "description": "Send the reviewer an email notification after they submit (1 = yes, 0 = no). Omit the field to leave it unchanged; sending null is rejected."
          },
          "page_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Title displayed on the form page"
          },
          "page_main_message": {
            "type": [
              "string",
              "null"
            ],
            "description": "Main message or description for the form page (supports HTML)"
          },
          "messaging_description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Messaging description (supports HTML)"
          },
          "page_image": {
            "type": [
              "string",
              "null"
            ],
            "format": "binary",
            "description": "Image file for the form page (optional, max 15MB)"
          },
          "hide_image": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Hide the page image (1 = yes, 0 = no)"
          },
          "favicon": {
            "type": [
              "string",
              "null"
            ],
            "description": "Favicon path"
          },
          "review_label_ids": {
            "type": [
              "array",
              "null"
            ],
            "description": "Array of review label IDs (each must be 26 characters, distinct)",
            "items": {
              "type": "string",
              "minLength": 26,
              "maxLength": 26
            }
          },
          "allow_video_recording": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Enable video recording (1 = yes, 0 = no). When enabled, video_button_label is required."
          },
          "video_button_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "Label for the video recording button (required if allow_video_recording is 1)"
          },
          "allow_screen_recording": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Enable screen recording (1 = yes, 0 = no). When enabled, screen_button_label is required."
          },
          "screen_button_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "Label for the screen recording button (required if allow_screen_recording is 1)"
          },
          "allow_audio_recording": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Enable audio recording (1 = yes, 0 = no). When enabled, audio_button_label is required."
          },
          "audio_button_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "Label for the audio recording button (required if allow_audio_recording is 1)"
          },
          "allow_text_review": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Enable text review (1 = yes, 0 = no). When enabled, text_button_label is required."
          },
          "text_button_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "Label for the text review button (required if allow_text_review is 1)"
          },
          "allow_upload_file_option": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Enable file upload option (1 = yes, 0 = no). When enabled, text_file_upload_label is required."
          },
          "text_file_upload_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "Label for the file upload input (required if allow_upload_file_option is 1)"
          },
          "allow_files": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Allowed file types for upload (e.g., all_video)"
          },
          "allow_review_type": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "0",
              "1"
            ],
            "description": "Review type: '0' = text only comment, '1' = text rating with comment"
          },
          "remark_placeholder": {
            "type": [
              "string",
              "null"
            ],
            "description": "Placeholder text for remarks (required in certain review type configurations)"
          },
          "option_to_add_remark": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Option to add remark (1 = yes, 0 = no)"
          },
          "is_required_remark": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Is remark required (1 = yes, 0 = no)"
          },
          "additionalinfo": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Array of additional info fields (e.g., 'other_text', 'other_text2', 'other_text3', 'consent')"
          },
          "other_text_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "Label for other_text field (required if 'other_text' in additionalinfo)"
          },
          "other_text_placeholder": {
            "type": [
              "string",
              "null"
            ],
            "description": "Placeholder for other_text field (required if 'other_text' in additionalinfo)"
          },
          "other_text2_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "Label for other_text2 field (required if 'other_text2' in additionalinfo)"
          },
          "other_text2_placeholder": {
            "type": [
              "string",
              "null"
            ],
            "description": "Placeholder for other_text2 field (required if 'other_text2' in additionalinfo)"
          },
          "other_text3_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "Label for other_text3 field (required if 'other_text3' in additionalinfo)"
          },
          "other_text3_placeholder": {
            "type": [
              "string",
              "null"
            ],
            "description": "Placeholder for other_text3 field (required if 'other_text3' in additionalinfo)"
          },
          "consent_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "Consent label text (required if 'consent' in additionalinfo, must contain valid link format)"
          },
          "thank_you_type": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "thank_you_page",
              "redirection"
            ],
            "description": "Thank you page type"
          },
          "thankyou_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Thank you page title"
          },
          "thankyou_message": {
            "type": [
              "string",
              "null"
            ],
            "description": "Thank you page message"
          },
          "thankyou_reveal_text": {
            "type": [
              "string",
              "null"
            ],
            "description": "Thank you reveal text"
          },
          "thankyou_redirection_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Thank you redirection URL (required if thank_you_type is 'redirection')",
            "format": "uri"
          },
          "allow_video_and_shareable_link": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "0",
              "1"
            ],
            "description": "Allow video and shareable link (1 = yes, 0 = no)"
          },
          "other_review_platforms_enabled": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Enable other review platforms (1 = yes, 0 = no)"
          },
          "other_review_platforms": {
            "type": [
              "array",
              "null"
            ],
            "description": "Array of other review platforms (required if other_review_platforms_enabled is 1 and provided, min 1 item)",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "description": "Platform review URL (required)",
                  "format": "uri"
                },
                "platform": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Platform identifier (optional, auto-detected from URL if not provided). Allowed values: google, trustpilot, facebook, clutch, etc."
                },
                "is_enabled": {
                  "type": [
                    "boolean",
                    "null"
                  ],
                  "description": "Whether the platform is enabled (optional, defaults to true)"
                },
                "button_text": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Custom button text for the platform"
                },
                "icon": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Icon filename for the platform"
                }
              },
              "required": [
                "url"
              ]
            },
            "minItems": 1
          },
          "thankyou_affiliate_link": {
            "type": [
              "string",
              "null"
            ],
            "description": "Thank you page affiliate link. Must be a feedspace.io URL; other hosts are rejected. The scheme is optional and is normalized to https://."
          },
          "thankyou_is_enable_affiliate_link": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Enable thank you affiliate link (1 = yes, 0 = no)"
          },
          "hide_signup_section": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Hide signup section (1 = yes, 0 = no)"
          },
          "allow_star_redirection": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Enable star redirection (true = yes, false = no)"
          },
          "star_redirection_min_rating": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Minimum rating for star redirection (1-5)"
          },
          "star_redirection_platforms": {
            "type": [
              "array",
              "null"
            ],
            "description": "Array of star redirection platforms (required if allow_star_redirection is true and provided, min 1 item)",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "description": "Platform review URL (required)",
                  "format": "uri"
                },
                "platform": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Platform identifier (optional, auto-detected from URL if not provided)"
                },
                "is_enabled": {
                  "type": [
                    "boolean",
                    "null"
                  ],
                  "description": "Whether the platform is enabled (optional, defaults to true)"
                },
                "button_text": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Custom button text for the platform"
                },
                "icon": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Icon filename for the platform"
                },
                "button_style": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "description": "Button styling configuration",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "url"
              ]
            },
            "minItems": 1
          },
          "allow_introduction_media": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Allow introduction media (1 = yes, 0 = no)"
          },
          "introduction_media": {
            "type": [
              "array",
              "null"
            ],
            "description": "Introduction media array (optional, max 1 item)",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "enum": [
                    "video",
                    "gif",
                    "image"
                  ],
                  "description": "Media type (required)"
                },
                "details": {
                  "type": "object",
                  "properties": {
                    "file": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "binary",
                      "description": "Media file. Required for gif and image types (max 15 MB). For image type, allowed formats are jpeg, png, jpg, gif, svg, webp, bmp, avif."
                    },
                    "file_name": {
                      "type": "string",
                      "description": "File name (required)"
                    },
                    "original_url": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Original video URL (required for video type). Must be a Feedspace-hosted media URL from a prior upload.",
                      "format": "uri"
                    },
                    "original_path": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Original video path (required for video type)"
                    }
                  }
                }
              },
              "required": [
                "type",
                "details"
              ]
            },
            "maxItems": 1
          },
          "allow_thankyou_message_media": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Allow thank you message media (1 = yes, 0 = no)"
          },
          "thankyou_message_media": {
            "type": [
              "array",
              "null"
            ],
            "description": "Thank you message media array (optional, max 1 item)",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "enum": [
                    "video",
                    "gif",
                    "image"
                  ],
                  "description": "Media type (required)"
                },
                "details": {
                  "type": "object",
                  "properties": {
                    "file": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "binary",
                      "description": "Media file. Required for gif and image types (max 15 MB). For image type, allowed formats are jpeg, png, jpg, gif, svg, webp, bmp, avif."
                    },
                    "file_name": {
                      "type": "string",
                      "description": "File name (required)"
                    },
                    "original_url": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Original video URL (required for video type). Must be a Feedspace-hosted media URL from a prior upload.",
                      "format": "uri"
                    },
                    "original_path": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Original video path (required for video type)"
                    }
                  }
                }
              },
              "required": [
                "type",
                "details"
              ]
            },
            "maxItems": 1
          },
          "has_allow_media_review": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Allow media review (1 = yes, 0 = no)"
          },
          "has_capture_star_rating": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Capture star rating (1 = yes, 0 = no)"
          },
          "has_capture_comment": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Capture comment (1 = yes, 0 = no)"
          },
          "has_allow_image_uploads": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Allow image uploads (1 = yes, 0 = no)"
          },
          "show_reviews_on_form": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Show reviews on form (1 = yes, 0 = no)"
          },
          "reviews_widget_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Reviews widget UUID (required if show_reviews_on_form is 1)"
          },
          "is_enable_affiliate_link": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Enable branding affiliate link (1 = yes, 0 = no)"
          },
          "branding_affiliate_link": {
            "type": [
              "string",
              "null"
            ],
            "description": "Branding affiliate link. Must be a feedspace.io URL; other hosts are rejected. The scheme is optional and is normalized to https://."
          },
          "submit_attributes": {
            "type": [
              "object",
              "null"
            ],
            "description": "Submit page attributes",
            "additionalProperties": true
          },
          "thankyou_attributes": {
            "type": [
              "object",
              "null"
            ],
            "description": "Thank you page attributes",
            "additionalProperties": true
          },
          "form_attributes": {
            "type": [
              "object",
              "null"
            ],
            "description": "Form configuration attributes",
            "additionalProperties": true
          },
          "custom_attributes": {
            "type": [
              "object",
              "null"
            ],
            "description": "Custom styling and configuration attributes",
            "additionalProperties": true
          },
          "media_attributes": {
            "type": [
              "object",
              "null"
            ],
            "description": "Media configuration attributes",
            "additionalProperties": true
          },
          "allow_auto_detect_language": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Allow auto-detect language (1 = yes, 0 = no)"
          },
          "allow_to_remove_branding": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Allow to remove branding (1 = yes, 0 = no)"
          },
          "allow_custom_domain": {
            "type": [
              "integer",
              "null"
            ],
            "enum": [
              0,
              1
            ],
            "description": "Allow custom domain (1 = yes, 0 = no)"
          }
        },
        "required": [
          "name"
        ]
      },
      "TextFeedAttachment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 26,
            "maxLength": 26,
            "description": "Attachment ID as a 26-character ULID string. Use this value in `remove_media[]` and `static_thumb[n][attachment_id]`."
          },
          "type": {
            "type": "string"
          },
          "original_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "processed_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "static_thumb_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "processing_status": {
            "type": "string"
          },
          "transcript": {
            "type": [
              "string",
              "null"
            ]
          },
          "transcript_status": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "not_started",
              "queued",
              "in_progress",
              "completed",
              "failed",
              null
            ],
            "description": "Transcript state for audio and video attachments. Null for image attachments."
          },
          "trim_status": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "TextFeedResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "unique_feedback_id": {
            "type": "string"
          },
          "language_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Two-letter language code, for example \"en\". Not a numeric id."
          },
          "public_url": {
            "type": "string"
          },
          "comment": {
            "type": [
              "string",
              "null"
            ]
          },
          "favourite": {
            "type": "boolean"
          },
          "rating_type": {
            "type": "string"
          },
          "response": {
            "type": [
              "string",
              "null"
            ],
            "description": "Rating or thumbs value as a string, for example \"5\". Null when the form collects a comment without a rating."
          },
          "review_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "sentiment_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reviewed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "feed_fields": {
            "$ref": "#/components/schemas/FeedFields"
          },
          "feed_form": {
            "$ref": "#/components/schemas/FeedForm"
          },
          "question_answers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuestionAnswer"
            }
          },
          "extra_details": {
            "type": [
              "object",
              "array",
              "null"
            ],
            "description": "Structured extra details for the review."
          },
          "meta_properties": {
            "type": [
              "object",
              "null"
            ]
          },
          "allow_video_audio_transcript": {
            "type": "string",
            "enum": [
              "0",
              "1"
            ],
            "description": "Whether the workspace owner's plan allows audio and video transcripts. Returned as the string \"0\" or \"1\", not a boolean."
          },
          "review_labels": {
            "$ref": "#/components/schemas/ReviewLabelList"
          },
          "reviewer_social_urls": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReviewerSocialUrls"
              },
              {
                "type": "array",
                "maxItems": 0
              }
            ],
            "description": "Reviewer social media URLs as an object with twitter, linkedin, facebook and instagram keys. Returns an empty array when no social URLs are stored."
          },
          "duplicated_from_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TextFeedAttachment"
            }
          }
        }
      },
      "AudioFeedResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "unique_feedback_id": {
            "type": "string"
          },
          "language_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Two-letter language code, for example \"en\". Not a numeric id."
          },
          "public_url": {
            "type": "string"
          },
          "comment": {
            "type": [
              "string",
              "null"
            ]
          },
          "review_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "review_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "rating": {
            "type": [
              "string",
              "null"
            ],
            "description": "Decimal rating returned as a string, for example \"4.0\"."
          },
          "type": {
            "type": "string"
          },
          "favourite": {
            "type": "boolean"
          },
          "sentiment_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "transcript": {
            "type": [
              "string",
              "null"
            ]
          },
          "transcript_generated": {
            "type": "boolean"
          },
          "transcript_status": {
            "type": "string",
            "enum": [
              "not_started",
              "queued",
              "in_progress",
              "completed",
              "failed"
            ],
            "description": "Current state of transcript generation for this review."
          },
          "allow_video_audio_transcript": {
            "type": "string",
            "enum": [
              "0",
              "1"
            ],
            "description": "Whether the workspace owner's plan allows audio and video transcripts. Returned as the string \"0\" or \"1\", not a boolean."
          },
          "review_labels": {
            "$ref": "#/components/schemas/ReviewLabelList"
          },
          "is_audio_converted": {
            "type": "integer"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "feed_fields": {
            "$ref": "#/components/schemas/FeedFields"
          },
          "feed_form": {
            "$ref": "#/components/schemas/FeedForm"
          },
          "question_answers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuestionAnswer"
            }
          },
          "file_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Media URL for the review. Omitted entirely when the review is locked, so the key is absent rather than null."
          },
          "is_download_enabled": {
            "type": "boolean"
          },
          "meta_properties": {
            "type": [
              "object",
              "null"
            ]
          },
          "trim_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewer_social_urls": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReviewerSocialUrls"
              },
              {
                "type": "array",
                "maxItems": 0
              }
            ],
            "description": "Reviewer social media URLs as an object with twitter, linkedin, facebook and instagram keys. Returns an empty array when no social URLs are stored."
          },
          "duplicated_from_id": {
            "type": [
              "integer",
              "null"
            ]
          }
        }
      },
      "VideoFeedResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "unique_feedback_id": {
            "type": "string"
          },
          "language_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Two-letter language code, for example \"en\". Not a numeric id."
          },
          "public_url": {
            "type": "string"
          },
          "comment": {
            "type": [
              "string",
              "null"
            ]
          },
          "review_text": {
            "type": [
              "string",
              "null"
            ]
          },
          "review_title": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "rating": {
            "type": [
              "string",
              "null"
            ],
            "description": "Decimal rating returned as a string, for example \"4.0\"."
          },
          "type": {
            "type": "string"
          },
          "favourite": {
            "type": "boolean"
          },
          "sentiment_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "transcript": {
            "type": [
              "string",
              "null"
            ]
          },
          "transcript_generated": {
            "type": "boolean"
          },
          "transcript_status": {
            "type": "string",
            "enum": [
              "not_started",
              "queued",
              "in_progress",
              "completed",
              "failed"
            ],
            "description": "Current state of transcript generation for this review."
          },
          "allow_video_audio_transcript": {
            "type": "string",
            "enum": [
              "0",
              "1"
            ],
            "description": "Whether the workspace owner's plan allows audio and video transcripts. Returned as the string \"0\" or \"1\", not a boolean."
          },
          "review_labels": {
            "$ref": "#/components/schemas/ReviewLabelList"
          },
          "static_thumb_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "is_video_converted": {
            "type": "integer"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "feed_fields": {
            "$ref": "#/components/schemas/FeedFields"
          },
          "feed_form": {
            "$ref": "#/components/schemas/FeedForm"
          },
          "question_answers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuestionAnswer"
            }
          },
          "file_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Media URL for the review. Omitted entirely when the review is locked, so the key is absent rather than null."
          },
          "is_download_enabled": {
            "type": "boolean"
          },
          "is_pro_editor_enabled": {
            "type": "boolean"
          },
          "meta_properties": {
            "type": [
              "object",
              "null"
            ]
          },
          "trim_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewer_social_urls": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ReviewerSocialUrls"
              },
              {
                "type": "array",
                "maxItems": 0
              }
            ],
            "description": "Reviewer social media URLs as an object with twitter, linkedin, facebook and instagram keys. Returns an empty array when no social URLs are stored."
          },
          "duplicated_from_id": {
            "type": [
              "integer",
              "null"
            ]
          }
        }
      },
      "ReviewLabelList": {
        "type": "array",
        "description": "Review labels assigned to this review, sorted by label name.",
        "items": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "description": "Review label ID"
            },
            "name": {
              "type": "string",
              "description": "Review label name"
            },
            "attributes": {
              "type": "object",
              "description": "Review label attributes",
              "properties": {
                "css_color_code": {
                  "type": "string",
                  "description": "Color used to render the label"
                }
              }
            }
          }
        }
      },
      "ReviewerSocialUrls": {
        "type": "object",
        "description": "Reviewer social media URLs",
        "properties": {
          "twitter": {
            "type": [
              "string",
              "null"
            ],
            "description": "Twitter profile URL"
          },
          "linkedin": {
            "type": [
              "string",
              "null"
            ],
            "description": "LinkedIn profile URL"
          },
          "facebook": {
            "type": [
              "string",
              "null"
            ],
            "description": "Facebook profile URL"
          },
          "instagram": {
            "type": [
              "string",
              "null"
            ],
            "description": "Instagram profile URL"
          }
        }
      },
      "StaticThumbInput": {
        "type": "object",
        "description": "Static thumbnail update input for attachments",
        "properties": {
          "attachment_id": {
            "type": "string",
            "description": "Attachment ID"
          },
          "static_thumb": {
            "type": "string",
            "format": "binary",
            "description": "Thumbnail image file"
          },
          "extension": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "jpeg",
              "jpg",
              "png",
              "gif",
              "webp"
            ],
            "description": "Image file extension"
          }
        },
        "required": [
          "attachment_id",
          "static_thumb"
        ]
      },
      "TextReviewImportRequest": {
        "type": "object",
        "description": "Request body for importing a text review manually. All fields are optional, but at least one of the following must be provided: `rating`, `review`, or `attachments`.",
        "properties": {
          "customer_avatar": {
            "type": "string",
            "format": "binary",
            "description": "Customer avatar image (optional). Allowed formats: jpeg, png, jpg, gif, svg, webp, bmp, avif. Max size: 15 MB"
          },
          "customer_name": {
            "type": "string",
            "maxLength": 255,
            "description": "Customer name (optional)"
          },
          "customer_email": {
            "type": "string",
            "format": "email",
            "maxLength": 255,
            "description": "Customer email (optional, must be valid email format)"
          },
          "customer_designation": {
            "type": "string",
            "maxLength": 255,
            "description": "Customer designation/job title (optional)"
          },
          "customer_company": {
            "type": "string",
            "maxLength": 255,
            "description": "Customer company name (optional)"
          },
          "customer_company_url": {
            "type": "string",
            "maxLength": 255,
            "description": "Customer company website URL (optional). The scheme is optional, so a bare domain such as example.com is accepted."
          },
          "customer_company_logo": {
            "type": "string",
            "format": "binary",
            "description": "Customer company logo image (optional). Allowed formats: jpeg, png, jpg, gif, svg, webp, bmp, avif. Max size: 15 MB"
          },
          "rating": {
            "type": "number",
            "minimum": 1,
            "maximum": 5,
            "description": "Rating value (1 = lowest, 5 = highest). Decimal values such as 4.5 are accepted. Optional, but at least one of rating, review, or attachments must be provided"
          },
          "review_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 255,
            "description": "Review source URL (optional)"
          },
          "review": {
            "type": "string",
            "description": "Review text content (optional, but at least one of rating, review, or attachments must be provided)"
          },
          "review_at": {
            "type": "string",
            "format": "date",
            "description": "Date when the review was submitted (YYYY-MM-DD format, optional)"
          },
          "website_logo": {
            "type": "string",
            "format": "binary",
            "description": "Website logo image (optional). Allowed formats: jpeg, png, jpg, gif, svg, webp, bmp, avif. Max size: 15 MB"
          },
          "attachments[]": {
            "type": "string",
            "format": "binary",
            "description": "Attachment images (optional, but at least one of rating, review, or attachments must be provided). Allowed formats: jpeg, png, jpg, gif, svg, webp, bmp, avif. Max size: 15 MB per file",
            "nullable": true
          }
        },
        "required": []
      },
      "VideoReviewImportRequest": {
        "type": "object",
        "description": "Request body for importing a video review manually. All fields are optional. If `type` is 'file', then `attachments[]` (video files) is required. If `type` is not 'file' or omitted, then `attachment_urls[]` is required.",
        "properties": {
          "customer_avatar": {
            "type": "string",
            "format": "binary",
            "description": "Customer avatar image (optional). Allowed formats: jpeg, png, jpg, gif, svg, webp, bmp, avif. Max size: 15 MB"
          },
          "customer_name": {
            "type": "string",
            "maxLength": 255,
            "description": "Customer name (optional)"
          },
          "customer_email": {
            "type": "string",
            "format": "email",
            "maxLength": 255,
            "description": "Customer email (optional, must be valid email format)"
          },
          "customer_designation": {
            "type": "string",
            "maxLength": 255,
            "description": "Customer designation/job title (optional)"
          },
          "customer_company": {
            "type": "string",
            "maxLength": 255,
            "description": "Customer company name (optional)"
          },
          "customer_company_url": {
            "type": "string",
            "maxLength": 255,
            "description": "Customer company website URL (optional). The scheme is optional, so a bare domain such as example.com is accepted."
          },
          "customer_company_logo": {
            "type": "string",
            "format": "binary",
            "description": "Customer company logo image (optional). Allowed formats: jpeg, png, jpg, gif, svg, webp, bmp, avif. Max size: 15 MB"
          },
          "rating": {
            "type": "number",
            "minimum": 0,
            "maximum": 5,
            "description": "Rating value (0 = lowest, 5 = highest, optional). Decimal values such as 4.5 are accepted."
          },
          "review_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 255,
            "description": "Review source URL (optional)"
          },
          "review": {
            "type": "string",
            "description": "Review text content (optional)"
          },
          "review_at": {
            "type": "string",
            "format": "date",
            "description": "Date when the review was submitted (YYYY-MM-DD format, optional)"
          },
          "website_logo": {
            "type": "string",
            "format": "binary",
            "description": "Website logo image (optional). Allowed formats: jpeg, png, jpg, gif, svg, webp, bmp, avif. Max size: 15 MB"
          },
          "type": {
            "type": "string",
            "description": "Import mode. Use 'file' to upload video files via `attachments[]`; omit or use another value to reference previously uploaded Feedspace media via `attachment_urls[]` (optional)."
          },
          "attachments[]": {
            "type": "string",
            "format": "binary",
            "description": "Video files (required if type='file'). Must be valid video files (video/* mime types)",
            "nullable": true
          },
          "attachment_urls[]": {
            "type": "string",
            "format": "uri",
            "description": "Feedspace-hosted media URLs for the videos (required when type is not 'file'). Each must be a URL returned by a prior Feedspace upload; arbitrary external URLs are rejected.",
            "nullable": true
          }
        },
        "required": []
      },
      "AudioReviewImportRequest": {
        "type": "object",
        "description": "Request body for importing an audio review manually. All fields are optional. If `type` is 'file', then `attachments[]` (audio files) is required. If `type` is not 'file' or omitted, then `attachment_urls[]` is required.",
        "properties": {
          "customer_avatar": {
            "type": "string",
            "format": "binary",
            "description": "Customer avatar image (optional). Allowed formats: jpeg, png, jpg, gif, svg, webp, bmp, avif. Max size: 15 MB"
          },
          "customer_name": {
            "type": "string",
            "maxLength": 255,
            "description": "Customer name (optional)"
          },
          "customer_email": {
            "type": "string",
            "format": "email",
            "maxLength": 255,
            "description": "Customer email (optional, must be valid email format)"
          },
          "customer_designation": {
            "type": "string",
            "maxLength": 255,
            "description": "Customer designation/job title (optional)"
          },
          "customer_company": {
            "type": "string",
            "maxLength": 255,
            "description": "Customer company name (optional)"
          },
          "customer_company_url": {
            "type": "string",
            "maxLength": 255,
            "description": "Customer company website URL (optional). The scheme is optional, so a bare domain such as example.com is accepted."
          },
          "customer_company_logo": {
            "type": "string",
            "format": "binary",
            "description": "Customer company logo image (optional). Allowed formats: jpeg, png, jpg, gif, svg, webp, bmp, avif. Max size: 15 MB"
          },
          "rating": {
            "type": "number",
            "minimum": 0,
            "maximum": 5,
            "description": "Rating value (0 = lowest, 5 = highest, optional). Decimal values such as 4.5 are accepted."
          },
          "review_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 255,
            "description": "Review source URL (optional)"
          },
          "review": {
            "type": "string",
            "description": "Review text content (optional)"
          },
          "review_at": {
            "type": "string",
            "format": "date",
            "description": "Date when the review was submitted (YYYY-MM-DD format, optional)"
          },
          "website_logo": {
            "type": "string",
            "format": "binary",
            "description": "Website logo image (optional). Allowed formats: jpeg, png, jpg, gif, svg, webp, bmp, avif. Max size: 15 MB"
          },
          "type": {
            "type": "string",
            "description": "Import mode. Use 'file' to upload audio files via `attachments[]`; omit or use another value to reference previously uploaded Feedspace media via `attachment_urls[]` (optional)."
          },
          "attachments[]": {
            "type": "string",
            "format": "binary",
            "description": "Audio files (required if type='file'). Must be valid audio files (audio mime types).",
            "nullable": true
          },
          "attachment_urls[]": {
            "type": "string",
            "format": "uri",
            "description": "Feedspace-hosted media URLs for the audio (required when type is not 'file'). Each must be a URL returned by a prior Feedspace upload; arbitrary external URLs are rejected.",
            "nullable": true
          }
        },
        "required": []
      },
      "WebLinkImportRequest": {
        "type": "object",
        "description": "Request body for importing reviews from a web link URL. Enter the web link URL from where you want to import reviews into Feedspace.",
        "properties": {
          "search": {
            "type": "string",
            "description": "Web link URL from where to import reviews (required). Accepts a plain string: the protocol (https://) is added automatically when it is not provided, so a bare host such as `example.com/reviews` is valid."
          }
        },
        "required": [
          "search"
        ]
      },
      "ImageToTextReviewImportRequest": {
        "type": "object",
        "description": "Request body for importing reviews from a screenshot image. Upload a screenshot of your review to automatically import it.",
        "properties": {
          "images[]": {
            "type": "string",
            "format": "binary",
            "description": "Image file (required, exactly 1 image). Allowed formats: jpeg, png, jpg, gif, svg, webp, bmp, avif. Max size: 15 MB"
          }
        },
        "required": [
          "images[]"
        ]
      },
      "PageResponse": {
        "type": "object",
        "description": "Page response object with full page details",
        "properties": {
          "id": {
            "type": "integer"
          },
          "user_id": {
            "type": "integer"
          },
          "project_id": {
            "type": "integer"
          },
          "unique_page_id": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "page_name": {
            "type": "string"
          },
          "meta": {
            "type": "object",
            "description": "Page metadata including configuration settings",
            "properties": {
              "logo": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "type": "string"
              },
              "feeds": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Array of review identifiers"
              },
              "theme": {
                "type": "string"
              },
              "favicon": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "subtitle": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "show_logo": {
                "type": "string"
              },
              "button_url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "custom_css": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "button_name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "redirect_url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "background_type": {
                "type": "string"
              },
              "allow_custom_css": {
                "type": "integer"
              },
              "background_color": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "background_image": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "enable_cta_button": {
                "type": "string"
              },
              "navigation_link_1": {
                "type": "string"
              },
              "navigation_link_2": {
                "type": "string"
              },
              "allow_custom_domain": {
                "type": "integer"
              },
              "is_logo_redirect_url": {
                "type": "string"
              },
              "add_cta_to_navigation": {
                "type": "string"
              },
              "add_custom_background": {
                "type": "string"
              },
              "navigation_link_1_url": {
                "type": "string"
              },
              "navigation_link_2_url": {
                "type": "string"
              },
              "navigation_link_1_text": {
                "type": "string"
              },
              "navigation_link_2_text": {
                "type": "string"
              },
              "allow_darken_background": {
                "type": "string"
              },
              "allow_to_remove_branding": {
                "type": "integer"
              },
              "review_selection_sort_by": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "allow_shorten_long_reviews": {
                "type": "string"
              },
              "allow_to_display_feed_date": {
                "type": "string"
              },
              "allow_to_display_wol_footer": {
                "type": "integer"
              },
              "logo_url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "background_image_url": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "custom_attributes": {
            "type": "object",
            "description": "Custom styling and configuration attributes",
            "properties": {
              "font": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "font_url": {
                    "type": "string"
                  },
                  "provider": {
                    "type": "string"
                  }
                }
              },
              "cta_enabled": {
                "type": "integer"
              },
              "border_color": {
                "type": "string"
              },
              "cta_attributes": {
                "type": "object",
                "properties": {
                  "position": {
                    "type": "string"
                  },
                  "body_text": {
                    "type": "string"
                  },
                  "button_url": {
                    "type": "string"
                  },
                  "button_color": {
                    "type": "string"
                  },
                  "button_label": {
                    "type": "string"
                  },
                  "heading_text": {
                    "type": "string"
                  },
                  "card_border_color": {
                    "type": "string"
                  },
                  "position_interval": {
                    "type": "string"
                  },
                  "card_background_color": {
                    "type": "string"
                  }
                }
              },
              "is_show_border": {
                "type": "string"
              },
              "is_show_ratings": {
                "type": "string"
              },
              "reviews_to_load": {
                "type": "integer"
              },
              "card_hover_color": {
                "type": "string"
              },
              "dark_mode_colors": {
                "type": "object",
                "properties": {
                  "card_hover_color": {
                    "type": "string"
                  },
                  "primary_text_color": {
                    "type": "string"
                  },
                  "external_link_color": {
                    "type": "string"
                  },
                  "secondary_text_color": {
                    "type": "string"
                  },
                  "card_background_color": {
                    "type": "string"
                  },
                  "page_background_color": {
                    "type": "string"
                  },
                  "highlighted_text_color": {
                    "type": "string"
                  },
                  "star_rating_border_color": {
                    "type": "string"
                  },
                  "star_rating_background_color": {
                    "type": "string"
                  }
                }
              },
              "enable_load_more": {
                "type": "string"
              },
              "star_rating_color": {
                "type": "string"
              },
              "load_more_btn_text": {
                "type": "string"
              },
              "page_primary_color": {
                "type": "string"
              },
              "primary_text_color": {
                "type": "string"
              },
              "show_platform_icon": {
                "type": "string"
              },
              "external_link_color": {
                "type": "string"
              },
              "page_backgound_color": {
                "type": "string"
              },
              "secondary_text_color": {
                "type": "string"
              },
              "card_background_color": {
                "type": "string"
              },
              "cta_button_text_color": {
                "type": "string"
              },
              "highlighted_text_color": {
                "type": "string"
              },
              "allow_social_redirection": {
                "type": "string"
              },
              "star_rating_border_color": {
                "type": "string"
              },
              "load_more_button_bg_color": {
                "type": "string"
              },
              "load_more_button_text_color": {
                "type": "string"
              },
              "load_more_button_border_color": {
                "type": "string"
              }
            }
          },
          "automation_filters": {
            "type": [
              "object",
              "null"
            ]
          },
          "wol_meta": {
            "type": "object",
            "properties": {
              "wol_feeds_selection_limit": {
                "type": "string"
              }
            }
          },
          "branding_meta": {
            "type": "object",
            "properties": {
              "hide_fs_branding": {
                "type": "string"
              },
              "allow_custom_domain": {
                "type": "string"
              },
              "allow_custom_css": {
                "type": "string"
              }
            }
          },
          "public_url": {
            "type": "string"
          },
          "public_url_with_custom_domain": {
            "type": "string"
          },
          "public_display_url": {
            "type": "string"
          },
          "public_display_url_with_custom_domain": {
            "type": "string"
          },
          "is_custom_domain": {
            "type": "boolean"
          },
          "branding_assets": {
            "type": "object",
            "properties": {
              "font": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "font_url": {
                    "type": "string"
                  },
                  "provider": {
                    "type": "string"
                  }
                }
              },
              "primary_text_color": {
                "type": "string"
              },
              "card_on_hover_color": {
                "type": "string"
              },
              "primary_button_color": {
                "type": "string"
              },
              "secondary_text_color": {
                "type": "string"
              },
              "card_background_color": {
                "type": "string"
              },
              "page_background_color": {
                "type": "string"
              }
            }
          },
          "widget": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer"
              },
              "common_id": {
                "type": "integer"
              },
              "unique_widget_id": {
                "type": "string"
              },
              "builder_js": {
                "type": "string"
              },
              "preview_image_url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "public_info_url": {
                "type": "string"
              },
              "workspace": {
                "type": [
                  "object",
                  "null"
                ]
              }
            }
          },
          "user": {
            "$ref": "#/components/schemas/User"
          }
        }
      },
      "SelectedPageFeed": {
        "type": "object",
        "description": "Review object returned by the selected-reviews endpoint, formatted for pages. Structure varies based on `feed_type` (video_feed, text_feed, audio_feed, or social_feed).",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Review ID"
          },
          "unique_feedback_id": {
            "type": "string",
            "description": "Unique feedback identifier"
          },
          "response": {
            "type": [
              "string",
              "null"
            ],
            "description": "Response value (can be string or numeric)"
          },
          "comment": {
            "type": [
              "string",
              "null"
            ],
            "description": "Review comment (may contain HTML)"
          },
          "sentiment_id": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Sentiment ID"
          },
          "extra_details": {
            "type": [
              "object",
              "null"
            ],
            "description": "Extra details object. Structure varies by review type and source. May contain customer information, metadata, author details, or other review-specific data."
          },
          "app_user_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "App user name or customer name"
          },
          "favourite": {
            "type": "boolean",
            "description": "Whether the review is marked as favourite"
          },
          "rating": {
            "type": [
              "number",
              "null"
            ],
            "description": "Rating value. May include decimals such as 4.5, and goes up to 10 for reviews imported from 10-point platforms."
          },
          "review_text": {
            "type": [
              "string",
              "null"
            ],
            "description": "Review text content"
          },
          "review_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Review title"
          },
          "reviewed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Date and time when the review was submitted"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the review was created"
          },
          "feed_type": {
            "type": "string",
            "enum": [
              "video_feed",
              "text_feed",
              "audio_feed",
              "social_feed"
            ],
            "description": "Review type"
          },
          "rating_type": {
            "type": [
              "integer",
              "string",
              "null"
            ],
            "description": "Rating type identifier. An integer for social reviews, the string \"star\" or \"thumbs_up\" for text reviews, and null for video and audio reviews."
          },
          "feed_form_id": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Review form ID if associated with a form"
          },
          "project_id": {
            "type": [
              "integer",
              "null"
            ],
            "description": "ID of the workspace the review belongs to. null for text reviews."
          },
          "file": {
            "type": [
              "string",
              "null"
            ],
            "description": "Relative path to the review's media file. Present for video and audio reviews; null for text and social reviews (social media is delivered via `attachments`)."
          },
          "static_thumb": {
            "type": [
              "string",
              "null"
            ],
            "description": "Relative path to the video thumbnail image. Present for video reviews; null otherwise."
          },
          "gif_thumb": {
            "type": [
              "string",
              "null"
            ],
            "description": "Relative path to the animated GIF preview. Present for video reviews; null otherwise."
          },
          "answers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "question_text": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "The form question."
                },
                "answer": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "The reviewer's answer."
                }
              }
            },
            "description": "Form question and answer pairs collected with the review. Present for text, video, and audio reviews; absent for social reviews."
          },
          "social_feed_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Social review sub-type (e.g., 'social', 'manual_text', 'manual_video')"
          },
          "customer_avatar": {
            "type": [
              "string",
              "null"
            ],
            "description": "Customer avatar image path or URL"
          },
          "company_logo": {
            "type": [
              "string",
              "null"
            ],
            "description": "Full URL of the reviewer's company logo, or null. Taken from the review's company_logo field for text, video, and audio reviews, and from the imported company logo for social reviews."
          },
          "review_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "Formatted review date (e.g., 'Dec 19, 2025')"
          },
          "review_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL to the original review"
          },
          "customer_designation": {
            "type": [
              "string",
              "null"
            ],
            "description": "Customer designation or job title"
          },
          "customer_company": {
            "type": [
              "string",
              "null"
            ],
            "description": "Customer company name"
          },
          "product_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Product name"
          },
          "social_platform": {
            "type": [
              "object",
              "null"
            ],
            "description": "Social platform information (present for social reviews)",
            "properties": {
              "id": {
                "type": "integer",
                "description": "Platform ID"
              },
              "name": {
                "type": "string",
                "description": "Platform name"
              },
              "slug": {
                "type": "string",
                "description": "Platform slug"
              },
              "icon_url": {
                "type": "string",
                "description": "Platform icon URL (relative)"
              },
              "icon_full_url": {
                "type": "string",
                "description": "Platform icon URL (full)"
              }
            }
          },
          "workspace_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Workspace name"
          },
          "display_review_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Display URL for the review"
          },
          "review_website_logo": {
            "type": [
              "string",
              "null"
            ],
            "description": "Review website logo URL (may be present for some review types)"
          },
          "attachments": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Array of attachment objects (videos, images, etc.). Populated for text and social reviews; video and audio media is delivered through the `file`, `static_thumb`, and `gif_thumb` fields instead."
          }
        }
      }
    },
    "securitySchemes": {
      "basicAuth": {
        "type": "http",
        "scheme": "basic",
        "description": "HTTP Basic Authentication using API Key and Secret Key. The credentials should be Base64 encoded in the format 'api_key:secret_key'. You can obtain your API Key and Secret Key from Feedspace → Automation → API (https://app.feedspace.io/automation/api)."
      }
    }
  }
}
