{
  "openapi": "3.1.0",
  "info": {
    "title": "Replo Public API",
    "version": "2026-10-29"
  },
  "servers": [
    {
      "url": "https://api.replo.app/v1"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    },
    "schemas": {
      "PublicApiError": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "doc_url": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message",
              "doc_url"
            ]
          }
        },
        "required": [
          "error"
        ]
      },
      "CommentThread": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "enum": [
              "comment_thread"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "target": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "file"
                    ]
                  },
                  "fileId": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "kind",
                  "fileId"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "sitePage"
                    ]
                  },
                  "siteId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "path": {
                    "type": "string",
                    "description": "The page the thread is on, without its locale prefix: a path such as /about, or a route pattern such as /products/[handle]."
                  }
                },
                "required": [
                  "kind",
                  "siteId",
                  "path"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "order"
                    ]
                  },
                  "orderId": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "kind",
                  "orderId"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "asset"
                    ]
                  },
                  "assetId": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "kind",
                  "assetId"
                ],
                "additionalProperties": false
              }
            ]
          },
          "anchor": {
            "$ref": "#/components/schemas/CommentAnchor"
          },
          "status": {
            "type": "string",
            "enum": [
              "open",
              "resolved"
            ],
            "description": "CommentThreadStatus"
          },
          "resolvedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "comments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Comment"
            }
          }
        },
        "required": [
          "object",
          "id",
          "projectId",
          "target",
          "anchor",
          "status",
          "resolvedAt",
          "createdAt",
          "updatedAt",
          "comments"
        ],
        "additionalProperties": false
      },
      "CommentAnchor": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "none"
                ]
              }
            },
            "required": [
              "type"
            ],
            "additionalProperties": false,
            "description": "The thread is on the whole target."
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "point"
                ]
              },
              "page": {
                "type": "integer",
                "minimum": 0,
                "description": "Zero-based page, for multi-page files such as PDFs."
              },
              "x": {
                "type": "number",
                "minimum": 0,
                "maximum": 1,
                "description": "Fraction of the target's width."
              },
              "y": {
                "type": "number",
                "minimum": 0,
                "maximum": 1,
                "description": "Fraction of the target's height."
              }
            },
            "required": [
              "type",
              "x",
              "y"
            ],
            "additionalProperties": false,
            "description": "A point on the target, in fractions of its size. Only file and asset targets take points."
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "element"
                ]
              },
              "tagName": {
                "type": "string"
              },
              "textPreview": {
                "type": "string",
                "description": "The element's visible text when the thread was started."
              },
              "quote": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The text the commenter selected, if any."
              }
            },
            "required": [
              "type",
              "tagName",
              "textPreview",
              "quote"
            ],
            "additionalProperties": false,
            "description": "An element on a page, pinned in the Replo app."
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "canvas"
                ]
              }
            },
            "required": [
              "type"
            ],
            "additionalProperties": false,
            "description": "A pin on a canvas, placed in the Replo app."
          }
        ],
        "description": "Where on the target the thread sits; type none means the whole target."
      },
      "Comment": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "enum": [
              "comment"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "threadId": {
            "type": "string",
            "format": "uuid"
          },
          "author": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "deleted": {
                "type": "boolean"
              }
            },
            "required": [
              "id",
              "name",
              "deleted"
            ],
            "additionalProperties": false
          },
          "source": {
            "type": "string",
            "enum": [
              "ui",
              "agent",
              "mcp",
              "api"
            ],
            "description": "How the comment was written: ui (the Replo app), agent (a Replo agent session), mcp or api."
          },
          "body": {
            "type": "string",
            "description": "Markdown (MDX) written by the commenter, who may be outside the workspace. Mentions this API key can't read appear as `<RedactedMention category=\"…\" />`. Empty when the comment is deleted."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "editedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "deleted": {
            "type": "boolean"
          }
        },
        "required": [
          "object",
          "id",
          "threadId",
          "author",
          "source",
          "body",
          "createdAt",
          "editedAt",
          "deleted"
        ],
        "additionalProperties": false
      },
      "CommentAnchorInput": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "none"
                ]
              }
            },
            "required": [
              "type"
            ],
            "additionalProperties": false,
            "description": "The thread is on the whole target."
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "point"
                ]
              },
              "page": {
                "type": "integer",
                "minimum": 0,
                "description": "Zero-based page, for multi-page files such as PDFs."
              },
              "x": {
                "type": "number",
                "minimum": 0,
                "maximum": 1,
                "description": "Fraction of the target's width."
              },
              "y": {
                "type": "number",
                "minimum": 0,
                "maximum": 1,
                "description": "Fraction of the target's height."
              }
            },
            "required": [
              "type",
              "x",
              "y"
            ],
            "additionalProperties": false,
            "description": "A point on the target, in fractions of its size. Only file and asset targets take points."
          }
        ],
        "description": "Where on the target to start the thread; omit or pass type none for the whole target. Point anchors work only on file and asset targets; site page and order threads must use none."
      },
      "Product": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "enum": [
              "product"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "archived",
              "draft"
            ],
            "description": "ProductStatus"
          },
          "type": {
            "type": "string"
          },
          "externalCheckoutUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          }
        },
        "required": [
          "object",
          "id",
          "title",
          "description",
          "slug",
          "status",
          "type",
          "externalCheckoutUrl"
        ]
      },
      "ProductInventory": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "enum": [
              "product_inventory"
            ]
          },
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "variants": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "optionValues": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "optionName": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 255,
                        "description": "Option name, e.g. \"Color\"."
                      },
                      "value": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 512,
                        "description": "Value within that option, e.g. \"Navy\"."
                      }
                    },
                    "required": [
                      "optionName",
                      "value"
                    ]
                  }
                },
                "trackInventory": {
                  "type": "boolean"
                },
                "available": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "continueSellingWhenOutOfStock": {
                  "type": "boolean"
                }
              },
              "required": [
                "optionValues",
                "trackInventory",
                "available",
                "continueSellingWhenOutOfStock"
              ]
            }
          }
        },
        "required": [
          "object",
          "productId",
          "variants"
        ]
      },
      "Task": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "enum": [
              "task"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "emoji": {
            "type": "string"
          },
          "rrule": {
            "type": "string"
          },
          "nextRunAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "pausedAt": {
            "type": [
              "string",
              "null"
            ],
            "description": "When the task was paused; paused tasks don't run."
          },
          "delivery": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "email": {
                "type": "object",
                "properties": {
                  "recipients": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "email"
                    },
                    "maxItems": 10,
                    "description": "TaskEmailRecipients"
                  }
                },
                "required": [
                  "recipients"
                ]
              }
            },
            "description": "Where each run's results go."
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "required": [
          "object",
          "id",
          "title",
          "emoji",
          "rrule",
          "nextRunAt",
          "pausedAt",
          "delivery",
          "createdAt",
          "updatedAt"
        ]
      }
    },
    "parameters": {}
  },
  "paths": {
    "/agent/sessions": {
      "post": {
        "operationId": "agent.sessionCreate",
        "summary": "Create an agent session",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "projectId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "prompt": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "required": [
                  "projectId",
                  "prompt"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Create an agent session",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "sessionId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "dashboardUrl": {
                      "type": "string",
                      "format": "uri"
                    }
                  },
                  "required": [
                    "sessionId",
                    "dashboardUrl"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/agent/sessions/{sessionId}": {
      "get": {
        "operationId": "agent.sessionStatus",
        "summary": "Get agent session status",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "sessionId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Get agent session status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "sessionId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "dashboardUrl": {
                      "type": "string",
                      "format": "uri"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "starting",
                        "running",
                        "completed",
                        "failed"
                      ]
                    },
                    "pendingInteractions": {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "permission"
                                ]
                              },
                              "response": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "choice"
                                    ]
                                  },
                                  "instruction": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "options": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "value": {
                                          "type": "string",
                                          "minLength": 1
                                        },
                                        "label": {
                                          "type": "string",
                                          "minLength": 1
                                        }
                                      },
                                      "required": [
                                        "value",
                                        "label"
                                      ],
                                      "additionalProperties": false
                                    },
                                    "minItems": 1
                                  }
                                },
                                "required": [
                                  "type",
                                  "options"
                                ],
                                "additionalProperties": false
                              },
                              "id": {
                                "type": "string",
                                "minLength": 1
                              },
                              "permission": {
                                "type": "string",
                                "minLength": 1
                              },
                              "patterns": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "metadata": {
                                "type": "object",
                                "additionalProperties": {}
                              }
                            },
                            "required": [
                              "type",
                              "response",
                              "id",
                              "permission",
                              "patterns",
                              "metadata"
                            ],
                            "description": "PublicPendingPermissionInteraction"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "question"
                                ]
                              },
                              "id": {
                                "type": "string",
                                "minLength": 1
                              },
                              "response": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "form"
                                    ]
                                  },
                                  "instruction": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "steps": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "prompt": {
                                          "type": "string",
                                          "minLength": 1
                                        },
                                        "header": {
                                          "type": [
                                            "string",
                                            "null"
                                          ]
                                        },
                                        "multiple": {
                                          "type": "boolean"
                                        },
                                        "allowCustom": {
                                          "type": "boolean",
                                          "description": "When true, any answer value not in options reaches the agent as the user's own text."
                                        },
                                        "options": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "value": {
                                                "type": "string",
                                                "description": "Send back exactly as returned to choose this option."
                                              },
                                              "label": {
                                                "type": "string",
                                                "minLength": 1
                                              },
                                              "description": {
                                                "type": [
                                                  "string",
                                                  "null"
                                                ]
                                              }
                                            },
                                            "required": [
                                              "value",
                                              "label",
                                              "description"
                                            ],
                                            "additionalProperties": false
                                          }
                                        }
                                      },
                                      "required": [
                                        "prompt",
                                        "header",
                                        "multiple",
                                        "allowCustom",
                                        "options"
                                      ],
                                      "additionalProperties": false
                                    },
                                    "minItems": 1
                                  }
                                },
                                "required": [
                                  "type",
                                  "instruction",
                                  "steps"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "required": [
                              "type",
                              "id",
                              "response"
                            ],
                            "additionalProperties": false,
                            "description": "PublicPendingQuestionInteraction"
                          }
                        ],
                        "description": "PublicPendingInteraction"
                      }
                    },
                    "error": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "latestMessage": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "role": {
                          "type": "string",
                          "enum": [
                            "assistant"
                          ]
                        },
                        "text": {
                          "type": "string"
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "completedAt": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "role",
                        "text",
                        "createdAt",
                        "completedAt"
                      ]
                    },
                    "latestTool": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string"
                        },
                        "title": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "name",
                        "status",
                        "title",
                        "at"
                      ]
                    },
                    "lastActivityAt": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "sessionId",
                    "dashboardUrl",
                    "status",
                    "pendingInteractions",
                    "error",
                    "latestMessage",
                    "latestTool",
                    "lastActivityAt"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/agent/sessions/{sessionId}/abort": {
      "post": {
        "operationId": "agent.sessionAbort",
        "summary": "Abort an agent session",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "sessionId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Abort an agent session",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "ok"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/agent/sessions/{sessionId}/interactions/{interactionId}/resolve": {
      "post": {
        "operationId": "agent.interactionResolve",
        "summary": "Resolve a pending agent interaction",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "sessionId",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "required": true,
            "name": "interactionId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "permission"
                        ]
                      },
                      "decision": {
                        "type": "string",
                        "enum": [
                          "approve",
                          "reject"
                        ]
                      }
                    },
                    "required": [
                      "type",
                      "decision"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "question"
                        ]
                      },
                      "answers": {
                        "type": "array",
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "maxLength": 16000
                          },
                          "maxItems": 100
                        },
                        "minItems": 1
                      }
                    },
                    "required": [
                      "type",
                      "answers"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "PublicResolveAgentInteractionBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Resolve a pending agent interaction",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "sessionId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "dashboardUrl": {
                      "type": "string",
                      "format": "uri"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "starting",
                        "running",
                        "completed",
                        "failed"
                      ]
                    },
                    "pendingInteractions": {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "permission"
                                ]
                              },
                              "response": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "choice"
                                    ]
                                  },
                                  "instruction": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "options": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "value": {
                                          "type": "string",
                                          "minLength": 1
                                        },
                                        "label": {
                                          "type": "string",
                                          "minLength": 1
                                        }
                                      },
                                      "required": [
                                        "value",
                                        "label"
                                      ],
                                      "additionalProperties": false
                                    },
                                    "minItems": 1
                                  }
                                },
                                "required": [
                                  "type",
                                  "options"
                                ],
                                "additionalProperties": false
                              },
                              "id": {
                                "type": "string",
                                "minLength": 1
                              },
                              "permission": {
                                "type": "string",
                                "minLength": 1
                              },
                              "patterns": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "metadata": {
                                "type": "object",
                                "additionalProperties": {}
                              }
                            },
                            "required": [
                              "type",
                              "response",
                              "id",
                              "permission",
                              "patterns",
                              "metadata"
                            ],
                            "description": "PublicPendingPermissionInteraction"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "question"
                                ]
                              },
                              "id": {
                                "type": "string",
                                "minLength": 1
                              },
                              "response": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "form"
                                    ]
                                  },
                                  "instruction": {
                                    "type": "string",
                                    "minLength": 1
                                  },
                                  "steps": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "prompt": {
                                          "type": "string",
                                          "minLength": 1
                                        },
                                        "header": {
                                          "type": [
                                            "string",
                                            "null"
                                          ]
                                        },
                                        "multiple": {
                                          "type": "boolean"
                                        },
                                        "allowCustom": {
                                          "type": "boolean",
                                          "description": "When true, any answer value not in options reaches the agent as the user's own text."
                                        },
                                        "options": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "value": {
                                                "type": "string",
                                                "description": "Send back exactly as returned to choose this option."
                                              },
                                              "label": {
                                                "type": "string",
                                                "minLength": 1
                                              },
                                              "description": {
                                                "type": [
                                                  "string",
                                                  "null"
                                                ]
                                              }
                                            },
                                            "required": [
                                              "value",
                                              "label",
                                              "description"
                                            ],
                                            "additionalProperties": false
                                          }
                                        }
                                      },
                                      "required": [
                                        "prompt",
                                        "header",
                                        "multiple",
                                        "allowCustom",
                                        "options"
                                      ],
                                      "additionalProperties": false
                                    },
                                    "minItems": 1
                                  }
                                },
                                "required": [
                                  "type",
                                  "instruction",
                                  "steps"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "required": [
                              "type",
                              "id",
                              "response"
                            ],
                            "additionalProperties": false,
                            "description": "PublicPendingQuestionInteraction"
                          }
                        ],
                        "description": "PublicPendingInteraction"
                      }
                    },
                    "error": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "latestMessage": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "role": {
                          "type": "string",
                          "enum": [
                            "assistant"
                          ]
                        },
                        "text": {
                          "type": "string"
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "completedAt": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "role",
                        "text",
                        "createdAt",
                        "completedAt"
                      ]
                    },
                    "latestTool": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string"
                        },
                        "title": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "at": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "name",
                        "status",
                        "title",
                        "at"
                      ]
                    },
                    "lastActivityAt": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "sessionId",
                    "dashboardUrl",
                    "status",
                    "pendingInteractions",
                    "error",
                    "latestMessage",
                    "latestTool",
                    "lastActivityAt"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/agent/sessions/{sessionId}/messages": {
      "post": {
        "operationId": "agent.sessionMessage",
        "summary": "Send a message to an agent session",
        "tags": [
          "Agent"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "sessionId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "prompt": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "required": [
                  "prompt"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Send a message to an agent session",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "sessionId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "dashboardUrl": {
                      "type": "string",
                      "format": "uri"
                    }
                  },
                  "required": [
                    "sessionId",
                    "dashboardUrl"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/analytics/query": {
      "post": {
        "operationId": "analytics.query",
        "summary": "Run a read-only analytics query for a project",
        "tags": [
          "Analytics"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "query"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Run a read-only analytics query for a project.\n\nRules:\n- Use SELECT or WITH queries only.\n- Do not add project or namespace filters; project scoping is enforced server-side.\n- Use session_attribution(since, until) for cross-project session and attributed revenue; stored computed metrics and page rollups are project-local.\n- Session revenue repeats across visited pages: deduplicate by subject for totals. Attributed revenue splits credit across eligible pageviews before domain filters.\n- Aggregate-state rollup columns must use the matching ClickHouse merge function, such as countMerge, uniqMerge, or sumMerge, and queries must group by selected dimensions.\n- Maximum execution time: 60 seconds.\n- Maximum result rows: 100000.\n\nQueryable tables, their columns, and the external metric views for connected integrations are listed at https://docs.replo.app/api-reference/analytics-tables.\n\nExternal metric views take named since/until dates (YYYY-MM-DD, inclusive); the views that also need settings JSON or another argument say so on that page. Credentials and project scope are injected server-side: never supply auth_token or project_id.\nIn MCP, call get_integration_status first for connection IDs, setup links, and supported views. Missing or misconfigured integrations can return zero rows: do not report that as measured zero activity. Use provider-specific tools for metric/property discovery and detailed provider-native reports.\nExternal results can be cached for up to eight hours, and report views cap provider results at 10,000 rows; narrow dates or dimensions if exceeded. Match currencies, reporting timezones, and attribution definitions before combining sources."
                  }
                },
                "required": [
                  "query"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Run a read-only analytics query for a project",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "rowCount": {
                      "type": "integer"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": {}
                      }
                    }
                  },
                  "required": [
                    "rowCount",
                    "data"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api-keys": {
      "post": {
        "operationId": "api-keys.create",
        "summary": "Mint a Replo API key with repository scopes. type user (the default) follows your live access to every project, for a coding agent such as Codex or Claude Code; type project reaches only projectIds, for CI or automation. Requires the api_keys.write scope when called with an API key.",
        "description": "**Beta** — this endpoint may change before general availability.",
        "x-beta": true,
        "tags": [
          "Api-keys"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "workspaceId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "user",
                      "project"
                    ],
                    "default": "user",
                    "description": "Which access the key carries. user (default): every project you can access, following your live workspace role; pick it for a coding agent working on your behalf, such as Codex or Claude Code. project: only the projects in projectIds; pick it for CI or automation that should touch named projects and nothing else."
                  },
                  "projectIds": {
                    "type": [
                      "array",
                      "null"
                    ],
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "minItems": 1,
                    "maxItems": 100,
                    "description": "Projects a project key can reach; you must be able to manage each one. Required for type project. Null for type user, which reaches every project you can access."
                  },
                  "scopes": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "repo.read",
                        "repo.write"
                      ]
                    },
                    "minItems": 1,
                    "description": "Repository scopes: repo.read to clone and pull, add repo.write to push."
                  },
                  "expiresInDays": {
                    "type": [
                      "integer",
                      "null"
                    ],
                    "minimum": 1,
                    "maximum": 366,
                    "description": "Days until the key expires (1–366). User keys must expire; null makes a project key last until revoked."
                  }
                },
                "required": [
                  "workspaceId",
                  "name",
                  "projectIds",
                  "scopes",
                  "expiresInDays"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Mint a Replo API key with repository scopes. type user (the default) follows your live access to every project, for a coding agent such as Codex or Claude Code; type project reaches only projectIds, for CI or automation. Requires the api_keys.write scope when called with an API key.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "api_key"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "name": {
                      "type": "string"
                    },
                    "tokenPrefix": {
                      "type": "string"
                    },
                    "workspaceId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "user",
                        "project"
                      ],
                      "description": "Which access the key carries. user (default): every project you can access, following your live workspace role; pick it for a coding agent working on your behalf, such as Codex or Claude Code. project: only the projects in projectIds; pick it for CI or automation that should touch named projects and nothing else."
                    },
                    "projectIds": {
                      "type": [
                        "array",
                        "null"
                      ],
                      "items": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "description": "Projects a project key can reach, or null for a user key, which follows your access to every project."
                    },
                    "scopes": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "repo.read",
                          "repo.write"
                        ]
                      }
                    },
                    "secret": {
                      "type": "string"
                    },
                    "createdAt": {
                      "type": "string"
                    },
                    "git": {
                      "type": "object",
                      "properties": {
                        "protocol": {
                          "type": "string",
                          "enum": [
                            "http",
                            "https"
                          ]
                        },
                        "host": {
                          "type": "string"
                        },
                        "username": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "protocol",
                        "host",
                        "username"
                      ],
                      "additionalProperties": false
                    },
                    "expiresAt": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Expiry timestamp, or null when the key never expires."
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "name",
                    "tokenPrefix",
                    "workspaceId",
                    "type",
                    "projectIds",
                    "scopes",
                    "secret",
                    "createdAt",
                    "git",
                    "expiresAt"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/assets": {
      "get": {
        "operationId": "assets.list",
        "summary": "List assets. Pass next_cursor back as cursor to read the next page; semantic searches return one ranked page, so next_cursor is always null when searchTerm is set.",
        "description": "**Beta** — this endpoint may change before general availability.",
        "x-beta": true,
        "tags": [
          "Assets"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "query"
          },
          {
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1
              },
              "maxItems": 16
            },
            "required": false,
            "name": "tags",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "required": false,
            "name": "searchTerm",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "image",
                "video",
                "font",
                "document",
                "audio"
              ],
              "description": "AssetType"
            },
            "required": false,
            "description": "AssetType",
            "name": "type",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "approved",
                "draft",
                "archived"
              ],
              "description": "AssetStatusFilter"
            },
            "required": false,
            "description": "AssetStatusFilter",
            "name": "status",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "required": false,
            "name": "label",
            "in": "query"
          },
          {
            "schema": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 100
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200,
              "description": "Opaque cursor from next_cursor. Ignored when searchTerm is set because semantic search returns one ranked page."
            },
            "required": false,
            "description": "Opaque cursor from next_cursor. Ignored when searchTerm is set because semantic search returns one ranked page.",
            "name": "cursor",
            "in": "query"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List assets. Pass next_cursor back as cursor to read the next page; semantic searches return one ranked page, so next_cursor is always null when searchTerm is set.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "list"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "object": {
                            "type": "string",
                            "enum": [
                              "asset"
                            ]
                          },
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "url": {
                            "type": "string"
                          },
                          "type": {
                            "type": "string",
                            "enum": [
                              "image",
                              "video",
                              "font",
                              "document",
                              "audio"
                            ],
                            "description": "AssetType"
                          },
                          "altText": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "label": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "fileExtension": {
                            "type": "string"
                          },
                          "sizeBytes": {
                            "type": "number"
                          },
                          "width": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "height": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "createdAt": {
                            "type": "string"
                          },
                          "updatedAt": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "object",
                          "id",
                          "name",
                          "url",
                          "type",
                          "altText",
                          "label",
                          "tags",
                          "fileExtension",
                          "sizeBytes",
                          "width",
                          "height",
                          "createdAt",
                          "updatedAt"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "data",
                    "has_more",
                    "next_cursor"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/assets/import": {
      "post": {
        "operationId": "assets.import",
        "summary": "Import an asset",
        "description": "**Beta** — this endpoint may change before general availability.",
        "x-beta": true,
        "tags": [
          "Assets"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "projectId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "assetFile": {
                    "type": "object",
                    "properties": {
                      "download_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "file_id": {
                        "type": "string",
                        "minLength": 1
                      },
                      "mime_type": {
                        "type": "string",
                        "minLength": 1
                      },
                      "file_name": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "required": [
                      "download_url",
                      "file_id"
                    ],
                    "additionalProperties": false
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  "altText": {
                    "type": "string",
                    "maxLength": 255
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    },
                    "maxItems": 32
                  },
                  "generateEmbedding": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "projectId"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Import an asset",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "total": {
                      "type": "number"
                    },
                    "successCount": {
                      "type": "number"
                    },
                    "failureCount": {
                      "type": "number"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "object",
                            "properties": {
                              "success": {
                                "type": "boolean",
                                "enum": [
                                  true
                                ]
                              },
                              "index": {
                                "type": "number"
                              },
                              "assetId": {
                                "type": "string"
                              },
                              "objectKey": {
                                "type": "string"
                              },
                              "isIndexed": {
                                "type": "boolean"
                              },
                              "kind": {
                                "type": "string",
                                "enum": [
                                  "image",
                                  "video",
                                  "font",
                                  "document",
                                  "audio"
                                ],
                                "description": "AssetType"
                              },
                              "name": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "mimeType": {
                                "type": "string"
                              },
                              "sizeBytes": {
                                "type": "number"
                              },
                              "tags": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "altText": {
                                "type": "string"
                              },
                              "embeddingText": {
                                "type": "string"
                              },
                              "label": {
                                "type": "string"
                              },
                              "embeddingGenerated": {
                                "type": "boolean"
                              }
                            },
                            "required": [
                              "success",
                              "index",
                              "objectKey",
                              "isIndexed",
                              "kind",
                              "name",
                              "url",
                              "mimeType",
                              "sizeBytes"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "success": {
                                "type": "boolean",
                                "enum": [
                                  false
                                ]
                              },
                              "index": {
                                "type": "number"
                              },
                              "error": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "success",
                              "index",
                              "error"
                            ]
                          }
                        ]
                      }
                    }
                  },
                  "required": [
                    "success",
                    "total",
                    "successCount",
                    "failureCount",
                    "results"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/brand": {
      "get": {
        "operationId": "brand.get",
        "summary": "Read the project's saved brand: business facts, overviews, colors, fonts, marks, personas, tagged context files, brand imagery, and imported Figma frames. A project without a brand returns the empty brand at version 0.",
        "description": "**Beta** — this endpoint may change before general availability.",
        "x-beta": true,
        "tags": [
          "Brand"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The project whose saved brand to read."
            },
            "required": true,
            "description": "The project whose saved brand to read.",
            "name": "projectId",
            "in": "query"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Read the project's saved brand: business facts, overviews, colors, fonts, marks, personas, tagged context files, brand imagery, and imported Figma frames. A project without a brand returns the empty brand at version 0.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "version": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "The brand's version; bumped on every write. Writes can't be made conditional on it, so when two callers write, the last one wins. 0 when the project has no brand yet (every field below is then empty)."
                    },
                    "business": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "maxLength": 256,
                          "description": "Brand name as the business writes it"
                        },
                        "about": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "maxLength": 512,
                          "description": "One-line description"
                        },
                        "audience": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "maxLength": 512,
                          "description": "Who buys, in one line"
                        },
                        "pricePoint": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "enum": [
                            "budget",
                            "mid-market",
                            "premium",
                            "luxury",
                            null
                          ],
                          "description": "Price positioning"
                        },
                        "businessModel": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "maxLength": 512,
                          "description": "How the business makes money, in a sentence (dtc, retail, subscription, wholesale, …); null when unknown"
                        },
                        "foundedYear": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "minimum": 1000,
                          "maximum": 9999,
                          "description": "Founding year, null when unknown"
                        },
                        "location": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "maxLength": 256,
                          "description": "\"City, Country\", null when unknown"
                        },
                        "voice": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "maxLength": 512,
                          "description": "How the brand sounds, in a sentence or a few adjectives (warm, direct); null when unknown"
                        },
                        "sourceUrl": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "maxLength": 1024,
                          "description": "Site the facts were extracted from"
                        }
                      },
                      "required": [
                        "name",
                        "about",
                        "audience",
                        "pricePoint",
                        "businessModel",
                        "foundedYear",
                        "location",
                        "voice",
                        "sourceUrl"
                      ],
                      "description": "Business facts."
                    },
                    "overviews": {
                      "type": "object",
                      "properties": {
                        "business": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "design": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "business",
                        "design"
                      ],
                      "description": "The team's business overview (what the business is, in depth) and design overview (how pages should look), as markdown; null until written. On any disagreement the facts above win. Edit with update_brand's setOverview op."
                    },
                    "category": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "path": {
                          "type": "string",
                          "description": "Sightglass path, e.g. apparel/activewear"
                        },
                        "name": {
                          "type": "string"
                        },
                        "source": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "enum": [
                            "agent",
                            "user",
                            "import",
                            null
                          ],
                          "description": "ProjectContextCategorySource"
                        },
                        "benchmarks": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "companiesInCategory": {
                              "type": "integer",
                              "minimum": 0
                            },
                            "medianActiveAds": {
                              "type": [
                                "number",
                                "null"
                              ]
                            },
                            "rankByActiveAds": {
                              "type": [
                                "integer",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "companiesInCategory",
                            "medianActiveAds",
                            "rankByActiveAds"
                          ],
                          "description": "Sightglass rollups for the node; null when not computed"
                        }
                      },
                      "required": [
                        "id",
                        "path",
                        "name",
                        "source",
                        "benchmarks"
                      ],
                      "description": "ReploOpencodeHarnessBrandingCategory"
                    },
                    "marks": {
                      "type": "object",
                      "properties": {
                        "logo": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "assetId": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "format": "uuid",
                              "description": "Null for a legacy URL-only mark"
                            },
                            "url": {
                              "type": "string"
                            },
                            "alt": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "assetId",
                            "url",
                            "alt"
                          ],
                          "description": "Primary logo asset"
                        },
                        "favicon": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "assetId": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "format": "uuid",
                              "description": "Null for a legacy URL-only mark"
                            },
                            "url": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "assetId",
                            "url"
                          ],
                          "description": "Favicon asset"
                        },
                        "logomark": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "assetId": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "format": "uuid",
                              "description": "Null for a legacy URL-only mark"
                            },
                            "url": {
                              "type": "string",
                              "description": "Served URL of the logomark"
                            }
                          },
                          "required": [
                            "assetId",
                            "url"
                          ],
                          "description": "Logomark asset: the icon-only symbol without text"
                        }
                      },
                      "required": [
                        "logo",
                        "favicon",
                        "logomark"
                      ],
                      "description": "Logo, logomark and favicon."
                    },
                    "colors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "key": {
                            "type": "string",
                            "maxLength": 64,
                            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$/u",
                            "description": "Stable slug key, e.g. action or gray-100"
                          },
                          "name": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128,
                            "description": "Editable label"
                          },
                          "hex": {
                            "type": "string",
                            "pattern": "^#[0-9A-Fa-f]{6}$/u",
                            "description": "#RRGGBB"
                          },
                          "category": {
                            "type": "string",
                            "enum": [
                              "brand",
                              "neutral"
                            ],
                            "description": "brand or neutral"
                          },
                          "roles": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "maxLength": 32
                            },
                            "description": "Semantic roles this color fills (primary, background, …); one color per role per context"
                          },
                          "usage": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "maxLength": 512,
                            "description": "Human and agent guidance"
                          },
                          "position": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Display order"
                          }
                        },
                        "required": [
                          "key",
                          "name",
                          "hex",
                          "category",
                          "roles",
                          "usage",
                          "position"
                        ],
                        "description": "ReploOpencodeHarnessBrandingColor"
                      },
                      "description": "Palette with roles; hex is authoritative."
                    },
                    "fonts": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "key": {
                            "type": "string",
                            "maxLength": 64,
                            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$/u",
                            "description": "Stable slug key, e.g. inter"
                          },
                          "family": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128,
                            "description": "Font family name"
                          },
                          "roles": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "maxLength": 32
                            },
                            "description": "heading, body, mono, …; one font per role per context"
                          },
                          "delivery": {
                            "type": "string",
                            "enum": [
                              "google-fonts",
                              "cdn",
                              "uploaded",
                              "system",
                              "unknown"
                            ],
                            "description": "How the font is served"
                          },
                          "license": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "maxLength": 64,
                            "description": "License name"
                          },
                          "usage": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "maxLength": 512,
                            "description": "Guidance"
                          },
                          "position": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "Display order"
                          },
                          "faces": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "weight": {
                                  "type": "integer",
                                  "minimum": 1,
                                  "maximum": 1000,
                                  "description": "1 to 1000"
                                },
                                "style": {
                                  "type": "string",
                                  "enum": [
                                    "normal",
                                    "italic"
                                  ],
                                  "description": "normal or italic"
                                },
                                "assetId": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "format": "uuid",
                                  "description": "Approved font asset holding the file; null for Google or system fonts"
                                },
                                "sourceUrl": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "maxLength": 1024,
                                  "description": "Where the face file came from"
                                },
                                "url": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "description": "Served URL of the face file when it is an asset"
                                }
                              },
                              "required": [
                                "weight",
                                "style",
                                "assetId",
                                "sourceUrl",
                                "url"
                              ]
                            },
                            "description": "Faces with their served URLs"
                          }
                        },
                        "required": [
                          "key",
                          "family",
                          "roles",
                          "delivery",
                          "license",
                          "usage",
                          "position",
                          "faces"
                        ],
                        "description": "ReploOpencodeHarnessBrandingFont"
                      },
                      "description": "Typefaces with faces and served URLs."
                    },
                    "personas": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "key": {
                            "type": "string",
                            "maxLength": 64,
                            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$/u",
                            "description": "Stable slug key, e.g. weeknight-cook"
                          },
                          "nickname": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 48,
                            "description": "Segment label, two to four words, e.g. The weeknight cook; never a person's name"
                          },
                          "headline": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 160,
                            "description": "Situation plus problem in the buyer's own words, one line"
                          },
                          "ageGte": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 120,
                            "description": "Youngest age in the range; null when unknown"
                          },
                          "ageLt": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "minimum": 1,
                            "maximum": 121,
                            "description": "Exclusive upper age: 35 to 54 is ageGte 35, ageLt 55; null for open-ended"
                          },
                          "awareness": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "enum": [
                              "unaware",
                              "problem",
                              "solution",
                              "product",
                              "most",
                              null
                            ],
                            "description": "Where this buyer starts"
                          },
                          "sharePercent": {
                            "type": [
                              "integer",
                              "null"
                            ],
                            "minimum": 0,
                            "maximum": 100,
                            "description": "Estimated share of buyers; the set need not sum to 100"
                          },
                          "quote": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "maxLength": 512,
                            "description": "In the customer's words, from the brand's reviews or copy"
                          },
                          "quoteSource": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "maxLength": 120,
                            "description": "Who said it, as the card attributes it: a first name or 'a verified review'"
                          },
                          "quoteSourceUrl": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "maxLength": 1024,
                            "format": "uri",
                            "description": "The page the quote came from"
                          },
                          "descriptionMarkdown": {
                            "type": "string",
                            "maxLength": 8192,
                            "description": "Markdown: ## Goals, ## Pains, ## Objections, ## Buying triggers; rendered as a document, never parsed"
                          },
                          "evidence": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "properties": {
                              "nickname": {
                                "type": "object",
                                "properties": {
                                  "value": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "reason": {
                                    "type": "string",
                                    "maxLength": 280
                                  }
                                },
                                "required": [
                                  "value",
                                  "reason"
                                ]
                              },
                              "headline": {
                                "type": "object",
                                "properties": {
                                  "value": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "reason": {
                                    "type": "string",
                                    "maxLength": 280
                                  }
                                },
                                "required": [
                                  "value",
                                  "reason"
                                ]
                              },
                              "ageGte": {
                                "type": "object",
                                "properties": {
                                  "value": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "reason": {
                                    "type": "string",
                                    "maxLength": 280
                                  }
                                },
                                "required": [
                                  "value",
                                  "reason"
                                ]
                              },
                              "ageLt": {
                                "type": "object",
                                "properties": {
                                  "value": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "reason": {
                                    "type": "string",
                                    "maxLength": 280
                                  }
                                },
                                "required": [
                                  "value",
                                  "reason"
                                ]
                              },
                              "awareness": {
                                "type": "object",
                                "properties": {
                                  "value": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "reason": {
                                    "type": "string",
                                    "maxLength": 280
                                  }
                                },
                                "required": [
                                  "value",
                                  "reason"
                                ]
                              },
                              "sharePercent": {
                                "type": "object",
                                "properties": {
                                  "value": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "reason": {
                                    "type": "string",
                                    "maxLength": 280
                                  }
                                },
                                "required": [
                                  "value",
                                  "reason"
                                ]
                              },
                              "quote": {
                                "type": "object",
                                "properties": {
                                  "value": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "number"
                                      },
                                      {
                                        "type": "null"
                                      }
                                    ]
                                  },
                                  "reason": {
                                    "type": "string",
                                    "maxLength": 280
                                  }
                                },
                                "required": [
                                  "value",
                                  "reason"
                                ]
                              }
                            },
                            "description": "Per typed field, the value generation produced and one sentence on where it came from; null for a persona a person added by hand."
                          },
                          "avatarPath": {
                            "type": "string",
                            "description": "Absolute sandbox path of the persona's avatar SVG (a brand-coloured creature, never a face), written with the brand; place it in 'who it's for' or segment-picker sections, never as a reviewer photo."
                          }
                        },
                        "required": [
                          "key",
                          "nickname",
                          "headline",
                          "ageGte",
                          "ageLt",
                          "awareness",
                          "sharePercent",
                          "quote",
                          "quoteSource",
                          "quoteSourceUrl",
                          "descriptionMarkdown",
                          "evidence",
                          "avatarPath"
                        ],
                        "description": "ReploOpencodeHarnessBrandingPersona"
                      },
                      "description": "Customer personas: nickname (a segment label, never a person's name), headline, age range (ageGte inclusive, ageLt exclusive), awareness stage, share of buyers, a verbatim quote with its source, descriptionMarkdown (goals, pains, objections, buying triggers), and evidence (per field, the generated value and where it came from). Empty until generated. Edit through update_brand's setPersona op."
                    },
                    "contextFiles": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "fileId": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "path": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Absolute sandbox path, e.g. /workspace/project/BUSINESS.md; null when missing or outside the caller's mounts"
                          },
                          "kind": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "enum": [
                              "file",
                              "folder",
                              null
                            ]
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "business",
                                "design",
                                "context"
                              ],
                              "description": "ProjectContextTag"
                            },
                            "description": "Brand tags the file carries, in vocabulary order"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "ok",
                              "missing",
                              "no-access"
                            ],
                            "description": "ProjectContextFileStatus"
                          }
                        },
                        "required": [
                          "fileId",
                          "path",
                          "kind",
                          "tags",
                          "status"
                        ],
                        "description": "ReploOpencodeHarnessBrandingContextFile"
                      },
                      "description": "Drive files a person or the agent tagged as brand context. Read one by its `fileId` with the file tools or the files API; `path` is where Replo's agent reads it. On any disagreement the facts in this result win; the files add voice and detail."
                    },
                    "imagery": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "url": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "altText": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "width": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "height": {
                            "type": [
                              "number",
                              "null"
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "url",
                          "name",
                          "altText",
                          "width",
                          "height"
                        ],
                        "description": "ReploOpencodeHarnessBrandingImage"
                      },
                      "description": "Brand Studio imagery: the merchant's own photos, newest first. The first choice for any page image; match a photo to a section by its name and altText."
                    },
                    "figmaDesigns": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "importId": {
                            "type": "string",
                            "description": "The Figma file key: the importId update_brand returned for this file"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "starting",
                              "running",
                              "completed",
                              "failed"
                            ],
                            "description": "running while the file imports, then completed or failed. A re-import keeps the earlier frames listed until it completes."
                          },
                          "error": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "On failed: why, and what to do next. Null otherwise."
                          },
                          "fileName": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Null until the file's first import completes"
                          },
                          "sourceUrl": {
                            "type": "string"
                          },
                          "folder": {
                            "type": "string",
                            "description": "Absolute path of the import's folder"
                          },
                          "folderId": {
                            "type": "string",
                            "format": "uuid",
                            "description": "The Drive id of the import's folder"
                          },
                          "styles": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Absolute path of `styles.json`: the colors and type the frames use, most used first"
                          },
                          "photos": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Absolute path of `photos.json`: each photo the frames show, by Figma imageRef, to its hosted copy in the project's assets. Use those URLs for the photos; they don't expire"
                          },
                          "frames": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "page": {
                                  "type": "string",
                                  "description": "The Figma page the frame is on"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "path": {
                                  "type": "string",
                                  "description": "Absolute path of the frame's PNG"
                                },
                                "text": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "description": "Absolute path of the frame's text layers: exact copy with font, size, weight and color"
                                },
                                "nodes": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "description": "Absolute path of Figma's node data for the frame at full depth: the document figma_get_file_nodes returns, layout and auto-layout included"
                                }
                              },
                              "required": [
                                "page",
                                "name",
                                "path",
                                "text",
                                "nodes"
                              ]
                            }
                          }
                        },
                        "required": [
                          "importId",
                          "status",
                          "error",
                          "fileName",
                          "sourceUrl",
                          "folder",
                          "folderId",
                          "styles",
                          "photos",
                          "frames"
                        ]
                      },
                      "description": "The brand's own Figma designs, imported in Branding or by update_brand with a Figma link: each frame as a PNG plus its text layers. An entry appears as soon as its import starts; read its files once status is completed. `folderId` is the import's Drive folder: list it and its subfolders, and read a frame's PNG or text layers, with the file tools or the files API. The paths are where Replo's agent reads them. Build to the frames' layout, section order, spacing, type sizes and colors, and take copy and products from the brand. Empty when no Figma file is imported."
                    },
                    "extraction": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "importId": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "The import's id, the one update_brand returned; null for an import started from signup or Home."
                        },
                        "url": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "The site the import reads"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "starting",
                            "running",
                            "completed",
                            "failed"
                          ],
                          "description": "starting, then running while it reads the site, then completed or failed. Poll with increasing delays while starting or running; once completed, the brand in this reply is the result."
                        },
                        "stage": {
                          "type": "string",
                          "enum": [
                            "pending",
                            "scraping",
                            "extracting",
                            "uploading",
                            "done",
                            "failed"
                          ],
                          "description": "Where the import is now: pending, scraping, extracting, uploading, then done or failed"
                        },
                        "error": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "On failed: why, and what to do next. Null otherwise."
                        },
                        "lastActivityAt": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "When the import last reported progress (ISO 8601)."
                        }
                      },
                      "required": [
                        "importId",
                        "url",
                        "status",
                        "stage",
                        "error",
                        "lastActivityAt"
                      ],
                      "description": "The latest website import. Null when none ran in the last 15 minutes, which doesn't mean the project never imported a site, and a failure's reason is gone by then. To follow an import update_brand started, poll until importId matches and status is completed or failed, instead of starting it again."
                    },
                    "object": {
                      "type": "string",
                      "enum": [
                        "brand"
                      ]
                    }
                  },
                  "required": [
                    "version",
                    "business",
                    "overviews",
                    "category",
                    "marks",
                    "colors",
                    "fonts",
                    "personas",
                    "contextFiles",
                    "imagery",
                    "figmaDesigns",
                    "extraction",
                    "object"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "brand.update",
        "summary": "Change the saved brand with ops applied in order, or import it from a public website or a Figma file with url. Every op is validated before anything is written: an invalid op returns status invalid with the issues and the op's expected shape, and nothing changes. An import returns at once with status running and an importId; GET /v1/brand reports it, under extraction for a website or figmaDesigns for a Figma file, until it is completed or failed. A Figma file needs Figma connected in Replo: without it the call returns action_required with a connectUrl for the user to connect it. Calls with url have a daily cap per project, whether or not they start an import; past it the call returns 429 until UTC midnight, and ops still work.",
        "description": "**Beta** — this endpoint may change before general availability.",
        "x-beta": true,
        "tags": [
          "Brand"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ops": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "op": {
                          "type": "string",
                          "enum": [
                            "setBusiness",
                            "setOverview",
                            "setColor",
                            "setFont",
                            "setPersona",
                            "setMarks",
                            "tagFile",
                            "untagFile"
                          ],
                          "description": "BrandingOpName"
                        },
                        "patch": {
                          "type": "object",
                          "additionalProperties": {},
                          "description": "setBusiness: the business fields to change."
                        },
                        "kind": {
                          "type": "string",
                          "enum": [
                            "business",
                            "design"
                          ],
                          "description": "setOverview: which overview."
                        },
                        "markdown": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "description": "setOverview: the whole overview as markdown; null clears it."
                        },
                        "key": {
                          "type": "string",
                          "description": "setColor, setFont, setPersona: the item's key."
                        },
                        "value": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "additionalProperties": {},
                          "description": "setColor, setFont, setPersona: the whole item; null deletes it."
                        },
                        "logoAssetId": {
                          "type": "string",
                          "description": "setMarks: asset id to use."
                        },
                        "faviconAssetId": {
                          "type": "string",
                          "description": "setMarks: asset id to use."
                        },
                        "logomarkAssetId": {
                          "type": "string",
                          "description": "setMarks: asset id to use."
                        },
                        "clearMarks": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "enum": [
                              "logo",
                              "favicon",
                              "logomark"
                            ],
                            "description": "BrandingMark"
                          },
                          "description": "setMarks: marks to remove."
                        },
                        "path": {
                          "type": "string",
                          "description": "tagFile, untagFile: the file's path."
                        },
                        "tag": {
                          "type": "string",
                          "enum": [
                            "business",
                            "design",
                            "context"
                          ],
                          "description": "tagFile, untagFile: context (the business and design overviews are setOverview, not files)."
                        },
                        "fileId": {
                          "type": "string",
                          "format": "uuid",
                          "description": "tagFile, untagFile: the file's id, from the brand's contextFiles or the file tools; or pass path as get_branding reports it. Tagging a file in someone's private home moves it to the team folder."
                        }
                      },
                      "required": [
                        "op"
                      ]
                    },
                    "minItems": 1,
                    "maxItems": 200,
                    "description": "Ops in order; fill only the fields your op uses. setColor value: { key, name, hex: \"#rrggbb\", category: \"brand\" | \"neutral\", roles: string[], usage: string | null, position: integer }. setFont value: { key, family, roles: string[], delivery: \"google-fonts\" | \"cdn\" | \"uploaded\" | \"system\" | \"unknown\", license: string | null, usage: string | null, position: integer, faces: [{ weight: 1-1000, style: \"normal\" | \"italic\", assetId: uuid | null, sourceUrl: string | null }] }. setBusiness patch: any of name, about, audience, pricePoint, businessModel, foundedYear, location, voice, sourceUrl. setOverview: kind \"business\" | \"design\" and markdown. setMarks: logoAssetId, faviconAssetId or logomarkAssetId; upload the image with upload_asset first and pass the asset id it returns. setPersona value: copy a persona from get_branding and change what you need; a persona nickname is a segment label, never a person's name. A refused op comes back with `expected`, the exact shape to resend. Pass ops or url, not both."
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "Import the brand from this public site instead of ops (add https:// if missing). Replo reads it on its servers into facts, palette, fonts, marks, brief, design notes and screenshots, and writes them by `mode`. Never restyles a site. A figma.com file link instead adds that file to the brand's designs (figmaDesigns: its frames, styles and photos); it takes no mode or parts, and needs Figma connected in Replo."
                  },
                  "mode": {
                    "type": "string",
                    "enum": [
                      "replace",
                      "swap",
                      "fill"
                    ],
                    "default": "replace",
                    "description": "With url: how the site lands on the brand. replace (default): the whole brand becomes the site's (\"make my brand from this site\"). swap: each part in `parts` becomes the site's in full, nothing else changes, the brand keeps its name (\"use their fonts\", \"take their logo and colors\"). fill: everything already set stays and the site fills only the gaps, blending field by field (\"fill in the rest from this site\"). Pick swap for another company's site, so its story never mixes into this brand."
                  },
                  "parts": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "facts",
                        "colors",
                        "fonts",
                        "logo",
                        "images"
                      ],
                      "description": "facts: business facts and category; colors: the palette; fonts: the type system; logo: logo, logomark and favicon; images: the site's photos into brand imagery"
                    },
                    "minItems": 1,
                    "description": "With url: the parts swap and fill take from the site, each written as the ops of its kind: facts → setBusiness and setOverview, colors → setColor, fonts → setFont, logo → setMarks; images adds the site's photos to brand imagery. Required for swap; on fill, omitted means all of them; refused with replace."
                  },
                  "projectId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "The project whose saved brand to change."
                  }
                },
                "required": [
                  "projectId"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Change the saved brand with ops applied in order, or import it from a public website or a Figma file with url. Every op is validated before anything is written: an invalid op returns status invalid with the issues and the op's expected shape, and nothing changes. An import returns at once with status running and an importId; GET /v1/brand reports it, under extraction for a website or figmaDesigns for a Figma file, until it is completed or failed. A Figma file needs Figma connected in Replo: without it the call returns action_required with a connectUrl for the user to connect it. Calls with url have a daily cap per project, whether or not they start an import; past it the call returns 429 until UTC midnight, and ops still work.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "applied",
                        "partial",
                        "invalid",
                        "running",
                        "failed",
                        "action_required"
                      ],
                      "description": "applied: every op was written. partial: the brand ops are live but some file ops were refused (see `message` and `files`). invalid: nothing was written (see `issues`). The rest answer a url import, which returns at once. running: the import started, one was already running, or a Figma file hasn't changed (`message` says there's nothing to wait for), and keeps going on Replo's servers; follow it with get_branding until `importId` is completed or failed (a website in extraction, a Figma file in figmaDesigns), instead of calling again. failed: the import could not start; `message` says why. action_required: the person has to connect Figma outside the chat first; `connectUrl` and `message` say what, and nothing started."
                    },
                    "version": {
                      "type": [
                        "integer",
                        "null"
                      ],
                      "description": "The brand's version after the write; it is live. Null when nothing on the brand was written: only file ops, or an import that did not finish."
                    },
                    "files": {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "object",
                            "properties": {
                              "status": {
                                "type": "string",
                                "enum": [
                                  "marked"
                                ]
                              },
                              "file": {
                                "type": "object",
                                "properties": {
                                  "fileId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "path": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "description": "Absolute sandbox path, e.g. /workspace/project/BUSINESS.md; null when missing or outside the caller's mounts"
                                  },
                                  "kind": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "enum": [
                                      "file",
                                      "folder",
                                      null
                                    ]
                                  },
                                  "tags": {
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "enum": [
                                        "business",
                                        "design",
                                        "context"
                                      ],
                                      "description": "ProjectContextTag"
                                    },
                                    "description": "Brand tags the file carries, in vocabulary order"
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "ok",
                                      "missing",
                                      "no-access"
                                    ],
                                    "description": "ProjectContextFileStatus"
                                  }
                                },
                                "required": [
                                  "fileId",
                                  "path",
                                  "kind",
                                  "tags",
                                  "status"
                                ],
                                "description": "The entry as get_branding now lists it under contextFiles."
                              },
                              "message": {
                                "type": "string",
                                "description": "One line for the user."
                              }
                            },
                            "required": [
                              "status",
                              "file",
                              "message"
                            ],
                            "description": "BrandingFileMarked"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "status": {
                                "type": "string",
                                "enum": [
                                  "unmarked"
                                ]
                              },
                              "fileId": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "tag": {
                                "type": "string",
                                "enum": [
                                  "business",
                                  "design",
                                  "context"
                                ],
                                "description": "ProjectContextTag"
                              },
                              "removed": {
                                "type": "boolean",
                                "description": "False when the file did not carry that tag; nothing changed."
                              },
                              "message": {
                                "type": "string",
                                "description": "One line for the user."
                              }
                            },
                            "required": [
                              "status",
                              "fileId",
                              "tag",
                              "removed",
                              "message"
                            ],
                            "description": "BrandingFileUnmarked"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "status": {
                                "type": "string",
                                "enum": [
                                  "not-found"
                                ]
                              },
                              "message": {
                                "type": "string",
                                "description": "What to do next."
                              }
                            },
                            "required": [
                              "status",
                              "message"
                            ],
                            "description": "BrandingFileNotFound"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "status": {
                                "type": "string",
                                "enum": [
                                  "invalid"
                                ]
                              },
                              "issues": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "path": {
                                      "type": "string",
                                      "description": "Which value, e.g. colors.action.hex"
                                    },
                                    "message": {
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "path",
                                    "message"
                                  ],
                                  "description": "ReploOpencodeHarnessBrandingIssue"
                                },
                                "description": "What the server refused; nothing was written."
                              },
                              "message": {
                                "type": "string",
                                "description": "What to do next."
                              }
                            },
                            "required": [
                              "status",
                              "issues",
                              "message"
                            ],
                            "description": "BrandingFileInvalid"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "status": {
                                "type": "string",
                                "enum": [
                                  "no-context"
                                ]
                              },
                              "message": {
                                "type": "string",
                                "description": "The project has no context rows yet; how to create them."
                              }
                            },
                            "required": [
                              "status",
                              "message"
                            ],
                            "description": "BrandingFileNoContext"
                          }
                        ],
                        "description": "BrandingFileResult"
                      },
                      "description": "One result per tagFile/untagFile op, in order."
                    },
                    "message": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "On partial: which file ops were refused and what to do next. On an import: the one line for the user. On a write while a website import runs: that a replace will overwrite it. Null otherwise."
                    },
                    "issues": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "path": {
                            "type": "string",
                            "description": "Which value, e.g. colors.action.hex"
                          },
                          "message": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "path",
                          "message"
                        ],
                        "description": "ReploOpencodeHarnessBrandingIssue"
                      },
                      "description": "On invalid: the values that were refused. Empty otherwise."
                    },
                    "expected": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "On invalid: the expected shape of the first refused op."
                    },
                    "importId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "On a running import: its id. A website's is the one get_branding's extraction reports; a Figma file's is its file key, the importId of its figmaDesigns entry. Null otherwise."
                    },
                    "dashboardUrl": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "On a running import: Branding, where the person can watch it. Null otherwise."
                    },
                    "connectUrl": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "On action_required: the link where the person connects Figma. Show it to them, and call update_brand again once they say they finished. Null otherwise."
                    },
                    "object": {
                      "type": "string",
                      "enum": [
                        "brand_update"
                      ]
                    }
                  },
                  "required": [
                    "status",
                    "version",
                    "files",
                    "message",
                    "issues",
                    "expected",
                    "importId",
                    "dashboardUrl",
                    "connectUrl",
                    "object"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/comment-threads": {
      "get": {
        "operationId": "commentThreads.list",
        "summary": "List the comment threads on one file, artifact, site or site page, order, or asset, with all their comments. Pass exactly one of fileId, folderId, siteId, orderId or assetId. Returns every matching thread in one page.",
        "tags": [
          "Comment-threads"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": false,
            "name": "fileId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "An .artifact folder: lists the threads on all its pages."
            },
            "required": false,
            "description": "An .artifact folder: lists the threads on all its pages.",
            "name": "folderId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": false,
            "name": "siteId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "With siteId, one page, matched exactly after the same normalization as create, so a concrete path doesn't match threads on its route pattern. Omit for the whole site."
            },
            "required": false,
            "description": "With siteId, one page, matched exactly after the same normalization as create, so a concrete path doesn't match threads on its route pattern. Omit for the whole site.",
            "name": "path",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "The locale prefix in path, if any."
            },
            "required": false,
            "description": "The locale prefix in path, if any.",
            "name": "locale",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": false,
            "name": "orderId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": false,
            "name": "assetId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "open",
                "resolved"
              ],
              "description": "CommentThreadStatus"
            },
            "required": false,
            "description": "CommentThreadStatus",
            "name": "status",
            "in": "query"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List the comment threads on one file, artifact, site or site page, order, or asset, with all their comments. Pass exactly one of fileId, folderId, siteId, orderId or assetId. Returns every matching thread in one page.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "list"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CommentThread"
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "data",
                    "has_more",
                    "next_cursor"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "commentThreads.create",
        "summary": "Start a comment thread on a file, site page, order, or asset. The comment is attributed to the API key's creator.",
        "tags": [
          "Comment-threads"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Client-generated thread id. Send the same id and commentId on a retry to get the existing thread back."
                  },
                  "commentId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Client-generated first-comment id. Required with id."
                  },
                  "target": {
                    "oneOf": [
                      {
                        "type": "object",
                        "properties": {
                          "kind": {
                            "type": "string",
                            "enum": [
                              "file"
                            ]
                          },
                          "fileId": {
                            "type": "string",
                            "format": "uuid"
                          }
                        },
                        "required": [
                          "kind",
                          "fileId"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "kind": {
                            "type": "string",
                            "enum": [
                              "sitePage"
                            ]
                          },
                          "siteId": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "url": {
                            "type": "string",
                            "minLength": 1,
                            "description": "The page path, URL or route pattern the comment is on, e.g. \"/about\" or \"/products/[handle]\". Stored without the locale prefix, and a route pattern without its [lang] segment."
                          },
                          "locale": {
                            "type": "string",
                            "description": "The locale prefix in url, if any."
                          }
                        },
                        "required": [
                          "kind",
                          "siteId",
                          "url"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "kind": {
                            "type": "string",
                            "enum": [
                              "order"
                            ]
                          },
                          "orderId": {
                            "type": "string",
                            "format": "uuid"
                          }
                        },
                        "required": [
                          "kind",
                          "orderId"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "kind": {
                            "type": "string",
                            "enum": [
                              "asset"
                            ]
                          },
                          "assetId": {
                            "type": "string",
                            "format": "uuid"
                          }
                        },
                        "required": [
                          "kind",
                          "assetId"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  },
                  "anchor": {
                    "$ref": "#/components/schemas/CommentAnchorInput"
                  },
                  "body": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Markdown (GFM) parsed as MDX. To mention someone, insert `<Mention data='<mentionable JSON>' />`. Expressions in braces, raw HTML and any other JSX are rejected, so escape a literal `{` or `<` with a backslash. Images must be hosted on assets.replocdn.com."
                  }
                },
                "required": [
                  "target",
                  "body"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Start a comment thread on a file, site page, order, or asset. The comment is attributed to the API key's creator.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentThread"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/comment-threads/{threadId}": {
      "get": {
        "operationId": "commentThreads.get",
        "summary": "Get a comment thread with all its comments.",
        "tags": [
          "Comment-threads"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "threadId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Get a comment thread with all its comments.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentThread"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "commentThreads.update",
        "summary": "Resolve or re-open a comment thread.",
        "tags": [
          "Comment-threads"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "threadId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "resolved": {
                    "type": "boolean",
                    "description": "False re-opens the thread."
                  }
                },
                "required": [
                  "resolved"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Resolve or re-open a comment thread.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommentThread"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/comment-threads/{threadId}/comments": {
      "post": {
        "operationId": "commentThreads.reply",
        "summary": "Reply to an open comment thread. Resolved threads must be re-opened first.",
        "tags": [
          "Comment-threads"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "threadId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Client-generated comment id; a retry with the same id is safe."
                  },
                  "body": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Markdown (GFM) parsed as MDX. To mention someone, insert `<Mention data='<mentionable JSON>' />`. Expressions in braces, raw HTML and any other JSX are rejected, so escape a literal `{` or `<` with a backslash. Images must be hosted on assets.replocdn.com."
                  }
                },
                "required": [
                  "body"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Reply to an open comment thread. Resolved threads must be re-opened first.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Comment"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/custom-domains": {
      "get": {
        "operationId": "customDomains.list",
        "summary": "List custom domains for a site",
        "tags": [
          "Custom-domains"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "siteId",
            "in": "query"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List custom domains for a site",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "list"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "object": {
                            "type": "string",
                            "enum": [
                              "custom_domain"
                            ]
                          },
                          "id": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "domain": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "pending",
                              "active",
                              "stale"
                            ]
                          },
                          "is_pending": {
                            "type": "boolean"
                          },
                          "is_stale": {
                            "type": "boolean"
                          },
                          "dns_instructions": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "root"
                                    ]
                                  },
                                  "records": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "type": "string"
                                        },
                                        "host": {
                                          "type": "string"
                                        },
                                        "value": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "type",
                                        "host",
                                        "value"
                                      ],
                                      "additionalProperties": false
                                    }
                                  },
                                  "verification_token": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "verification_token_expires_at": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  }
                                },
                                "required": [
                                  "type",
                                  "records",
                                  "verification_token",
                                  "verification_token_expires_at"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "subdomain"
                                    ]
                                  },
                                  "records": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "type": "string"
                                        },
                                        "host": {
                                          "type": "string"
                                        },
                                        "value": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "type",
                                        "host",
                                        "value"
                                      ],
                                      "additionalProperties": false
                                    }
                                  }
                                },
                                "required": [
                                  "type",
                                  "records"
                                ],
                                "additionalProperties": false
                              }
                            ]
                          }
                        },
                        "required": [
                          "object",
                          "id",
                          "domain",
                          "status",
                          "is_pending",
                          "is_stale",
                          "dns_instructions"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "data",
                    "has_more",
                    "next_cursor"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "customDomains.create",
        "summary": "Connect a custom domain to a site",
        "tags": [
          "Custom-domains"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "siteId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "domain": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 253,
                    "pattern": "^([a-z0-9]([a-z0-9-]*[a-z0-9])?\\.)+[a-z]{2,}$"
                  }
                },
                "required": [
                  "siteId",
                  "domain"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Connect a custom domain to a site",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "custom_domain"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "domain": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "pending",
                        "active",
                        "stale"
                      ]
                    },
                    "is_pending": {
                      "type": "boolean"
                    },
                    "is_stale": {
                      "type": "boolean"
                    },
                    "dns_instructions": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "root"
                              ]
                            },
                            "records": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string"
                                  },
                                  "host": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "type",
                                  "host",
                                  "value"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "verification_token": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "verification_token_expires_at": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "type",
                            "records",
                            "verification_token",
                            "verification_token_expires_at"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "subdomain"
                              ]
                            },
                            "records": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string"
                                  },
                                  "host": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "type",
                                  "host",
                                  "value"
                                ],
                                "additionalProperties": false
                              }
                            }
                          },
                          "required": [
                            "type",
                            "records"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "domain",
                    "status",
                    "is_pending",
                    "is_stale",
                    "dns_instructions"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/custom-domains/{customDomainId}": {
      "get": {
        "operationId": "customDomains.get",
        "summary": "Get a custom domain",
        "tags": [
          "Custom-domains"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "customDomainId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Get a custom domain",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "custom_domain"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "domain": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "pending",
                        "active",
                        "stale"
                      ]
                    },
                    "is_pending": {
                      "type": "boolean"
                    },
                    "is_stale": {
                      "type": "boolean"
                    },
                    "dns_instructions": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "root"
                              ]
                            },
                            "records": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string"
                                  },
                                  "host": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "type",
                                  "host",
                                  "value"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "verification_token": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "verification_token_expires_at": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "type",
                            "records",
                            "verification_token",
                            "verification_token_expires_at"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "subdomain"
                              ]
                            },
                            "records": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string"
                                  },
                                  "host": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "type",
                                  "host",
                                  "value"
                                ],
                                "additionalProperties": false
                              }
                            }
                          },
                          "required": [
                            "type",
                            "records"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "domain",
                    "status",
                    "is_pending",
                    "is_stale",
                    "dns_instructions"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "customDomains.delete",
        "summary": "Delete a custom domain",
        "tags": [
          "Custom-domains"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "customDomainId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Delete a custom domain",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "custom_domain"
                      ]
                    },
                    "id": {
                      "type": "string"
                    },
                    "deleted": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "deleted"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/custom-domains/{customDomainId}/verify": {
      "post": {
        "operationId": "customDomains.verify",
        "summary": "Check DNS and activate a pending custom domain. Returns the domain's current state; callers poll this endpoint until status is active, or equivalently until both is_pending and is_stale are false.",
        "tags": [
          "Custom-domains"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "customDomainId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Check DNS and activate a pending custom domain. Returns the domain's current state; callers poll this endpoint until status is active, or equivalently until both is_pending and is_stale are false.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "custom_domain"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "domain": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "pending",
                        "active",
                        "stale"
                      ]
                    },
                    "is_pending": {
                      "type": "boolean"
                    },
                    "is_stale": {
                      "type": "boolean"
                    },
                    "dns_instructions": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "root"
                              ]
                            },
                            "records": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string"
                                  },
                                  "host": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "type",
                                  "host",
                                  "value"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "verification_token": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "verification_token_expires_at": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "type",
                            "records",
                            "verification_token",
                            "verification_token_expires_at"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "subdomain"
                              ]
                            },
                            "records": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string"
                                  },
                                  "host": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "type",
                                  "host",
                                  "value"
                                ],
                                "additionalProperties": false
                              }
                            }
                          },
                          "required": [
                            "type",
                            "records"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "domain",
                    "status",
                    "is_pending",
                    "is_stale",
                    "dns_instructions"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/feedback/bugs": {
      "post": {
        "operationId": "feedback.reportBug",
        "summary": "Report a Replo bug",
        "tags": [
          "Feedback"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "Short headline describing the broken behavior."
                  },
                  "description": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 10000,
                    "description": "Attempted task, expected/actual behavior, impact, retries/workarounds, and recurrence. Distinguish reported from observed facts; mark unknowns without guessing severity or cause."
                  },
                  "reproSteps": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 10000,
                    "description": "Numbered reported or performed steps, labeled by source, with expected/actual behavior. State when unavailable; never invent reproduction."
                  },
                  "errorContext": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 10000
                  },
                  "projectId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Project ID from list_projects."
                  }
                },
                "required": [
                  "title",
                  "description",
                  "reproSteps",
                  "projectId"
                ],
                "additionalProperties": false,
                "description": "PublicReportBugInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Report a Replo bug",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "ID of the recorded feedback."
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "feature_request",
                        "bug_report"
                      ]
                    },
                    "status": {
                      "type": "string",
                      "description": "Lifecycle status of the feedback; starts as 'open'."
                    }
                  },
                  "required": [
                    "id",
                    "type",
                    "status"
                  ],
                  "description": "BedrockMcpProductFeedbackOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/feedback/feature-requests": {
      "post": {
        "operationId": "feedback.submitFeatureRequest",
        "summary": "Submit a Replo feature request",
        "tags": [
          "Feedback"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "Short headline for the feature request."
                  },
                  "description": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 10000,
                    "description": "Concise description of the requested Replo capability. Exclude conversation history, verbatim messages, message references, credentials, and unrelated personal or customer data."
                  },
                  "projectId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Project ID from list_projects."
                  }
                },
                "required": [
                  "title",
                  "description",
                  "projectId"
                ],
                "additionalProperties": false,
                "description": "PublicSubmitFeatureRequestInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Submit a Replo feature request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "ID of the recorded feedback."
                    },
                    "type": {
                      "type": "string",
                      "enum": [
                        "feature_request",
                        "bug_report"
                      ]
                    },
                    "status": {
                      "type": "string",
                      "description": "Lifecycle status of the feedback; starts as 'open'."
                    }
                  },
                  "required": [
                    "id",
                    "type",
                    "status"
                  ],
                  "description": "BedrockMcpProductFeedbackOutput"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/files": {
      "get": {
        "operationId": "files.list",
        "summary": "List documents in a project folder. Omit parentId for My Files.",
        "description": "**Beta** — this endpoint may change before general availability.",
        "x-beta": true,
        "tags": [
          "Files"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": false,
            "name": "parentId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "file",
                "folder"
              ]
            },
            "required": false,
            "name": "kind",
            "in": "query"
          },
          {
            "schema": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 100
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 2048
            },
            "required": false,
            "name": "cursor",
            "in": "query"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List documents in a project folder. Omit parentId for My Files.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "list"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "object": {
                            "type": "string",
                            "enum": [
                              "file"
                            ]
                          },
                          "id": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "projectId": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "parentId": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string"
                          },
                          "kind": {
                            "type": "string",
                            "enum": [
                              "file",
                              "folder"
                            ]
                          },
                          "sizeBytes": {
                            "type": [
                              "number",
                              "null"
                            ],
                            "minimum": 0
                          },
                          "contentType": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "createdAt": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "updatedAt": {
                            "type": "string",
                            "format": "date-time"
                          }
                        },
                        "required": [
                          "object",
                          "id",
                          "projectId",
                          "parentId",
                          "name",
                          "kind",
                          "sizeBytes",
                          "contentType",
                          "createdAt",
                          "updatedAt"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "data",
                    "has_more",
                    "next_cursor"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "files.create",
        "summary": "Create a folder or store up to 10 MiB of file content. Asset sources copy without deleting the asset. Name conflicts never overwrite.",
        "description": "**Beta** — this endpoint may change before general availability.",
        "x-beta": true,
        "tags": [
          "Files"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "projectId": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "parentId": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "format": "uuid"
                      },
                      "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 255
                      },
                      "kind": {
                        "type": "string",
                        "enum": [
                          "folder"
                        ]
                      }
                    },
                    "required": [
                      "projectId",
                      "name",
                      "kind"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "projectId": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "parentId": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "format": "uuid"
                      },
                      "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 255
                      },
                      "kind": {
                        "type": "string",
                        "enum": [
                          "file"
                        ]
                      },
                      "source": {
                        "oneOf": [
                          {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "text"
                                ]
                              },
                              "text": {
                                "type": "string"
                              },
                              "contentType": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                              }
                            },
                            "required": [
                              "type",
                              "text"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "base64"
                                ]
                              },
                              "dataBase64": {
                                "type": "string"
                              },
                              "contentType": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255
                              }
                            },
                            "required": [
                              "type",
                              "dataBase64",
                              "contentType"
                            ],
                            "additionalProperties": false
                          },
                          {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "asset"
                                ]
                              },
                              "assetId": {
                                "type": "string",
                                "format": "uuid"
                              }
                            },
                            "required": [
                              "type",
                              "assetId"
                            ],
                            "additionalProperties": false
                          }
                        ]
                      }
                    },
                    "required": [
                      "projectId",
                      "name",
                      "kind",
                      "source"
                    ],
                    "additionalProperties": false
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create a folder or store up to 10 MiB of file content. Asset sources copy without deleting the asset. Name conflicts never overwrite.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "file"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "projectId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "parentId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uuid"
                    },
                    "name": {
                      "type": "string"
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "file",
                        "folder"
                      ]
                    },
                    "sizeBytes": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0
                    },
                    "contentType": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "createdAt": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "updatedAt": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "projectId",
                    "parentId",
                    "name",
                    "kind",
                    "sizeBytes",
                    "contentType",
                    "createdAt",
                    "updatedAt"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/files/{fileId}": {
      "get": {
        "operationId": "files.get",
        "summary": "Retrieve file or folder metadata.",
        "description": "**Beta** — this endpoint may change before general availability.",
        "x-beta": true,
        "tags": [
          "Files"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "fileId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieve file or folder metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "file"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "projectId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "parentId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uuid"
                    },
                    "name": {
                      "type": "string"
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "file",
                        "folder"
                      ]
                    },
                    "sizeBytes": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0
                    },
                    "contentType": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "createdAt": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "updatedAt": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "projectId",
                    "parentId",
                    "name",
                    "kind",
                    "sizeBytes",
                    "contentType",
                    "createdAt",
                    "updatedAt"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "files.update",
        "summary": "Rename or move an entry within its project. A null parentId moves to My Files. Name conflicts never overwrite.",
        "description": "**Beta** — this endpoint may change before general availability.",
        "x-beta": true,
        "tags": [
          "Files"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "fileId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  "parentId": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uuid"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Rename or move an entry within its project. A null parentId moves to My Files. Name conflicts never overwrite.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "file"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "projectId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "parentId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uuid"
                    },
                    "name": {
                      "type": "string"
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "file",
                        "folder"
                      ]
                    },
                    "sizeBytes": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "minimum": 0
                    },
                    "contentType": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "createdAt": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "updatedAt": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "projectId",
                    "parentId",
                    "name",
                    "kind",
                    "sizeBytes",
                    "contentType",
                    "createdAt",
                    "updatedAt"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/files/{fileId}/content": {
      "get": {
        "operationId": "files.content",
        "summary": "Read complete small UTF-8 documents or get a download URL valid for 15 minutes.",
        "description": "**Beta** — this endpoint may change before general availability.",
        "x-beta": true,
        "tags": [
          "Files"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "fileId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Read complete small UTF-8 documents or get a download URL valid for 15 minutes.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "file_content"
                      ]
                    },
                    "fileId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "content": {
                      "oneOf": [
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "text"
                              ]
                            },
                            "text": {
                              "type": "string"
                            },
                            "contentType": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "type",
                            "text",
                            "contentType"
                          ]
                        },
                        {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "download"
                              ]
                            },
                            "url": {
                              "type": "string",
                              "format": "uri"
                            },
                            "expiresAt": {
                              "type": "string",
                              "format": "date-time"
                            },
                            "contentType": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "type",
                            "url",
                            "expiresAt",
                            "contentType"
                          ]
                        }
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "fileId",
                    "content"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/files/{fileId}/sharing": {
      "get": {
        "operationId": "files.getSharing",
        "summary": "List who can open a file: its owner, team, link, and people access, plus access inherited from parent folders. Owner or workspace admin only.",
        "description": "**Beta** — this endpoint may change before general availability.",
        "x-beta": true,
        "tags": [
          "Files"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "fileId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List who can open a file: its owner, team, link, and people access, plus access inherited from parent folders. Owner or workspace admin only.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "file_sharing"
                      ]
                    },
                    "fileId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "owner": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "email": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "name": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "email",
                        "name"
                      ]
                    },
                    "access": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "to": {
                            "type": "string",
                            "description": "\"team\", \"link\", or a person's email."
                          },
                          "role": {
                            "type": "string",
                            "enum": [
                              "viewer",
                              "commenter",
                              "editor"
                            ],
                            "description": "AgentFileRole"
                          }
                        },
                        "required": [
                          "to",
                          "role"
                        ]
                      }
                    },
                    "inherited": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "to": {
                            "type": "string",
                            "description": "\"team\", \"link\", or a person's email."
                          },
                          "role": {
                            "type": "string",
                            "enum": [
                              "owner",
                              "editor",
                              "commenter",
                              "viewer"
                            ],
                            "description": "AgentFileAccessRole"
                          },
                          "folderName": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Null when the caller cannot open that folder."
                          }
                        },
                        "required": [
                          "to",
                          "role",
                          "folderName"
                        ]
                      },
                      "description": "Access granted on a parent folder. Change it on that folder, not here."
                    },
                    "artifactUrl": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri",
                      "description": "The viewer link for an artifact; null for other files."
                    }
                  },
                  "required": [
                    "object",
                    "fileId",
                    "owner",
                    "access",
                    "inherited",
                    "artifactUrl"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "files.setSharing",
        "summary": "Set access for the team, the link, or project members by email, all at once. A null role removes access given on this file; inherited folder access stays and audiences not listed keep theirs. Owner or workspace admin only.",
        "description": "**Beta** — this endpoint may change before general availability.",
        "x-beta": true,
        "tags": [
          "Files"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "fileId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "access": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "to": {
                              "type": "string",
                              "enum": [
                                "team"
                              ],
                              "description": "Everyone who can open the file's project."
                            },
                            "role": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "enum": [
                                "viewer",
                                "commenter",
                                "editor",
                                null
                              ],
                              "description": "The access to give; null removes this audience's access."
                            }
                          },
                          "required": [
                            "to",
                            "role"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "to": {
                              "type": "string",
                              "enum": [
                                "link"
                              ],
                              "description": "Anyone with the link, signed in or not. This publishes the file."
                            },
                            "role": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "enum": [
                                "viewer",
                                "commenter",
                                null
                              ],
                              "description": "viewer or commenter; null turns the link off."
                            }
                          },
                          "required": [
                            "to",
                            "role"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "object",
                          "properties": {
                            "to": {
                              "type": "string",
                              "format": "email",
                              "description": "The email of a person who can already open the project."
                            },
                            "role": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "enum": [
                                "viewer",
                                "commenter",
                                "editor",
                                null
                              ],
                              "description": "The access to give; null removes this audience's access."
                            }
                          },
                          "required": [
                            "to",
                            "role"
                          ],
                          "additionalProperties": false
                        }
                      ],
                      "description": "FileAccessEntry"
                    },
                    "minItems": 1,
                    "maxItems": 50,
                    "description": "Access to set. Audiences not listed keep their current access. Each audience or email appears once."
                  }
                },
                "required": [
                  "access"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Set access for the team, the link, or project members by email, all at once. A null role removes access given on this file; inherited folder access stays and audiences not listed keep theirs. Owner or workspace admin only.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "file_sharing"
                      ]
                    },
                    "fileId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "owner": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "email": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "name": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "email",
                        "name"
                      ]
                    },
                    "access": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "to": {
                            "type": "string",
                            "description": "\"team\", \"link\", or a person's email."
                          },
                          "role": {
                            "type": "string",
                            "enum": [
                              "viewer",
                              "commenter",
                              "editor"
                            ],
                            "description": "AgentFileRole"
                          }
                        },
                        "required": [
                          "to",
                          "role"
                        ]
                      }
                    },
                    "inherited": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "to": {
                            "type": "string",
                            "description": "\"team\", \"link\", or a person's email."
                          },
                          "role": {
                            "type": "string",
                            "enum": [
                              "owner",
                              "editor",
                              "commenter",
                              "viewer"
                            ],
                            "description": "AgentFileAccessRole"
                          },
                          "folderName": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Null when the caller cannot open that folder."
                          }
                        },
                        "required": [
                          "to",
                          "role",
                          "folderName"
                        ]
                      },
                      "description": "Access granted on a parent folder. Change it on that folder, not here."
                    },
                    "artifactUrl": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uri",
                      "description": "The viewer link for an artifact; null for other files."
                    }
                  },
                  "required": [
                    "object",
                    "fileId",
                    "owner",
                    "access",
                    "inherited",
                    "artifactUrl"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/insights-reports": {
      "get": {
        "operationId": "insightsReports.list",
        "summary": "List accessible Insights reports",
        "tags": [
          "InsightsReports"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "maxLength": 200,
              "description": "Case-insensitive report filename search."
            },
            "required": false,
            "description": "Case-insensitive report filename search.",
            "name": "search",
            "in": "query"
          },
          {
            "schema": {
              "type": [
                "integer",
                "null"
              ],
              "minimum": 0,
              "default": 0
            },
            "required": false,
            "name": "offset",
            "in": "query"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 25
            },
            "required": false,
            "name": "limit",
            "in": "query"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List accessible Insights reports",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "url": {
                            "type": "string"
                          },
                          "updatedAt": {
                            "type": "string"
                          },
                          "role": {
                            "type": "string"
                          },
                          "valid": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "title",
                          "url",
                          "updatedAt",
                          "role",
                          "valid"
                        ]
                      }
                    },
                    "nextOffset": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "data",
                    "nextOffset"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/insights-reports/{reportId}": {
      "get": {
        "operationId": "insightsReports.get",
        "summary": "Read an Insights report definition and defaults",
        "tags": [
          "InsightsReports"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Report file ID from list_insights_reports, or the final UUID in its Insights URL."
            },
            "required": true,
            "description": "Report file ID from list_insights_reports, or the final UUID in its Insights URL.",
            "name": "reportId",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "query"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Read an Insights report definition and defaults",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "name": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string"
                    },
                    "updatedAt": {
                      "type": "string"
                    },
                    "role": {
                      "type": "string"
                    },
                    "valid": {
                      "type": "boolean"
                    },
                    "document": {
                      "type": "object",
                      "additionalProperties": {},
                      "description": "The validated v2 Insights document, including body, named queries, formulas, and scope defaults."
                    },
                    "queries": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "object",
                        "properties": {
                          "sql": {
                            "type": "string"
                          },
                          "datasets": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "enum": [
                                "pixel",
                                "triple-whale",
                                "contentsquare",
                                "mixpanel",
                                "lifetimely",
                                "faire",
                                "alia",
                                "intelligems",
                                "meta-marketing-api",
                                "roi",
                                "shopify",
                                "google-analytics",
                                "google-search-console"
                              ]
                            }
                          }
                        },
                        "required": [
                          "sql",
                          "datasets"
                        ]
                      }
                    },
                    "defaultScope": {
                      "type": "object",
                      "properties": {
                        "dateRange": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "presetId": {
                              "type": "string",
                              "enum": [
                                "last_7_days",
                                "last_14_days",
                                "last_30_days",
                                "last_90_days",
                                "last_16_months",
                                "this_week",
                                "last_week",
                                "this_month",
                                "last_month",
                                "year_to_date",
                                "custom"
                              ]
                            },
                            "since": {
                              "type": "string"
                            },
                            "until": {
                              "type": "string"
                            },
                            "comparison": {
                              "type": "string",
                              "enum": [
                                "previous_period",
                                "previous_year",
                                "none"
                              ]
                            }
                          },
                          "required": [
                            "presetId",
                            "since",
                            "until",
                            "comparison"
                          ]
                        },
                        "filters": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "fieldKey": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              },
                              "op": {
                                "type": "string",
                                "enum": [
                                  "equals",
                                  "notEquals",
                                  "in",
                                  "notIn",
                                  "contains",
                                  "notContains",
                                  "startsWith",
                                  "isSet",
                                  "isNotSet",
                                  "greaterThan",
                                  "greaterThanOrEqual",
                                  "lessThan",
                                  "lessThanOrEqual"
                                ]
                              },
                              "value": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  },
                                  {
                                    "type": "array",
                                    "items": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "number"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "isProjectDefault": {
                                "type": "boolean",
                                "enum": [
                                  true
                                ],
                                "description": "Marks an automatically seeded project domain, not a viewer selection."
                              }
                            },
                            "required": [
                              "fieldKey",
                              "op"
                            ]
                          },
                          "maxItems": 20,
                          "default": []
                        },
                        "breakdown": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "fieldKey": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 120
                            },
                            "limit": {
                              "type": "integer",
                              "exclusiveMinimum": 0,
                              "maximum": 200
                            }
                          },
                          "required": [
                            "fieldKey"
                          ]
                        }
                      },
                      "required": [
                        "dateRange",
                        "breakdown"
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "title",
                    "url",
                    "updatedAt",
                    "role",
                    "valid",
                    "document",
                    "queries",
                    "defaultScope"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/insights-reports/{reportId}/query": {
      "post": {
        "operationId": "insightsReports.query",
        "summary": "Run saved Insights report queries",
        "tags": [
          "InsightsReports"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Report file ID from list_insights_reports, or the final UUID in its Insights URL."
            },
            "required": true,
            "description": "Report file ID from list_insights_reports, or the final UUID in its Insights URL.",
            "name": "reportId",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "query"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "queryIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    },
                    "minItems": 1,
                    "maxItems": 30,
                    "description": "Query IDs from get_insights_report. Omit to run all queries (at most 30 per call)."
                  },
                  "scope": {
                    "type": "object",
                    "properties": {
                      "filters": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "fieldKey": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 120
                            },
                            "op": {
                              "type": "string",
                              "enum": [
                                "equals",
                                "notEquals",
                                "in",
                                "notIn",
                                "contains",
                                "notContains",
                                "startsWith",
                                "isSet",
                                "isNotSet",
                                "greaterThan",
                                "greaterThanOrEqual",
                                "lessThan",
                                "lessThanOrEqual"
                              ]
                            },
                            "value": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "boolean"
                                },
                                {
                                  "type": "array",
                                  "items": {
                                    "anyOf": [
                                      {
                                        "type": "string"
                                      },
                                      {
                                        "type": "number"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "isProjectDefault": {
                              "type": "boolean",
                              "enum": [
                                true
                              ],
                              "description": "Marks an automatically seeded project domain, not a viewer selection."
                            }
                          },
                          "required": [
                            "fieldKey",
                            "op"
                          ]
                        },
                        "maxItems": 20
                      },
                      "breakdown": {
                        "type": [
                          "object",
                          "null"
                        ],
                        "properties": {
                          "fieldKey": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 120
                          },
                          "limit": {
                            "type": "integer",
                            "exclusiveMinimum": 0,
                            "maximum": 200
                          }
                        },
                        "required": [
                          "fieldKey"
                        ]
                      },
                      "dateRange": {
                        "type": [
                          "object",
                          "null"
                        ],
                        "properties": {
                          "presetId": {
                            "type": "string",
                            "enum": [
                              "last_7_days",
                              "last_14_days",
                              "last_30_days",
                              "last_90_days",
                              "last_16_months",
                              "this_week",
                              "last_week",
                              "this_month",
                              "last_month",
                              "year_to_date",
                              "custom"
                            ]
                          },
                          "since": {
                            "type": "string",
                            "format": "date"
                          },
                          "until": {
                            "type": "string",
                            "format": "date"
                          },
                          "comparison": {
                            "type": "string",
                            "enum": [
                              "previous_period",
                              "previous_year",
                              "none"
                            ]
                          }
                        },
                        "required": [
                          "presetId",
                          "since",
                          "until",
                          "comparison"
                        ]
                      }
                    },
                    "additionalProperties": false,
                    "description": "Override selected report defaults. Filters replace the default filter list; omitted fields retain the report's defaults."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Run saved Insights report queries",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "reportId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "reportUpdatedAt": {
                      "type": "string"
                    },
                    "queriedAt": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "scope": {
                      "type": "object",
                      "properties": {
                        "dateRange": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "presetId": {
                              "type": "string",
                              "enum": [
                                "last_7_days",
                                "last_14_days",
                                "last_30_days",
                                "last_90_days",
                                "last_16_months",
                                "this_week",
                                "last_week",
                                "this_month",
                                "last_month",
                                "year_to_date",
                                "custom"
                              ]
                            },
                            "since": {
                              "type": "string"
                            },
                            "until": {
                              "type": "string"
                            },
                            "comparison": {
                              "type": "string",
                              "enum": [
                                "previous_period",
                                "previous_year",
                                "none"
                              ]
                            }
                          },
                          "required": [
                            "presetId",
                            "since",
                            "until",
                            "comparison"
                          ]
                        },
                        "filters": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "fieldKey": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 120
                              },
                              "op": {
                                "type": "string",
                                "enum": [
                                  "equals",
                                  "notEquals",
                                  "in",
                                  "notIn",
                                  "contains",
                                  "notContains",
                                  "startsWith",
                                  "isSet",
                                  "isNotSet",
                                  "greaterThan",
                                  "greaterThanOrEqual",
                                  "lessThan",
                                  "lessThanOrEqual"
                                ]
                              },
                              "value": {
                                "anyOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "number"
                                  },
                                  {
                                    "type": "boolean"
                                  },
                                  {
                                    "type": "array",
                                    "items": {
                                      "anyOf": [
                                        {
                                          "type": "string"
                                        },
                                        {
                                          "type": "number"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "type": "null"
                                  }
                                ]
                              },
                              "isProjectDefault": {
                                "type": "boolean",
                                "enum": [
                                  true
                                ],
                                "description": "Marks an automatically seeded project domain, not a viewer selection."
                              }
                            },
                            "required": [
                              "fieldKey",
                              "op"
                            ]
                          },
                          "maxItems": 20,
                          "default": []
                        },
                        "breakdown": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "fieldKey": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 120
                            },
                            "limit": {
                              "type": "integer",
                              "exclusiveMinimum": 0,
                              "maximum": 200
                            }
                          },
                          "required": [
                            "fieldKey"
                          ]
                        }
                      },
                      "required": [
                        "dateRange",
                        "breakdown"
                      ]
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "oneOf": [
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "success"
                                ]
                              },
                              "sql": {
                                "type": "string"
                              },
                              "datasets": {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "pixel",
                                    "triple-whale",
                                    "contentsquare",
                                    "mixpanel",
                                    "lifetimely",
                                    "faire",
                                    "alia",
                                    "intelligems",
                                    "meta-marketing-api",
                                    "roi",
                                    "shopify",
                                    "google-analytics",
                                    "google-search-console"
                                  ]
                                }
                              },
                              "rowCount": {
                                "type": "integer"
                              },
                              "data": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "additionalProperties": {}
                                }
                              }
                            },
                            "required": [
                              "id",
                              "status",
                              "sql",
                              "datasets",
                              "rowCount",
                              "data"
                            ]
                          },
                          {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "error"
                                ]
                              },
                              "error": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "status",
                              "error"
                            ]
                          }
                        ]
                      }
                    },
                    "warnings": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "reportId",
                    "reportUpdatedAt",
                    "queriedAt",
                    "scope",
                    "results",
                    "warnings"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/orders": {
      "get": {
        "operationId": "orders.list",
        "summary": "List orders",
        "description": "**Beta** — this endpoint may change before general availability.",
        "x-beta": true,
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "required": false,
            "name": "cursor",
            "in": "query"
          },
          {
            "schema": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 100
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "pending",
                "paid",
                "failed",
                "refunded",
                "partiallyRefunded"
              ],
              "description": "OrderFinancialStatus"
            },
            "required": false,
            "description": "OrderFinancialStatus",
            "name": "financialStatus",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "format": "email"
            },
            "required": false,
            "name": "customerEmail",
            "in": "query"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List orders",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "list"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "createdAt": {
                            "type": "string"
                          },
                          "financialStatus": {
                            "type": "string"
                          },
                          "fulfillmentStatus": {
                            "type": "string",
                            "enum": [
                              "unfulfilled",
                              "partial",
                              "fulfilled",
                              "cancelled"
                            ],
                            "description": "OrderItemFulfillmentStatus"
                          },
                          "totalAmount": {
                            "type": "integer",
                            "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                          },
                          "currencyCode": {
                            "type": "string"
                          },
                          "reconciliationReason": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "items": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "variantId": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "sku": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "variantTitleSnapshot": {
                                  "type": "string"
                                },
                                "imageUrlSnapshot": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "optionValuesSnapshot": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string"
                                      },
                                      "value": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "name",
                                      "value"
                                    ],
                                    "description": "OrderItemOptionValue"
                                  },
                                  "description": "OrderItemOptionValuesSnapshot"
                                },
                                "quantity": {
                                  "type": "integer"
                                },
                                "unitPrice": {
                                  "type": "integer",
                                  "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                                },
                                "totalPrice": {
                                  "type": "integer",
                                  "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                                }
                              },
                              "required": [
                                "id",
                                "variantId",
                                "sku",
                                "variantTitleSnapshot",
                                "imageUrlSnapshot",
                                "optionValuesSnapshot",
                                "quantity",
                                "unitPrice",
                                "totalPrice"
                              ],
                              "description": "BedrockOrderItem"
                            }
                          },
                          "fulfillmentOrders": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "orderId": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "assignedLocationId": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "open",
                                    "inProgress",
                                    "closed",
                                    "cancelled",
                                    "onHold",
                                    "incomplete",
                                    "scheduled"
                                  ],
                                  "description": "BedrockFulfillmentOrderStatus"
                                },
                                "requestStatus": {
                                  "type": "string",
                                  "enum": [
                                    "unsubmitted",
                                    "submitted",
                                    "accepted",
                                    "rejected",
                                    "cancellationRequested",
                                    "cancellationAccepted",
                                    "cancellationRejected",
                                    "closed"
                                  ],
                                  "description": "BedrockFulfillmentOrderRequestStatus"
                                },
                                "reviewReason": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "lineItems": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "format": "uuid"
                                      },
                                      "orderItemId": {
                                        "type": "string",
                                        "format": "uuid"
                                      },
                                      "totalQuantity": {
                                        "type": "integer"
                                      },
                                      "remainingQuantity": {
                                        "type": "integer"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "orderItemId",
                                      "totalQuantity",
                                      "remainingQuantity"
                                    ],
                                    "description": "BedrockFulfillmentOrderLineItem"
                                  }
                                },
                                "fulfillments": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "format": "uuid"
                                      },
                                      "fulfillmentOrderId": {
                                        "type": "string",
                                        "format": "uuid"
                                      },
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "pending",
                                          "open",
                                          "success",
                                          "cancelled",
                                          "error",
                                          "failure"
                                        ],
                                        "description": "BedrockFulfillmentStatus"
                                      },
                                      "trackingCarrier": {
                                        "type": [
                                          "string",
                                          "null"
                                        ]
                                      },
                                      "trackingNumber": {
                                        "type": [
                                          "string",
                                          "null"
                                        ]
                                      },
                                      "trackingUrl": {
                                        "type": [
                                          "string",
                                          "null"
                                        ]
                                      },
                                      "shippedAt": {
                                        "type": [
                                          "string",
                                          "null"
                                        ]
                                      },
                                      "deliveredAt": {
                                        "type": [
                                          "string",
                                          "null"
                                        ]
                                      },
                                      "lineItemQuantities": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "fulfillmentOrderLineItemId": {
                                              "type": "string",
                                              "format": "uuid"
                                            },
                                            "quantity": {
                                              "type": "integer"
                                            }
                                          },
                                          "required": [
                                            "fulfillmentOrderLineItemId",
                                            "quantity"
                                          ]
                                        }
                                      },
                                      "createdAt": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "fulfillmentOrderId",
                                      "status",
                                      "trackingCarrier",
                                      "trackingNumber",
                                      "trackingUrl",
                                      "shippedAt",
                                      "deliveredAt",
                                      "lineItemQuantities",
                                      "createdAt"
                                    ],
                                    "description": "BedrockFulfillment"
                                  }
                                },
                                "createdAt": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "id",
                                "orderId",
                                "assignedLocationId",
                                "status",
                                "requestStatus",
                                "lineItems",
                                "fulfillments",
                                "createdAt"
                              ],
                              "description": "BedrockFulfillmentOrder"
                            }
                          },
                          "events": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "orderId": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "kind": {
                                  "type": "string"
                                },
                                "actor": {
                                  "oneOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "user"
                                          ]
                                        },
                                        "userId": {
                                          "type": "string",
                                          "format": "uuid"
                                        }
                                      },
                                      "required": [
                                        "type",
                                        "userId"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "agent"
                                          ]
                                        },
                                        "userId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "agentSessionId": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "type",
                                        "userId",
                                        "agentSessionId"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "system"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "type"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "provider"
                                          ]
                                        },
                                        "agentIntegrationConnectionId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "providerKey": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "type",
                                        "agentIntegrationConnectionId",
                                        "providerKey"
                                      ]
                                    }
                                  ],
                                  "description": "OrderEventActor"
                                },
                                "metadata": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "note"
                                          ]
                                        },
                                        "markdown": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "markdown"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "refundIssued"
                                          ]
                                        },
                                        "amount": {
                                          "type": "integer",
                                          "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                                        },
                                        "currencyCode": {
                                          "type": "string"
                                        },
                                        "reason": {
                                          "type": [
                                            "string",
                                            "null"
                                          ],
                                          "enum": [
                                            "duplicate",
                                            "fraudulent",
                                            "requested_by_customer",
                                            "expired_uncaptured_charge",
                                            null
                                          ],
                                          "description": "StripeRefundReason"
                                        },
                                        "isFullRefund": {
                                          "type": "boolean"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "amount",
                                        "currencyCode",
                                        "isFullRefund"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "fulfillmentOrderCreated"
                                          ]
                                        },
                                        "fulfillmentOrderId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "itemCount": {
                                          "type": "number"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "fulfillmentOrderId",
                                        "itemCount"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "fulfillmentOrderSubmitted"
                                          ]
                                        },
                                        "fulfillmentOrderId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "providerKey": {
                                          "type": "string"
                                        },
                                        "externalRef": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "fulfillmentOrderId",
                                        "providerKey",
                                        "externalRef"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "fulfillmentOrderAccepted"
                                          ]
                                        },
                                        "fulfillmentOrderId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "providerKey": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "fulfillmentOrderId",
                                        "providerKey"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "fulfillmentOrderRejected"
                                          ]
                                        },
                                        "fulfillmentOrderId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "providerKey": {
                                          "type": "string"
                                        },
                                        "reason": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "fulfillmentOrderId",
                                        "providerKey",
                                        "reason"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "fulfillmentOrderHeld"
                                          ]
                                        },
                                        "fulfillmentOrderId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "reason": {
                                          "type": "string"
                                        },
                                        "reasonNotes": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "fulfillmentOrderId",
                                        "reason"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "fulfillmentOrderReleased"
                                          ]
                                        },
                                        "fulfillmentOrderId": {
                                          "type": "string",
                                          "format": "uuid"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "fulfillmentOrderId"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "fulfillmentOrderIncomplete"
                                          ]
                                        },
                                        "fulfillmentOrderId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "reason": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "fulfillmentOrderId",
                                        "reason"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "fulfillmentOrderCancelled"
                                          ]
                                        },
                                        "fulfillmentOrderId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "cancelledBy": {
                                          "type": "string",
                                          "enum": [
                                            "merchant",
                                            "provider",
                                            "system"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "fulfillmentOrderId",
                                        "cancelledBy"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "fulfillmentOrderCancellationRequested"
                                          ]
                                        },
                                        "fulfillmentOrderId": {
                                          "type": "string",
                                          "format": "uuid"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "fulfillmentOrderId"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "shipmentCreated"
                                          ]
                                        },
                                        "fulfillmentOrderId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "fulfillmentId": {
                                          "type": "string",
                                          "format": "uuid"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "fulfillmentOrderId",
                                        "fulfillmentId"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "shipmentSent"
                                          ]
                                        },
                                        "fulfillmentOrderId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "fulfillmentId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "trackingCarrier": {
                                          "type": "string"
                                        },
                                        "trackingNumber": {
                                          "type": "string"
                                        },
                                        "trackingUrl": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "fulfillmentOrderId",
                                        "fulfillmentId"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "shipmentDelivered"
                                          ]
                                        },
                                        "fulfillmentOrderId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "fulfillmentId": {
                                          "type": "string",
                                          "format": "uuid"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "fulfillmentOrderId",
                                        "fulfillmentId"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "shipmentReturned"
                                          ]
                                        },
                                        "fulfillmentOrderId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "fulfillmentId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "reason": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "fulfillmentOrderId",
                                        "fulfillmentId"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "shipmentCancelled"
                                          ]
                                        },
                                        "fulfillmentOrderId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "fulfillmentId": {
                                          "type": "string",
                                          "format": "uuid"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "fulfillmentOrderId",
                                        "fulfillmentId"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "inventoryDecremented"
                                          ]
                                        },
                                        "entries": {
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "variantId": {
                                                "type": "string",
                                                "format": "uuid"
                                              },
                                              "locationId": {
                                                "type": "string",
                                                "format": "uuid"
                                              },
                                              "delta": {
                                                "type": "number"
                                              },
                                              "before": {
                                                "type": "number"
                                              },
                                              "after": {
                                                "type": "number"
                                              }
                                            },
                                            "required": [
                                              "variantId",
                                              "locationId",
                                              "delta",
                                              "before",
                                              "after"
                                            ]
                                          }
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "entries"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "customerEmailSent"
                                          ]
                                        },
                                        "templateType": {
                                          "type": "string",
                                          "enum": [
                                            "order.confirmation",
                                            "order.fulfillment",
                                            "order.refund"
                                          ]
                                        },
                                        "status": {
                                          "type": "string",
                                          "enum": [
                                            "pending"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "templateType",
                                        "status"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "customerEmailSent"
                                          ]
                                        },
                                        "templateType": {
                                          "type": "string",
                                          "enum": [
                                            "order.confirmation",
                                            "order.fulfillment",
                                            "order.refund"
                                          ]
                                        },
                                        "status": {
                                          "type": "string",
                                          "enum": [
                                            "sent"
                                          ]
                                        },
                                        "to": {
                                          "type": "string"
                                        },
                                        "resendMessageId": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "templateType",
                                        "status",
                                        "to"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "customerEmailSent"
                                          ]
                                        },
                                        "templateType": {
                                          "type": "string",
                                          "enum": [
                                            "order.confirmation",
                                            "order.fulfillment",
                                            "order.refund"
                                          ]
                                        },
                                        "status": {
                                          "type": "string",
                                          "enum": [
                                            "failed"
                                          ]
                                        },
                                        "to": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "templateType",
                                        "status"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "customerEmailSent"
                                          ]
                                        },
                                        "templateType": {
                                          "type": "string",
                                          "enum": [
                                            "order.confirmation",
                                            "order.fulfillment",
                                            "order.refund"
                                          ]
                                        },
                                        "status": {
                                          "type": "string",
                                          "enum": [
                                            "skipped"
                                          ]
                                        },
                                        "reason": {
                                          "type": "string",
                                          "enum": [
                                            "noCustomerEmail"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "templateType",
                                        "status",
                                        "reason"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "merchantNotificationSent"
                                          ]
                                        },
                                        "status": {
                                          "type": "string",
                                          "enum": [
                                            "pending"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "status"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "merchantNotificationSent"
                                          ]
                                        },
                                        "status": {
                                          "type": "string",
                                          "enum": [
                                            "sent"
                                          ]
                                        },
                                        "to": {
                                          "type": "string"
                                        },
                                        "resendMessageId": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "status",
                                        "to",
                                        "resendMessageId"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "merchantNotificationSent"
                                          ]
                                        },
                                        "status": {
                                          "type": "string",
                                          "enum": [
                                            "failed"
                                          ]
                                        },
                                        "to": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "status",
                                        "to"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "merchantNotificationSent"
                                          ]
                                        },
                                        "status": {
                                          "type": "string",
                                          "enum": [
                                            "skipped"
                                          ]
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "status"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "paymentCaptured"
                                          ]
                                        },
                                        "amount": {
                                          "type": "integer",
                                          "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                                        },
                                        "currencyCode": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "amount",
                                        "currencyCode"
                                      ]
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "kind": {
                                          "type": "string",
                                          "enum": [
                                            "paymentFailed"
                                          ]
                                        },
                                        "source": {
                                          "type": "string",
                                          "enum": [
                                            "payment_intent.payment_failed",
                                            "charge.failed"
                                          ]
                                        },
                                        "stripeErrorCode": {
                                          "type": "string"
                                        },
                                        "stripeDeclineCode": {
                                          "type": "string"
                                        },
                                        "message": {
                                          "type": "string"
                                        }
                                      },
                                      "required": [
                                        "kind",
                                        "source"
                                      ]
                                    }
                                  ]
                                },
                                "fulfillmentOrderId": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "format": "uuid"
                                },
                                "fulfillmentId": {
                                  "type": [
                                    "string",
                                    "null"
                                  ],
                                  "format": "uuid"
                                },
                                "createdAt": {
                                  "type": "string"
                                },
                                "editedAt": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "deletedAt": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                }
                              },
                              "required": [
                                "id",
                                "orderId",
                                "kind",
                                "actor",
                                "metadata",
                                "fulfillmentOrderId",
                                "fulfillmentId",
                                "createdAt",
                                "editedAt",
                                "deletedAt"
                              ]
                            }
                          },
                          "refundedAmount": {
                            "type": "integer",
                            "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                          },
                          "subtotalAmount": {
                            "type": "integer",
                            "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                          },
                          "taxAmount": {
                            "type": "integer",
                            "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                          },
                          "shippingAmount": {
                            "type": "integer",
                            "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                          },
                          "discountAmount": {
                            "type": "integer",
                            "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                          },
                          "object": {
                            "type": "string",
                            "enum": [
                              "order"
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "createdAt",
                          "financialStatus",
                          "fulfillmentStatus",
                          "totalAmount",
                          "currencyCode",
                          "items",
                          "fulfillmentOrders",
                          "events",
                          "refundedAmount",
                          "subtotalAmount",
                          "taxAmount",
                          "shippingAmount",
                          "discountAmount",
                          "object"
                        ]
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "data",
                    "has_more",
                    "next_cursor"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/orders/{orderId}": {
      "get": {
        "operationId": "orders.get",
        "summary": "Get an order",
        "description": "**Beta** — this endpoint may change before general availability.",
        "x-beta": true,
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "orderId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Get an order",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "createdAt": {
                      "type": "string"
                    },
                    "financialStatus": {
                      "type": "string"
                    },
                    "fulfillmentStatus": {
                      "type": "string",
                      "enum": [
                        "unfulfilled",
                        "partial",
                        "fulfilled",
                        "cancelled"
                      ],
                      "description": "OrderItemFulfillmentStatus"
                    },
                    "totalAmount": {
                      "type": "integer",
                      "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                    },
                    "currencyCode": {
                      "type": "string"
                    },
                    "reconciliationReason": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "variantId": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "sku": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "variantTitleSnapshot": {
                            "type": "string"
                          },
                          "imageUrlSnapshot": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "optionValuesSnapshot": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string"
                                },
                                "value": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "name",
                                "value"
                              ],
                              "description": "OrderItemOptionValue"
                            },
                            "description": "OrderItemOptionValuesSnapshot"
                          },
                          "quantity": {
                            "type": "integer"
                          },
                          "unitPrice": {
                            "type": "integer",
                            "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                          },
                          "totalPrice": {
                            "type": "integer",
                            "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                          }
                        },
                        "required": [
                          "id",
                          "variantId",
                          "sku",
                          "variantTitleSnapshot",
                          "imageUrlSnapshot",
                          "optionValuesSnapshot",
                          "quantity",
                          "unitPrice",
                          "totalPrice"
                        ],
                        "description": "BedrockOrderItem"
                      }
                    },
                    "fulfillmentOrders": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "orderId": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "assignedLocationId": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "open",
                              "inProgress",
                              "closed",
                              "cancelled",
                              "onHold",
                              "incomplete",
                              "scheduled"
                            ],
                            "description": "BedrockFulfillmentOrderStatus"
                          },
                          "requestStatus": {
                            "type": "string",
                            "enum": [
                              "unsubmitted",
                              "submitted",
                              "accepted",
                              "rejected",
                              "cancellationRequested",
                              "cancellationAccepted",
                              "cancellationRejected",
                              "closed"
                            ],
                            "description": "BedrockFulfillmentOrderRequestStatus"
                          },
                          "reviewReason": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "lineItems": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "orderItemId": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "totalQuantity": {
                                  "type": "integer"
                                },
                                "remainingQuantity": {
                                  "type": "integer"
                                }
                              },
                              "required": [
                                "id",
                                "orderItemId",
                                "totalQuantity",
                                "remainingQuantity"
                              ],
                              "description": "BedrockFulfillmentOrderLineItem"
                            }
                          },
                          "fulfillments": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "fulfillmentOrderId": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "pending",
                                    "open",
                                    "success",
                                    "cancelled",
                                    "error",
                                    "failure"
                                  ],
                                  "description": "BedrockFulfillmentStatus"
                                },
                                "trackingCarrier": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "trackingNumber": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "trackingUrl": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "shippedAt": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "deliveredAt": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "lineItemQuantities": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "fulfillmentOrderLineItemId": {
                                        "type": "string",
                                        "format": "uuid"
                                      },
                                      "quantity": {
                                        "type": "integer"
                                      }
                                    },
                                    "required": [
                                      "fulfillmentOrderLineItemId",
                                      "quantity"
                                    ]
                                  }
                                },
                                "createdAt": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "id",
                                "fulfillmentOrderId",
                                "status",
                                "trackingCarrier",
                                "trackingNumber",
                                "trackingUrl",
                                "shippedAt",
                                "deliveredAt",
                                "lineItemQuantities",
                                "createdAt"
                              ],
                              "description": "BedrockFulfillment"
                            }
                          },
                          "createdAt": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "orderId",
                          "assignedLocationId",
                          "status",
                          "requestStatus",
                          "lineItems",
                          "fulfillments",
                          "createdAt"
                        ],
                        "description": "BedrockFulfillmentOrder"
                      }
                    },
                    "events": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "orderId": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "kind": {
                            "type": "string"
                          },
                          "actor": {
                            "oneOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "user"
                                    ]
                                  },
                                  "userId": {
                                    "type": "string",
                                    "format": "uuid"
                                  }
                                },
                                "required": [
                                  "type",
                                  "userId"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "agent"
                                    ]
                                  },
                                  "userId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "agentSessionId": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "type",
                                  "userId",
                                  "agentSessionId"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "system"
                                    ]
                                  }
                                },
                                "required": [
                                  "type"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "provider"
                                    ]
                                  },
                                  "agentIntegrationConnectionId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "providerKey": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "type",
                                  "agentIntegrationConnectionId",
                                  "providerKey"
                                ]
                              }
                            ],
                            "description": "OrderEventActor"
                          },
                          "metadata": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "note"
                                    ]
                                  },
                                  "markdown": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "markdown"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "refundIssued"
                                    ]
                                  },
                                  "amount": {
                                    "type": "integer",
                                    "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                                  },
                                  "currencyCode": {
                                    "type": "string"
                                  },
                                  "reason": {
                                    "type": [
                                      "string",
                                      "null"
                                    ],
                                    "enum": [
                                      "duplicate",
                                      "fraudulent",
                                      "requested_by_customer",
                                      "expired_uncaptured_charge",
                                      null
                                    ],
                                    "description": "StripeRefundReason"
                                  },
                                  "isFullRefund": {
                                    "type": "boolean"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "amount",
                                  "currencyCode",
                                  "isFullRefund"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "fulfillmentOrderCreated"
                                    ]
                                  },
                                  "fulfillmentOrderId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "itemCount": {
                                    "type": "number"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "fulfillmentOrderId",
                                  "itemCount"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "fulfillmentOrderSubmitted"
                                    ]
                                  },
                                  "fulfillmentOrderId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "providerKey": {
                                    "type": "string"
                                  },
                                  "externalRef": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "fulfillmentOrderId",
                                  "providerKey",
                                  "externalRef"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "fulfillmentOrderAccepted"
                                    ]
                                  },
                                  "fulfillmentOrderId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "providerKey": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "fulfillmentOrderId",
                                  "providerKey"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "fulfillmentOrderRejected"
                                    ]
                                  },
                                  "fulfillmentOrderId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "providerKey": {
                                    "type": "string"
                                  },
                                  "reason": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "fulfillmentOrderId",
                                  "providerKey",
                                  "reason"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "fulfillmentOrderHeld"
                                    ]
                                  },
                                  "fulfillmentOrderId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "reason": {
                                    "type": "string"
                                  },
                                  "reasonNotes": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "fulfillmentOrderId",
                                  "reason"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "fulfillmentOrderReleased"
                                    ]
                                  },
                                  "fulfillmentOrderId": {
                                    "type": "string",
                                    "format": "uuid"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "fulfillmentOrderId"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "fulfillmentOrderIncomplete"
                                    ]
                                  },
                                  "fulfillmentOrderId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "reason": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "fulfillmentOrderId",
                                  "reason"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "fulfillmentOrderCancelled"
                                    ]
                                  },
                                  "fulfillmentOrderId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "cancelledBy": {
                                    "type": "string",
                                    "enum": [
                                      "merchant",
                                      "provider",
                                      "system"
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "fulfillmentOrderId",
                                  "cancelledBy"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "fulfillmentOrderCancellationRequested"
                                    ]
                                  },
                                  "fulfillmentOrderId": {
                                    "type": "string",
                                    "format": "uuid"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "fulfillmentOrderId"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "shipmentCreated"
                                    ]
                                  },
                                  "fulfillmentOrderId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "fulfillmentId": {
                                    "type": "string",
                                    "format": "uuid"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "fulfillmentOrderId",
                                  "fulfillmentId"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "shipmentSent"
                                    ]
                                  },
                                  "fulfillmentOrderId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "fulfillmentId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "trackingCarrier": {
                                    "type": "string"
                                  },
                                  "trackingNumber": {
                                    "type": "string"
                                  },
                                  "trackingUrl": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "fulfillmentOrderId",
                                  "fulfillmentId"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "shipmentDelivered"
                                    ]
                                  },
                                  "fulfillmentOrderId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "fulfillmentId": {
                                    "type": "string",
                                    "format": "uuid"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "fulfillmentOrderId",
                                  "fulfillmentId"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "shipmentReturned"
                                    ]
                                  },
                                  "fulfillmentOrderId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "fulfillmentId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "reason": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "fulfillmentOrderId",
                                  "fulfillmentId"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "shipmentCancelled"
                                    ]
                                  },
                                  "fulfillmentOrderId": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "fulfillmentId": {
                                    "type": "string",
                                    "format": "uuid"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "fulfillmentOrderId",
                                  "fulfillmentId"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "inventoryDecremented"
                                    ]
                                  },
                                  "entries": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "variantId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "locationId": {
                                          "type": "string",
                                          "format": "uuid"
                                        },
                                        "delta": {
                                          "type": "number"
                                        },
                                        "before": {
                                          "type": "number"
                                        },
                                        "after": {
                                          "type": "number"
                                        }
                                      },
                                      "required": [
                                        "variantId",
                                        "locationId",
                                        "delta",
                                        "before",
                                        "after"
                                      ]
                                    }
                                  }
                                },
                                "required": [
                                  "kind",
                                  "entries"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "customerEmailSent"
                                    ]
                                  },
                                  "templateType": {
                                    "type": "string",
                                    "enum": [
                                      "order.confirmation",
                                      "order.fulfillment",
                                      "order.refund"
                                    ]
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "pending"
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "templateType",
                                  "status"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "customerEmailSent"
                                    ]
                                  },
                                  "templateType": {
                                    "type": "string",
                                    "enum": [
                                      "order.confirmation",
                                      "order.fulfillment",
                                      "order.refund"
                                    ]
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "sent"
                                    ]
                                  },
                                  "to": {
                                    "type": "string"
                                  },
                                  "resendMessageId": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "templateType",
                                  "status",
                                  "to"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "customerEmailSent"
                                    ]
                                  },
                                  "templateType": {
                                    "type": "string",
                                    "enum": [
                                      "order.confirmation",
                                      "order.fulfillment",
                                      "order.refund"
                                    ]
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "failed"
                                    ]
                                  },
                                  "to": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "templateType",
                                  "status"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "customerEmailSent"
                                    ]
                                  },
                                  "templateType": {
                                    "type": "string",
                                    "enum": [
                                      "order.confirmation",
                                      "order.fulfillment",
                                      "order.refund"
                                    ]
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "skipped"
                                    ]
                                  },
                                  "reason": {
                                    "type": "string",
                                    "enum": [
                                      "noCustomerEmail"
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "templateType",
                                  "status",
                                  "reason"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "merchantNotificationSent"
                                    ]
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "pending"
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "status"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "merchantNotificationSent"
                                    ]
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "sent"
                                    ]
                                  },
                                  "to": {
                                    "type": "string"
                                  },
                                  "resendMessageId": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "status",
                                  "to",
                                  "resendMessageId"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "merchantNotificationSent"
                                    ]
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "failed"
                                    ]
                                  },
                                  "to": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "status",
                                  "to"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "merchantNotificationSent"
                                    ]
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "skipped"
                                    ]
                                  }
                                },
                                "required": [
                                  "kind",
                                  "status"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "paymentCaptured"
                                    ]
                                  },
                                  "amount": {
                                    "type": "integer",
                                    "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                                  },
                                  "currencyCode": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "amount",
                                  "currencyCode"
                                ]
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "paymentFailed"
                                    ]
                                  },
                                  "source": {
                                    "type": "string",
                                    "enum": [
                                      "payment_intent.payment_failed",
                                      "charge.failed"
                                    ]
                                  },
                                  "stripeErrorCode": {
                                    "type": "string"
                                  },
                                  "stripeDeclineCode": {
                                    "type": "string"
                                  },
                                  "message": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "kind",
                                  "source"
                                ]
                              }
                            ]
                          },
                          "fulfillmentOrderId": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "uuid"
                          },
                          "fulfillmentId": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "uuid"
                          },
                          "createdAt": {
                            "type": "string"
                          },
                          "editedAt": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "deletedAt": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "orderId",
                          "kind",
                          "actor",
                          "metadata",
                          "fulfillmentOrderId",
                          "fulfillmentId",
                          "createdAt",
                          "editedAt",
                          "deletedAt"
                        ]
                      }
                    },
                    "refundedAmount": {
                      "type": "integer",
                      "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                    },
                    "subtotalAmount": {
                      "type": "integer",
                      "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                    },
                    "taxAmount": {
                      "type": "integer",
                      "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                    },
                    "shippingAmount": {
                      "type": "integer",
                      "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                    },
                    "discountAmount": {
                      "type": "integer",
                      "description": "Integer amount in the currency's minor units (Stripe convention): 1999 = $19.99 USD, 1999 = ¥1999 JPY, 1999 = 1.999 KWD"
                    },
                    "object": {
                      "type": "string",
                      "enum": [
                        "order"
                      ]
                    },
                    "customerEmail": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Masked contact address, e.g. `j••••@example.com`."
                    }
                  },
                  "required": [
                    "id",
                    "createdAt",
                    "financialStatus",
                    "fulfillmentStatus",
                    "totalAmount",
                    "currencyCode",
                    "items",
                    "fulfillmentOrders",
                    "events",
                    "refundedAmount",
                    "subtotalAmount",
                    "taxAmount",
                    "shippingAmount",
                    "discountAmount",
                    "object",
                    "customerEmail"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/products": {
      "get": {
        "operationId": "products.list",
        "summary": "List products",
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "required": false,
            "name": "cursor",
            "in": "query"
          },
          {
            "schema": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 100
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "required": false,
            "name": "query",
            "in": "query"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List products",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "list"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Product"
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "data",
                    "has_more",
                    "next_cursor"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "products.create",
        "summary": "Create a product",
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1024
                  },
                  "description": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "maxLength": 10000
                  },
                  "slug": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "minLength": 1,
                    "maxLength": 1024
                  },
                  "externalCheckoutUrl": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uri"
                  },
                  "projectId": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "title",
                  "projectId"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a product",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/products/{productId}": {
      "get": {
        "operationId": "products.get",
        "summary": "Get a product",
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "productId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Get a product",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "products.update",
        "summary": "Update a product",
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "productId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1024
                  },
                  "description": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "maxLength": 10000
                  },
                  "slug": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "minLength": 1,
                    "maxLength": 1024
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "archived",
                      "draft"
                    ],
                    "description": "ProductStatus"
                  },
                  "externalCheckoutUrl": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uri"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update a product",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/products/{productId}/inventory": {
      "patch": {
        "operationId": "products.setInventory",
        "summary": "Set per-variant inventory tracking flags and stock counts",
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "productId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "variants": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "trackInventory": {
                          "type": "boolean"
                        },
                        "available": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 2147483647
                        },
                        "continueSellingWhenOutOfStock": {
                          "type": "boolean"
                        },
                        "optionValues": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "optionName": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 255,
                                "description": "Option name, e.g. \"Color\"."
                              },
                              "value": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 512,
                                "description": "Value within that option, e.g. \"Navy\"."
                              }
                            },
                            "required": [
                              "optionName",
                              "value"
                            ]
                          }
                        }
                      },
                      "required": [
                        "optionValues"
                      ],
                      "additionalProperties": false
                    },
                    "minItems": 1,
                    "maxItems": 250
                  }
                },
                "required": [
                  "variants"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Set per-variant inventory tracking flags and stock counts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductInventory"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/projects": {
      "get": {
        "operationId": "projects.list",
        "summary": "List the Replo projects this connector can act on, with their ids and names.",
        "tags": [
          "Projects"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": false,
            "name": "workspaceId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "required": false,
            "name": "cursor",
            "in": "query"
          },
          {
            "schema": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 100
            },
            "required": false,
            "name": "limit",
            "in": "query"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List the Replo projects this connector can act on, with their ids and names.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "list"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "object": {
                            "type": "string",
                            "enum": [
                              "project"
                            ]
                          },
                          "id": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "workspaceId": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "timeZone": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "currency": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "pattern": "^[A-Z]{3}$",
                            "description": "Currency"
                          },
                          "supportEmail": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "checkoutProvider": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "enum": [
                              "shopify",
                              "replo",
                              null
                            ]
                          },
                          "industryCategory": {
                            "type": [
                              "object",
                              "null"
                            ],
                            "properties": {
                              "id": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "slug": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "path": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Names from the top level down, ending with this category."
                              },
                              "anchor": {
                                "type": [
                                  "object",
                                  "null"
                                ],
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "format": "uuid"
                                  },
                                  "slug": {
                                    "type": "string"
                                  },
                                  "name": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "id",
                                  "slug",
                                  "name"
                                ],
                                "additionalProperties": false,
                                "description": "The nearest high-level category at or above this one; onboarding, templates and workflows use it."
                              }
                            },
                            "required": [
                              "id",
                              "slug",
                              "name",
                              "path",
                              "anchor"
                            ],
                            "additionalProperties": false,
                            "description": "What the business sells or does; null until it's known."
                          }
                        },
                        "required": [
                          "object",
                          "id",
                          "name",
                          "workspaceId",
                          "timeZone",
                          "currency",
                          "supportEmail",
                          "checkoutProvider",
                          "industryCategory"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "setup_required": {
                      "type": "object",
                      "properties": {
                        "reason": {
                          "type": "string",
                          "enum": [
                            "no_compatible_projects"
                          ]
                        },
                        "message": {
                          "type": "string"
                        },
                        "eligible_workspaces": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "name": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "name"
                            ],
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "reason",
                        "message",
                        "eligible_workspaces"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "object",
                    "data",
                    "has_more",
                    "next_cursor"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "projects.create",
        "summary": "Create a Replo project in a workspace.",
        "tags": [
          "Projects"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "workspaceId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 256
                  }
                },
                "required": [
                  "workspaceId",
                  "name"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a Replo project in a workspace.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "project"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "workspaceId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "timeZone": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "currency": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "pattern": "^[A-Z]{3}$",
                      "description": "Currency"
                    },
                    "supportEmail": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "checkoutProvider": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "enum": [
                        "shopify",
                        "replo",
                        null
                      ]
                    },
                    "industryCategory": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "slug": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "path": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Names from the top level down, ending with this category."
                        },
                        "anchor": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "slug": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "slug",
                            "name"
                          ],
                          "additionalProperties": false,
                          "description": "The nearest high-level category at or above this one; onboarding, templates and workflows use it."
                        }
                      },
                      "required": [
                        "id",
                        "slug",
                        "name",
                        "path",
                        "anchor"
                      ],
                      "additionalProperties": false,
                      "description": "What the business sells or does; null until it's known."
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "name",
                    "workspaceId",
                    "timeZone",
                    "currency",
                    "supportEmail",
                    "checkoutProvider",
                    "industryCategory"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/projects/{projectId}": {
      "get": {
        "operationId": "projects.get",
        "summary": "Get a Replo project's settings, including which provider powers checkout.",
        "tags": [
          "Projects"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Get a Replo project's settings, including which provider powers checkout.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "project"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "workspaceId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "timeZone": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "currency": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "pattern": "^[A-Z]{3}$",
                      "description": "Currency"
                    },
                    "supportEmail": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "checkoutProvider": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "enum": [
                        "shopify",
                        "replo",
                        null
                      ]
                    },
                    "industryCategory": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "slug": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "path": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Names from the top level down, ending with this category."
                        },
                        "anchor": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "slug": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "slug",
                            "name"
                          ],
                          "additionalProperties": false,
                          "description": "The nearest high-level category at or above this one; onboarding, templates and workflows use it."
                        }
                      },
                      "required": [
                        "id",
                        "slug",
                        "name",
                        "path",
                        "anchor"
                      ],
                      "additionalProperties": false,
                      "description": "What the business sells or does; null until it's known."
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "name",
                    "workspaceId",
                    "timeZone",
                    "currency",
                    "supportEmail",
                    "checkoutProvider",
                    "industryCategory"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "projects.update",
        "summary": "Update a Replo project's settings. Switching checkoutProvider changes what the Checkout button does on every published site.",
        "tags": [
          "Projects"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 256
                  },
                  "timeZone": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 64
                  },
                  "currency": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$",
                    "description": "Currency"
                  },
                  "supportEmail": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "email"
                  },
                  "checkoutProvider": {
                    "type": "string",
                    "enum": [
                      "shopify",
                      "replo"
                    ]
                  },
                  "industryCategoryId": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uuid",
                    "description": "What the business sells or does: an industry category id from find_industry_categories. Null clears it."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update a Replo project's settings. Switching checkoutProvider changes what the Checkout button does on every published site.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "project"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "workspaceId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "timeZone": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "currency": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "pattern": "^[A-Z]{3}$",
                      "description": "Currency"
                    },
                    "supportEmail": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "checkoutProvider": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "enum": [
                        "shopify",
                        "replo",
                        null
                      ]
                    },
                    "industryCategory": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "properties": {
                        "id": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "slug": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "path": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Names from the top level down, ending with this category."
                        },
                        "anchor": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "slug": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "slug",
                            "name"
                          ],
                          "additionalProperties": false,
                          "description": "The nearest high-level category at or above this one; onboarding, templates and workflows use it."
                        }
                      },
                      "required": [
                        "id",
                        "slug",
                        "name",
                        "path",
                        "anchor"
                      ],
                      "additionalProperties": false,
                      "description": "What the business sells or does; null until it's known."
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "name",
                    "workspaceId",
                    "timeZone",
                    "currency",
                    "supportEmail",
                    "checkoutProvider",
                    "industryCategory"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/shared-previews": {
      "post": {
        "operationId": "sharedPreviews.create",
        "summary": "Create or recover a durable shared preview link to a site route in the API key owner's agent workspace. Start an agent session in the project before sharing. Page availability is checked when the link is opened, not when it is created.",
        "tags": [
          "Shared-previews"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "projectId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "siteId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "route": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 2048,
                    "description": "The site route to preview, e.g. \"/\" or \"/about\". Must be an absolute path without a query string or fragment."
                  },
                  "locale": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "BCP 47 language tag to render the page in, e.g. \"en-US\". Omit to use the site's default locale."
                  }
                },
                "required": [
                  "projectId",
                  "siteId",
                  "route"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create or recover a durable shared preview link to a site route in the API key owner's agent workspace. Start an agent session in the project before sharing. Page availability is checked when the link is opened, not when it is created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "shared_preview"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri",
                      "description": "Durable link to the requested site route. Page availability is checked when someone opens it; deleting the preview disables the link."
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "url"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/shared-previews/{sharedPreviewId}": {
      "delete": {
        "operationId": "sharedPreviews.delete",
        "summary": "Revoke a shared preview link. The link stops rendering immediately; revoking an already-revoked link succeeds.",
        "tags": [
          "Shared-previews"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "sharedPreviewId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Revoke a shared preview link. The link stops rendering immediately; revoking an already-revoked link succeeds.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "shared_preview"
                      ]
                    },
                    "id": {
                      "type": "string"
                    },
                    "deleted": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "deleted"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/sites": {
      "get": {
        "operationId": "sites.list",
        "summary": "List sites for a project",
        "tags": [
          "Sites"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "required": false,
            "name": "cursor",
            "in": "query"
          },
          {
            "schema": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 100
            },
            "required": false,
            "name": "limit",
            "in": "query"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List sites for a project",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "list"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "object": {
                            "type": "string",
                            "enum": [
                              "site"
                            ]
                          },
                          "id": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string"
                          },
                          "subdomain": {
                            "type": "string"
                          },
                          "is_default": {
                            "type": "boolean"
                          },
                          "clone_url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "object",
                          "id",
                          "name",
                          "subdomain",
                          "is_default",
                          "clone_url"
                        ],
                        "additionalProperties": false
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "data",
                    "has_more",
                    "next_cursor"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "sites.create",
        "summary": "Create a site with its git repository",
        "tags": [
          "Sites"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "projectId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "Dashboard display name for the new site."
                  },
                  "template": {
                    "type": "string",
                    "pattern": "^[a-z0-9][a-z0-9-]{0,63}$",
                    "description": "Published starter template to fork the site's repository from, e.g. 'notion'. Defaults to 'blank'."
                  }
                },
                "required": [
                  "projectId",
                  "name"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a site with its git repository",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "site"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "name": {
                      "type": "string"
                    },
                    "subdomain": {
                      "type": "string"
                    },
                    "is_default": {
                      "type": "boolean"
                    },
                    "clone_url": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "name",
                    "subdomain",
                    "is_default",
                    "clone_url"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/sites/{siteId}": {
      "patch": {
        "operationId": "sites.update",
        "summary": "Update a site",
        "tags": [
          "Sites"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "siteId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update a site",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "site"
                      ]
                    },
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "name": {
                      "type": "string"
                    },
                    "subdomain": {
                      "type": "string"
                    },
                    "is_default": {
                      "type": "boolean"
                    },
                    "clone_url": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "name",
                    "subdomain",
                    "is_default",
                    "clone_url"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/sites/{siteId}/publish": {
      "post": {
        "operationId": "sites.publish",
        "summary": "Publish a site",
        "tags": [
          "Sites"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "siteId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "promoteRoutes": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 500,
                      "pattern": "^\\/[^\\s\\x00-\\x1f\\x7f]*$"
                    },
                    "maxItems": 200,
                    "description": "Routes whose unpublished edits go live in this publish — pages and content entries alike, e.g. [\"/\", \"/about\", \"/blog/my-post\"] (a content entry's route is /<collection>/<slug>). Omit to publish every page and entry with changes. Pass [] to publish only site-wide changes and leave every page and entry draft as it is."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Publish a site",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "sessionId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "dashboardUrl": {
                      "type": "string",
                      "format": "uri"
                    }
                  },
                  "required": [
                    "sessionId",
                    "dashboardUrl"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/tasks": {
      "get": {
        "operationId": "tasks.list",
        "summary": "List tasks",
        "tags": [
          "Tasks"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "projectId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "required": false,
            "name": "cursor",
            "in": "query"
          },
          {
            "schema": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 100
            },
            "required": false,
            "name": "limit",
            "in": "query"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List tasks",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "list"
                      ]
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Task"
                      }
                    },
                    "has_more": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "data",
                    "has_more",
                    "next_cursor"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "tasks.create",
        "summary": "Create a task",
        "tags": [
          "Tasks"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "Short human-readable title for the task."
                  },
                  "emoji": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 8,
                    "default": "✨",
                    "description": "Emoji label used to visually group this task in the schedule UI."
                  },
                  "prompt": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The exact prompt the task should run. This must be self-contained and executable without asking the user follow-up questions. Include any reasonable assumptions needed to complete the task, and do not include instructions like 'ask the user' or 'wait for clarification'."
                  },
                  "scheduledAt": {
                    "type": "string",
                    "format": "date-time",
                    "description": "ISO 8601 date-time with an explicit timezone offset when the task should first run. Must be in the future."
                  },
                  "rrule": {
                    "type": "string",
                    "minLength": 1,
                    "default": "FREQ=DAILY;COUNT=1",
                    "description": "RRULE string for recurrence, such as FREQ=DAILY. Use FREQ=DAILY;COUNT=1 for one-time tasks."
                  },
                  "delivery": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "object",
                        "properties": {
                          "recipients": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "format": "email"
                            },
                            "maxItems": 10,
                            "description": "TaskEmailRecipients"
                          }
                        },
                        "required": [
                          "recipients"
                        ]
                      }
                    },
                    "description": "Where each run's results go, e.g. { email: { recipients: [\"me@brand.com\"] } }. When the user wants results delivered, default to their own address. `{ email: { recipients: [] } }` turns email off; omitting it on update keeps the current delivery."
                  },
                  "recipeId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80,
                    "description": "Id of the task recipe this task is based on, when the user picked one; its sample email becomes the run's layout guideline."
                  },
                  "projectId": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "title",
                  "prompt",
                  "scheduledAt",
                  "projectId"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Create a task",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Task"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    },
    "/tasks/{taskId}": {
      "get": {
        "operationId": "tasks.get",
        "summary": "Get a task",
        "tags": [
          "Tasks"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "taskId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Get a task",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Task"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "tasks.update",
        "summary": "Update a task",
        "tags": [
          "Tasks"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "taskId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "Short human-readable title for the task."
                  },
                  "emoji": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 8,
                    "description": "Emoji label used to visually group this task in the schedule UI."
                  },
                  "prompt": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The exact prompt the task should run. This must be self-contained and executable without asking the user follow-up questions. Include any reasonable assumptions needed to complete the task, and do not include instructions like 'ask the user' or 'wait for clarification'."
                  },
                  "rrule": {
                    "type": "string",
                    "minLength": 1,
                    "description": "RRULE string for recurrence, such as FREQ=DAILY. Use FREQ=DAILY;COUNT=1 for one-time tasks."
                  },
                  "recipeId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80,
                    "description": "Id of the task recipe this task is based on, when the user picked one; its sample email becomes the run's layout guideline."
                  },
                  "delivery": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "object",
                        "properties": {
                          "recipients": {
                            "type": "array",
                            "items": {
                              "type": "string",
                              "format": "email"
                            },
                            "maxItems": 10,
                            "description": "TaskEmailRecipients"
                          }
                        },
                        "required": [
                          "recipients"
                        ]
                      }
                    },
                    "description": "Where each run's results go, e.g. { email: { recipients: [\"me@brand.com\"] } }. When the user wants results delivered, default to their own address. `{ email: { recipients: [] } }` turns email off; omitting it on update keeps the current delivery."
                  }
                },
                "required": [
                  "title",
                  "prompt",
                  "rrule"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update a task",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Task"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "tasks.delete",
        "summary": "Delete a task",
        "tags": [
          "Tasks"
        ],
        "parameters": [
          {
            "name": "Replo-Api-Version",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "2026-10-29"
              ]
            },
            "description": "The public API version to use for this request."
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "taskId",
            "in": "path"
          }
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Delete a task",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "object": {
                      "type": "string",
                      "enum": [
                        "task"
                      ]
                    },
                    "id": {
                      "type": "string"
                    },
                    "deleted": {
                      "type": "boolean",
                      "enum": [
                        true
                      ]
                    }
                  },
                  "required": [
                    "object",
                    "id",
                    "deleted"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid Replo Public API token. Send an active key as `Authorization: Bearer replo_sk_...`; if it was revoked, create a new key in Replo Settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "403": {
            "description": "You are not authorized to access this resource. Ask a workspace owner to perform this action or to grant the key's creator access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found. The resource may not exist, this key may lack the required scope, or the key's creator may have lost access. Check the key's scopes in Replo Settings and the creator's project or workspace access; a workspace owner can grant access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "409": {
            "description": "The resource is in a conflicting state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "413": {
            "description": "File content exceeds the 10 MiB limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests. Please retry after the time indicated by the Retry-After header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "500": {
            "description": "An internal error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          },
          "503": {
            "description": "Service temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicApiError"
                }
              }
            }
          }
        }
      }
    }
  },
  "webhooks": {}
}
