{
  "openapi": "3.0.3",
  "info": {
    "title": "Bencher API",
    "version": "0.6.2"
  },
  "paths": {
    "/": {
      "get": {
        "tags": [
          "server"
        ],
        "operationId": "server_root_get",
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "title": "Null",
                  "type": "string",
                  "enum": [
                    null
                  ]
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "server",
          "stats"
        ],
        "operationId": "root_server_stats_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonServerStats"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "successfully enqueued operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "title": "Null",
                  "type": "string",
                  "enum": [
                    null
                  ]
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/auth/accept": {
      "post": {
        "tags": [
          "auth",
          "organizations"
        ],
        "operationId": "auth_accept_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonAccept"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "successfully enqueued operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonAuthAck"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/auth/confirm": {
      "post": {
        "tags": [
          "auth"
        ],
        "operationId": "auth_confirm_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonConfirm"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonAuthUser"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/auth/github": {
      "get": {
        "tags": [
          "auth"
        ],
        "operationId": "auth_github_get",
        "parameters": [
          {
            "in": "query",
            "name": "claim",
            "description": "Organization UUID to claim.",
            "schema": {
              "$ref": "#/components/schemas/OrganizationUuid"
            }
          },
          {
            "in": "query",
            "name": "invite",
            "description": "Invitation JWT.",
            "schema": {
              "$ref": "#/components/schemas/Jwt"
            }
          },
          {
            "in": "query",
            "name": "plan",
            "description": "Plan level.",
            "schema": {
              "$ref": "#/components/schemas/PlanLevel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonOAuthUrl"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "auth"
        ],
        "operationId": "auth_github_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonOAuth"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "successfully enqueued operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonOAuthUser"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/auth/google": {
      "get": {
        "tags": [
          "auth"
        ],
        "operationId": "auth_google_get",
        "parameters": [
          {
            "in": "query",
            "name": "claim",
            "description": "Organization UUID to claim.",
            "schema": {
              "$ref": "#/components/schemas/OrganizationUuid"
            }
          },
          {
            "in": "query",
            "name": "invite",
            "description": "Invitation JWT.",
            "schema": {
              "$ref": "#/components/schemas/Jwt"
            }
          },
          {
            "in": "query",
            "name": "plan",
            "description": "Plan level.",
            "schema": {
              "$ref": "#/components/schemas/PlanLevel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonOAuthUrl"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "auth"
        ],
        "operationId": "auth_google_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonOAuth"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "successfully enqueued operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonOAuthUser"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/auth/login": {
      "post": {
        "tags": [
          "auth"
        ],
        "operationId": "auth_login_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonLogin"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "successfully enqueued operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonAuthAck"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/auth/oci/token": {
      "get": {
        "tags": [
          "auth",
          "oci"
        ],
        "summary": "OCI token endpoint",
        "description": "Authenticates users via Basic auth (email:bencher-api-token) and returns a short-lived JWT for OCI operations. If no Basic auth credentials are provided, issues a public (anonymous) OCI token.",
        "operationId": "auth_oci_token_get",
        "parameters": [
          {
            "in": "query",
            "name": "scope",
            "description": "Scope in format \"repository:name:action,action\" e.g., \"repository:org/project:pull,push\"",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "service",
            "description": "Service identifier (e.g., \"registry.bencher.dev\") Not currently used but accepted for OCI spec compliance",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/v0/auth/signup": {
      "post": {
        "tags": [
          "auth"
        ],
        "summary": "When a user signs up, a new personal organization is automatically created.",
        "description": "Except when a user signs up with an invitation, then the user is just added to the inviting organization.",
        "operationId": "auth_signup_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonSignup"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "successfully enqueued operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonAuthAck"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/checkout": {
      "post": {
        "tags": [
          "checkout"
        ],
        "operationId": "checkouts_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewCheckout"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonCheckout"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/organizations": {
      "get": {
        "tags": [
          "organizations"
        ],
        "summary": "List organizations",
        "description": "List all organizations where the user is a member. The user must have `view` permissions for each organization. By default, the organizations are sorted in alphabetical order by name. The HTTP response header `X-Total-Count` contains the total number of organizations.",
        "operationId": "organizations_get",
        "parameters": [
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/OrganizationsSort"
            }
          },
          {
            "in": "query",
            "name": "name",
            "description": "Filter by organization name, exact match.",
            "schema": {
              "$ref": "#/components/schemas/ResourceName"
            }
          },
          {
            "in": "query",
            "name": "search",
            "description": "Search by organization name, slug, or UUID.",
            "schema": {
              "$ref": "#/components/schemas/Search"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonOrganizations"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "organizations"
        ],
        "summary": "Create an organization",
        "description": "Create a new organization. The user must be authenticated to use this route.",
        "operationId": "organization_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewOrganization"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonOrganization"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/organizations/{organization}": {
      "get": {
        "tags": [
          "organizations"
        ],
        "summary": "View an organization",
        "description": "View an organization where the user is a member. The user must have `view` permissions for the organization.",
        "operationId": "organization_get",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonOrganization"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "delete": {
        "tags": [
          "organizations"
        ],
        "summary": "Delete an organization",
        "description": "Delete an organization where the user is a member. The user must have `delete` permissions for the organization. By default, organizations are soft-deleted (along with their child projects). Set the `hard` query parameter to `true` to permanently delete the organization (requires server admin).",
        "operationId": "organization_delete",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "hard",
            "description": "Hard delete the organization (requires server admin).",
            "schema": {
              "nullable": true,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful deletion",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "tags": [
          "organizations"
        ],
        "summary": "Update an organization",
        "description": "Update an organization where the user is a member. The user must have `edit` permissions for the organization. If updating the license, the user must have `manage` permissions for the organization.",
        "operationId": "organization_patch",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonUpdateOrganization"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonOrganization"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/organizations/{organization}/allowed/{permission}": {
      "get": {
        "tags": [
          "organizations",
          "allowed"
        ],
        "operationId": "org_allowed_get",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "permission",
            "description": "The permission to check.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/OrganizationPermission"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonAllowed"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/organizations/{organization}/claim": {
      "post": {
        "tags": [
          "organizations"
        ],
        "summary": "Claim an organization",
        "description": "Claim an organization. The user must be authenticated and the organization must be unclaimed.",
        "operationId": "org_claim_post",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewClaim"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonOrganization"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/organizations/{organization}/members": {
      "get": {
        "tags": [
          "organizations",
          "members"
        ],
        "summary": "List organization members",
        "description": "List members for an organization. The user must have `view_role` permissions for the organization. By default, the members are sorted in alphabetical order by name. The HTTP response header `X-Total-Count` contains the total number of members.",
        "operationId": "org_members_get",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/OrgMembersSort"
            }
          },
          {
            "in": "query",
            "name": "name",
            "description": "Filter by user name, exact match.",
            "schema": {
              "$ref": "#/components/schemas/UserName"
            }
          },
          {
            "in": "query",
            "name": "search",
            "description": "Search by user name, slug, or UUID.",
            "schema": {
              "$ref": "#/components/schemas/Search"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonMembers"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "organizations",
          "members"
        ],
        "summary": "Invite a user to an organization",
        "description": "Invite another user to become a member of an organization. The user must have `create_role` permissions for the organization. The invitee is sent an email with a link to accept the invitation, and they are not added to the organization until they accept the invitation.",
        "operationId": "org_member_post",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewMember"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "successfully enqueued operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonAuthAck"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/organizations/{organization}/members/{user}": {
      "get": {
        "tags": [
          "organizations",
          "members"
        ],
        "summary": "View an organization member",
        "description": "View a member of an organization. The user must have `view_role` permissions for the organization.",
        "operationId": "org_member_get",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "user",
            "description": "The slug or UUID for an organization member.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonMember"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "delete": {
        "tags": [
          "organizations",
          "members"
        ],
        "summary": "Remove an organization member",
        "description": "Remove a member member of an organization. The user must have `delete_role` permissions for the organization.",
        "operationId": "org_member_delete",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "user",
            "description": "The slug or UUID for an organization member.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful deletion",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "tags": [
          "organizations",
          "members"
        ],
        "summary": "Update an organization member",
        "description": "Update the role for a member of an organization. The user must have `edit_role` permissions for the organization.",
        "operationId": "org_member_patch",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "user",
            "description": "The slug or UUID for an organization member.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonUpdateMember"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonMember"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/organizations/{organization}/plan": {
      "get": {
        "tags": [
          "organizations",
          "plan"
        ],
        "operationId": "org_plan_get",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonPlan"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "organizations",
          "plan"
        ],
        "operationId": "org_plan_post",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewPlan"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonPlan"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "delete": {
        "tags": [
          "organizations",
          "plan"
        ],
        "operationId": "org_plan_delete",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "remote",
            "schema": {
              "nullable": true,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful deletion",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/organizations/{organization}/projects": {
      "get": {
        "tags": [
          "organizations",
          "projects"
        ],
        "summary": "List organization projects",
        "description": "List projects for an organization. The user must have `view` permissions for the organization. By default, the projects are sorted in alphabetical order by name. The HTTP response header `X-Total-Count` contains the total number of organization projects.",
        "operationId": "org_projects_get",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/OrgProjectsSort"
            }
          },
          {
            "in": "query",
            "name": "name",
            "description": "Filter by project name, exact match.",
            "schema": {
              "$ref": "#/components/schemas/ResourceName"
            }
          },
          {
            "in": "query",
            "name": "search",
            "description": "Search by project name, slug, or UUID.",
            "schema": {
              "$ref": "#/components/schemas/Search"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonProjects"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "organizations",
          "projects"
        ],
        "summary": "Create a project for an organization",
        "description": "Create a new project for an organization. The user must have `create` permissions for the organization. The new project will have a `main` branch, a `localhost` testbed, `latency` and `throughput` measures, and a threshold for both measures. ➕ Bencher Plus: The project visibility must be `public` unless the organization has a valid Bencher Plus subscription.",
        "operationId": "org_project_post",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewProject"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonProject"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/organizations/{organization}/sso": {
      "get": {
        "tags": [
          "organizations",
          "sso"
        ],
        "summary": "List SSO domains for an organization",
        "description": "➕ Bencher Plus: List all single sign-on (SSO) domains for an organization. The user must be a member of the organization to use this route.",
        "operationId": "org_ssos_get",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/OrgSsoSort"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonSsos"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "organizations",
          "sso"
        ],
        "summary": "Add an SSO domain to an organization",
        "description": "➕ Bencher Plus: Add a single sign-on (SSO) domain to an organization. The user must be an admin on the server to use this route. When a user authenticates with the server, the domain portion of their email will be compared against all SSO domains. If an SSO domain matches, they will be added as a Member to that Organization. SSO domains must be globally unique on the server. That is, two Organizations cannot have the same SSO domain.",
        "operationId": "org_sso_post",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewSso"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "successfully enqueued operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonSso"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/organizations/{organization}/sso/{sso}": {
      "get": {
        "tags": [
          "organizations",
          "sso"
        ],
        "summary": "View an SSO domain for an organization",
        "description": "➕ Bencher Plus: View a single sign-on (SSO) domain from an organization. The user must be a member of the organization to use this route.",
        "operationId": "org_sso_get",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "sso",
            "description": "The UUID for an SSO domain.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SsoUuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonSso"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "delete": {
        "tags": [
          "organizations",
          "sso"
        ],
        "summary": "Remove an SSO domain from an organization",
        "description": "➕ Bencher Plus: Remove a single sign-on (SSO) domain from an organization. The user must be an admin on the server to use this route.",
        "operationId": "org_sso_delete",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "sso",
            "description": "The UUID for an SSO domain.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SsoUuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful deletion",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/organizations/{organization}/usage": {
      "get": {
        "tags": [
          "organizations",
          "usage"
        ],
        "summary": "View organization metrics usage",
        "description": "View the metrics usage of an organization. The user must have `manage` permissions for the organization. ➕ Bencher Plus: This endpoint offers an estimate of metered usage and exact usage for licensed organizations, both on Bencher Cloud and Bencher Self-Hosted.",
        "operationId": "org_usage_get",
        "parameters": [
          {
            "in": "path",
            "name": "organization",
            "description": "The slug or UUID for an organization.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonUsage"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects": {
      "get": {
        "tags": [
          "projects"
        ],
        "summary": "List projects",
        "description": "List all projects. If the user is not authenticated, then only public projects are returned. If the user is authenticated, then all public projects and any private project where the user has `view` permissions are returned. By default, the projects are sorted in alphabetical order by name. The HTTP response header `X-Total-Count` contains the total number of projects.",
        "operationId": "projects_get",
        "parameters": [
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/ProjectsSort"
            }
          },
          {
            "in": "query",
            "name": "name",
            "description": "Filter by project name, exact match.",
            "schema": {
              "$ref": "#/components/schemas/ResourceName"
            }
          },
          {
            "in": "query",
            "name": "search",
            "description": "Search by project name, slug, or UUID.",
            "schema": {
              "$ref": "#/components/schemas/Search"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonProjects"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}": {
      "get": {
        "tags": [
          "projects"
        ],
        "summary": "View a project",
        "description": "View a project. If the user is not authenticated, then only a public project is available. If the user is authenticated, then any public project and any private project where the user has `view` permissions is available.",
        "operationId": "project_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonProject"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "delete": {
        "tags": [
          "projects"
        ],
        "summary": "Delete a project",
        "description": "Delete a project. The user must have `delete` permissions for the project. By default, projects are soft-deleted. Set the `hard` query parameter to `true` to permanently delete the project (requires server admin).",
        "operationId": "project_delete",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "hard",
            "description": "Hard delete the project (requires server admin).",
            "schema": {
              "nullable": true,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful deletion",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "tags": [
          "projects"
        ],
        "summary": "Update a project",
        "description": "Update a project. The user must have `edit` permissions for the project.",
        "operationId": "project_patch",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonUpdateProject"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonProject"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/alerts": {
      "get": {
        "tags": [
          "projects",
          "alerts"
        ],
        "summary": "List alerts for a project",
        "description": "List all alerts for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project. By default, the alerts are sorted by status (active then dismissed) and modification date time in reverse chronological order. The HTTP response header `X-Total-Count` contains the total number of alerts.",
        "operationId": "proj_alerts_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/ProjAlertsSort"
            }
          },
          {
            "in": "query",
            "name": "archived",
            "description": "If set to `true`, only returns archived alerts. If not set or set to `false`, only returns alerts with non-archived branches, testbeds, or measures.",
            "schema": {
              "nullable": true,
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "status",
            "description": "Filter alerts by their status. If not set, returns all alerts.",
            "schema": {
              "$ref": "#/components/schemas/AlertStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonAlerts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/alerts/{alert}": {
      "get": {
        "tags": [
          "projects",
          "alerts"
        ],
        "summary": "View an alert",
        "description": "View an alert for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project.",
        "operationId": "proj_alert_get",
        "parameters": [
          {
            "in": "path",
            "name": "alert",
            "description": "The UUID for an alert.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/AlertUuid"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonAlert"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "tags": [
          "projects",
          "alerts"
        ],
        "summary": "Update an alert",
        "description": "Update an alert for a project. The user must have `edit` permissions for the project. Use this endpoint to dismiss an alert.",
        "operationId": "proj_alert_patch",
        "parameters": [
          {
            "in": "path",
            "name": "alert",
            "description": "The UUID for an alert.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/AlertUuid"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonUpdateAlert"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonAlert"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/allowed/{permission}": {
      "get": {
        "tags": [
          "projects",
          "allowed"
        ],
        "operationId": "proj_allowed_get",
        "parameters": [
          {
            "in": "path",
            "name": "permission",
            "description": "The permission to check.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ProjectPermission"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonAllowed"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/benchmarks": {
      "get": {
        "tags": [
          "projects",
          "benchmarks"
        ],
        "summary": "List benchmarks for a project",
        "description": "List all benchmarks for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project. By default, the benchmarks are sorted in alphabetical order by name. The HTTP response header `X-Total-Count` contains the total number of benchmarks.",
        "operationId": "proj_benchmarks_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/ProjBenchmarksSort"
            }
          },
          {
            "in": "query",
            "name": "archived",
            "description": "If set to `true`, only returns archived benchmarks. If not set or set to `false`, only returns non-archived benchmarks.",
            "schema": {
              "nullable": true,
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "name",
            "description": "Filter by benchmark name, exact match.",
            "schema": {
              "$ref": "#/components/schemas/BenchmarkName"
            }
          },
          {
            "in": "query",
            "name": "search",
            "description": "Search by benchmark name, slug, or UUID.",
            "schema": {
              "$ref": "#/components/schemas/Search"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonBenchmarks"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "projects",
          "benchmarks"
        ],
        "summary": "Create a benchmark",
        "description": "Create a benchmark for a project. The user must have `create` permissions for the project.",
        "operationId": "proj_benchmark_post",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewBenchmark"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonBenchmark"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/benchmarks/{benchmark}": {
      "get": {
        "tags": [
          "projects",
          "benchmarks"
        ],
        "summary": "View a benchmark",
        "description": "View a benchmark for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project.",
        "operationId": "proj_benchmark_get",
        "parameters": [
          {
            "in": "path",
            "name": "benchmark",
            "description": "The slug or UUID for a benchmark.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonBenchmark"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "delete": {
        "tags": [
          "projects",
          "benchmarks"
        ],
        "summary": "Delete a benchmark",
        "description": "Delete a benchmark for a project. The user must have `delete` permissions for the project. All reports that use this benchmark must be deleted first!",
        "operationId": "proj_benchmark_delete",
        "parameters": [
          {
            "in": "path",
            "name": "benchmark",
            "description": "The slug or UUID for a benchmark.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful deletion",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "tags": [
          "projects",
          "benchmarks"
        ],
        "summary": "Update a benchmark",
        "description": "Update a benchmark for a project. The user must have `edit` permissions for the project.",
        "operationId": "proj_benchmark_patch",
        "parameters": [
          {
            "in": "path",
            "name": "benchmark",
            "description": "The slug or UUID for a benchmark.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonUpdateBenchmark"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonBenchmark"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/branches": {
      "get": {
        "tags": [
          "projects",
          "branches"
        ],
        "summary": "List branches for a project",
        "description": "List all branches for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project. By default, the branches are sorted in alphabetical order by name. The HTTP response header `X-Total-Count` contains the total number of branches.",
        "operationId": "proj_branches_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/ProjBranchesSort"
            }
          },
          {
            "in": "query",
            "name": "archived",
            "description": "If set to `true`, only returns archived branches, if set to `true`. If not set or set to `false`, only returns non-archived branches.",
            "schema": {
              "nullable": true,
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "name",
            "description": "Filter by branch name, exact match.",
            "schema": {
              "$ref": "#/components/schemas/BranchName"
            }
          },
          {
            "in": "query",
            "name": "search",
            "description": "Search by branch name, slug, or UUID.",
            "schema": {
              "$ref": "#/components/schemas/Search"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonBranches"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "projects",
          "branches"
        ],
        "summary": "Create a branch",
        "description": "Create a branch for a project. The user must have `create` permissions for the project.",
        "operationId": "proj_branch_post",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewBranch"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonBranch"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/branches/{branch}": {
      "get": {
        "tags": [
          "projects",
          "branches"
        ],
        "summary": "View a branch",
        "description": "View a branch for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project.",
        "operationId": "proj_branch_get",
        "parameters": [
          {
            "in": "path",
            "name": "branch",
            "description": "The slug or UUID for a branch.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "head",
            "description": "View the branch with the specified head UUID. This can be used to view a branch with a historical head that has since been replaced by a new head. If not specified, then the current head is used.",
            "schema": {
              "$ref": "#/components/schemas/HeadUuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonBranch"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "delete": {
        "tags": [
          "projects",
          "branches"
        ],
        "summary": "Delete a branch",
        "description": "Delete a branch for a project. The user must have `delete` permissions for the project. All reports and thresholds that use this branch must be deleted first!",
        "operationId": "proj_branch_delete",
        "parameters": [
          {
            "in": "path",
            "name": "branch",
            "description": "The slug or UUID for a branch.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful deletion",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "tags": [
          "projects",
          "branches"
        ],
        "summary": "Update a branch",
        "description": "Update a branch for a project. The user must have `edit` permissions for the project.",
        "operationId": "proj_branch_patch",
        "parameters": [
          {
            "in": "path",
            "name": "branch",
            "description": "The slug or UUID for a branch.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonUpdateBranch"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonBranch"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/jobs": {
      "get": {
        "tags": [
          "projects",
          "jobs"
        ],
        "summary": "List jobs for a project",
        "description": "➕ Bencher Plus: List all jobs for a project. The job output is not included in the list response. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project. By default, the jobs are sorted by creation date time in reverse chronological order. The HTTP response header `X-Total-Count` contains the total number of jobs.",
        "operationId": "proj_jobs_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/ProjJobsSort"
            }
          },
          {
            "in": "query",
            "name": "status",
            "description": "Filter by job status.",
            "schema": {
              "$ref": "#/components/schemas/JobStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonJobs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/jobs/{job}": {
      "get": {
        "tags": [
          "projects",
          "jobs"
        ],
        "summary": "View a job",
        "description": "➕ Bencher Plus: View a job for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project. The job output is only included in the response for terminal (completed, failed, or canceled) jobs when the user is authenticated and has `view` permissions for the project.",
        "operationId": "proj_job_get",
        "parameters": [
          {
            "in": "path",
            "name": "job",
            "description": "The UUID for a job.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/JobUuid"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonJob"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/measures": {
      "get": {
        "tags": [
          "projects",
          "measures"
        ],
        "summary": "List measures for a project",
        "description": "List all measures for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project. By default, the measures are sorted in alphabetical order by name. The HTTP response header `X-Total-Count` contains the total number of measures.",
        "operationId": "proj_measures_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/ProjMeasuresSort"
            }
          },
          {
            "in": "query",
            "name": "archived",
            "description": "If set to `true`, only returns archived measures if set to `true`. If not set or set to `false`, only returns non-archived measures.",
            "schema": {
              "nullable": true,
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "name",
            "description": "Filter by measure name, exact match.",
            "schema": {
              "$ref": "#/components/schemas/ResourceName"
            }
          },
          {
            "in": "query",
            "name": "search",
            "description": "Search by measure name, slug, or UUID.",
            "schema": {
              "$ref": "#/components/schemas/Search"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonMeasures"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "projects",
          "measures"
        ],
        "summary": "Create a measure",
        "description": "Create a measure for a project. The user must have `create` permissions for the project.",
        "operationId": "proj_measure_post",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewMeasure"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonMeasure"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/measures/{measure}": {
      "get": {
        "tags": [
          "projects",
          "measures"
        ],
        "summary": "View a measure",
        "description": "View a measure for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project.",
        "operationId": "proj_measure_get",
        "parameters": [
          {
            "in": "path",
            "name": "measure",
            "description": "The slug or UUID for a measure.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonMeasure"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "delete": {
        "tags": [
          "projects",
          "measures"
        ],
        "summary": "Delete a measure",
        "description": "Delete a measure for a project. The user must have `delete` permissions for the project. All reports and thresholds that use this measure must be deleted first!",
        "operationId": "proj_measure_delete",
        "parameters": [
          {
            "in": "path",
            "name": "measure",
            "description": "The slug or UUID for a measure.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful deletion",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "tags": [
          "projects",
          "measures"
        ],
        "summary": "Update a measure",
        "description": "Update a measure for a project. The user must have `edit` permissions for the project.",
        "operationId": "proj_measure_patch",
        "parameters": [
          {
            "in": "path",
            "name": "measure",
            "description": "The slug or UUID for a measure.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonUpdateMeasure"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonMeasure"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/metrics/{metric}": {
      "get": {
        "tags": [
          "projects",
          "metrics"
        ],
        "summary": "View a metric",
        "description": "View a metric for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project.",
        "operationId": "proj_metric_get",
        "parameters": [
          {
            "in": "path",
            "name": "metric",
            "description": "The UUID for a metric.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MetricUuid"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonOneMetric"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/perf": {
      "get": {
        "tags": [
          "projects",
          "perf"
        ],
        "summary": "Query project performance metrics",
        "description": "Query the performance metrics for a project. The query results are every permutation of each branch, testbed, benchmark, and measure. There is a limit of 255 permutations for a single request. Therefore, only the first 255 permutations are returned. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project.",
        "operationId": "proj_perf_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "benchmarks",
            "description": "A comma separated list of benchmark UUIDs to query.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "branches",
            "description": "A comma separated list of branch UUIDs to query.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "end_time",
            "description": "Search for metrics before the given date time in milliseconds.",
            "schema": {
              "$ref": "#/components/schemas/DateTimeMillis"
            }
          },
          {
            "in": "query",
            "name": "heads",
            "description": "An optional comma separated list of branch head UUIDs. To not specify a particular branch head leave an empty entry in the list.",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "measures",
            "description": "A comma separated list of measure UUIDs to query.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "specs",
            "description": "An optional comma separated list of testbed spec UUIDs. To not specify a particular testbed spec leave an empty entry in the list.",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "start_time",
            "description": "Search for metrics after the given date time in milliseconds.",
            "schema": {
              "$ref": "#/components/schemas/DateTimeMillis"
            }
          },
          {
            "in": "query",
            "name": "testbeds",
            "description": "A comma separated list of testbed UUIDs to query.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonPerf"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/perf/img": {
      "get": {
        "tags": [
          "projects",
          "perf"
        ],
        "summary": "Generate a dynamic image of project performance metrics",
        "description": "Generate a dynamic image of performance metrics for a project. The query results are every permutation of each branch, testbed, benchmark, and measure. There is a limit of 8 permutations for a single image. Therefore, only the first 8 permutations are plotted. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project.",
        "operationId": "proj_perf_img_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "benchmarks",
            "description": "A comma separated list of benchmark UUIDs to query.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "branches",
            "description": "A comma separated list of branch UUIDs to query.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "end_time",
            "description": "Search for metrics before the given date time in milliseconds.",
            "schema": {
              "$ref": "#/components/schemas/DateTimeMillis"
            }
          },
          {
            "in": "query",
            "name": "heads",
            "description": "An optional comma separated list of branch head UUIDs. To not specify a particular branch head leave an empty entry in the list.",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "measures",
            "description": "A comma separated list of measure UUIDs to query.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "specs",
            "description": "An optional comma separated list of testbed spec UUIDs. To not specify a particular testbed spec leave an empty entry in the list.",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "start_time",
            "description": "Search for metrics after the given date time in milliseconds.",
            "schema": {
              "$ref": "#/components/schemas/DateTimeMillis"
            }
          },
          {
            "in": "query",
            "name": "testbeds",
            "description": "A comma separated list of testbed UUIDs to query.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "title",
            "description": "The title for the perf plot. If not provided, the project name will be used.",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/v0/projects/{project}/plots": {
      "get": {
        "tags": [
          "projects",
          "plots"
        ],
        "summary": "List plots for a project",
        "description": "List all plots for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project. By default, the plots are sorted in their index order. The HTTP response header `X-Total-Count` contains the total number of plots.",
        "operationId": "proj_plots_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/ProjPlotsSort"
            }
          },
          {
            "in": "query",
            "name": "search",
            "description": "Search by plot title or UUID.",
            "schema": {
              "$ref": "#/components/schemas/Search"
            }
          },
          {
            "in": "query",
            "name": "title",
            "description": "Filter by plot title, exact match.",
            "schema": {
              "$ref": "#/components/schemas/ResourceName"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonPlots"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "projects",
          "plots"
        ],
        "summary": "Create a plot",
        "description": "Create a plot for a project. The user must have `create` permissions for the project. A project can have a maximum of 64 plots at a time.",
        "operationId": "proj_plot_post",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewPlot"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonPlot"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/plots/{plot}": {
      "get": {
        "tags": [
          "projects",
          "plots"
        ],
        "summary": "View a plot",
        "description": "View a plot for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project.",
        "operationId": "proj_plot_get",
        "parameters": [
          {
            "in": "path",
            "name": "plot",
            "description": "The UUID for a plot.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PlotUuid"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonPlot"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "delete": {
        "tags": [
          "projects",
          "plots"
        ],
        "summary": "Delete a plot",
        "description": "Delete a plot for a project. The user must have `delete` permissions for the project.",
        "operationId": "proj_plot_delete",
        "parameters": [
          {
            "in": "path",
            "name": "plot",
            "description": "The UUID for a plot.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PlotUuid"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful deletion",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "tags": [
          "projects",
          "plots"
        ],
        "summary": "Update a plot",
        "description": "Update a plot for a project. The user must have `edit` permissions for the project.",
        "operationId": "proj_plot_patch",
        "parameters": [
          {
            "in": "path",
            "name": "plot",
            "description": "The UUID for a plot.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/PlotUuid"
            }
          },
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonUpdatePlot"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonPlot"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/reports": {
      "get": {
        "tags": [
          "projects",
          "reports"
        ],
        "summary": "List reports for a project",
        "description": "List all reports for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project. By default, the reports are sorted by date time in reverse chronological order. The HTTP response header `X-Total-Count` contains the total number of reports.",
        "operationId": "proj_reports_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/ProjReportsSort"
            }
          },
          {
            "in": "query",
            "name": "archived",
            "description": "If set to `true`, only return reports with an archived branch or testbed. If not set or set to `false`, only returns reports with non-archived branches and testbeds.",
            "schema": {
              "nullable": true,
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "branch",
            "description": "Filter by branch UUID, slug, or name exact match.",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "end_time",
            "description": "Filter for reports before the given date time in milliseconds.",
            "schema": {
              "$ref": "#/components/schemas/DateTimeMillis"
            }
          },
          {
            "in": "query",
            "name": "start_time",
            "description": "Filter for reports after the given date time in milliseconds.",
            "schema": {
              "$ref": "#/components/schemas/DateTimeMillis"
            }
          },
          {
            "in": "query",
            "name": "testbed",
            "description": "Filter by testbed UUID, slug, or name exact match.",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonReports"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "projects",
          "reports"
        ],
        "summary": "Create a report",
        "description": "Create a report for a project. The user must have `create` permissions for the project. If using the Bencher CLI, it is recommended to use the `bencher run` subcommand instead of trying to create a report manually.",
        "operationId": "proj_report_post",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewReport"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonReport"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/reports/{report}": {
      "get": {
        "tags": [
          "projects",
          "reports"
        ],
        "summary": "View a report",
        "description": "View a report for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project.",
        "operationId": "proj_report_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "report",
            "description": "The UUID for a report.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ReportUuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonReport"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "delete": {
        "tags": [
          "projects",
          "reports"
        ],
        "summary": "Delete a report",
        "description": "Delete a report for a project. The user must have `delete` permissions for the project. If there are no more reports for a branch version, then that version will be deleted. All later branch versions will have their version numbers decremented.",
        "operationId": "proj_report_delete",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "report",
            "description": "The UUID for a report.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ReportUuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful deletion",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/testbeds": {
      "get": {
        "tags": [
          "projects",
          "testbeds"
        ],
        "summary": "List testbeds for a project",
        "description": "List all testbeds for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project. By default, the testbeds are sorted in alphabetical order by name. The HTTP response header `X-Total-Count` contains the total number of testbeds.",
        "operationId": "proj_testbeds_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/ProjTestbedsSort"
            }
          },
          {
            "in": "query",
            "name": "archived",
            "description": "If set to `true`, only returns archived testbeds. If not set or set to `false`, only returns non-archived testbeds.",
            "schema": {
              "nullable": true,
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "name",
            "description": "Filter by testbed name, exact match.",
            "schema": {
              "$ref": "#/components/schemas/ResourceName"
            }
          },
          {
            "in": "query",
            "name": "search",
            "description": "Search by testbed name, slug, or UUID.",
            "schema": {
              "$ref": "#/components/schemas/Search"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonTestbeds"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "projects",
          "testbeds"
        ],
        "summary": "Create a testbed",
        "description": "Create a testbed for a project. The user must have `create` permissions for the project.",
        "operationId": "proj_testbed_post",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewTestbed"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonTestbed"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/testbeds/{testbed}": {
      "get": {
        "tags": [
          "projects",
          "testbeds"
        ],
        "summary": "View a testbed",
        "description": "View a testbed for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project.",
        "operationId": "proj_testbed_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "testbed",
            "description": "The slug or UUID for a testbed.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "spec",
            "description": "View the testbed with the specified spec UUID. This can be used to view a testbed with a historical spec that has since been replaced by a new spec. If not specified, then the current spec is used.",
            "schema": {
              "$ref": "#/components/schemas/SpecUuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonTestbed"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "delete": {
        "tags": [
          "projects",
          "testbeds"
        ],
        "summary": "Delete a testbed",
        "description": "Delete a testbed for a project. The user must have `delete` permissions for the project. All reports and thresholds that use this testbed must be deleted first!",
        "operationId": "proj_testbed_delete",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "testbed",
            "description": "The slug or UUID for a testbed.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful deletion",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "tags": [
          "projects",
          "testbeds"
        ],
        "summary": "Update a testbed",
        "description": "Update a testbed for a project. The user must have `edit` permissions for the project.",
        "operationId": "proj_testbed_patch",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "testbed",
            "description": "The slug or UUID for a testbed.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonUpdateTestbed"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonTestbed"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/thresholds": {
      "get": {
        "tags": [
          "projects",
          "thresholds"
        ],
        "summary": "List thresholds for a project",
        "description": "List all thresholds for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project. By default, the thresholds are sorted by creation date time in chronological order. The HTTP response header `X-Total-Count` contains the total number of thresholds.",
        "operationId": "proj_thresholds_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/ProjThresholdsSort"
            }
          },
          {
            "in": "query",
            "name": "archived",
            "description": "If set to `true`, only return thresholds with an archived branch, testbed, or measure. If not set or set to `false`, only returns thresholds with non-archived branches, testbeds, and measures.",
            "schema": {
              "nullable": true,
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "branch",
            "description": "Filter by branch name, exact match.",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "measure",
            "description": "Filter by measure name, exact match.",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "testbed",
            "description": "Filter by testbed name, exact match.",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonThresholds"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "projects",
          "thresholds"
        ],
        "summary": "Create a threshold",
        "description": "Create a threshold for a project. The user must have `create` permissions for the project. There can only be one threshold for any unique combination of: branch, testbed, and measure.",
        "operationId": "proj_threshold_post",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewThreshold"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonThreshold"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/projects/{project}/thresholds/{threshold}": {
      "get": {
        "tags": [
          "projects",
          "thresholds"
        ],
        "summary": "View a threshold",
        "description": "View a threshold for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project.",
        "operationId": "proj_threshold_get",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "threshold",
            "description": "The UUID for a threshold.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ThresholdUuid"
            }
          },
          {
            "in": "query",
            "name": "model",
            "description": "View the threshold with the specified model UUID. This can be used to view a threshold with a historical model that has since been replaced by a new model. If not specified, then the current model is used.",
            "schema": {
              "$ref": "#/components/schemas/ModelUuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonThreshold"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "put": {
        "tags": [
          "projects",
          "thresholds"
        ],
        "summary": "Update a threshold",
        "description": "Update a threshold for a project. The user must have `edit` permissions for the project. The new model will be added to the threshold and used going forward. The old model will be replaced but still show up in the report history and alerts created when it was active.",
        "operationId": "proj_threshold_put",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "threshold",
            "description": "The UUID for a threshold.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ThresholdUuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonUpdateThreshold"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonThreshold"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "delete": {
        "tags": [
          "projects",
          "thresholds"
        ],
        "summary": "Delete a threshold",
        "description": "Delete a threshold for a project. The user must have `delete` permissions for the project. A thresholds must be deleted before its branch, testbed, or measure can be deleted.",
        "operationId": "proj_threshold_delete",
        "parameters": [
          {
            "in": "path",
            "name": "project",
            "description": "The slug or UUID for a project.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "threshold",
            "description": "The UUID for a threshold.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ThresholdUuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful deletion",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/run": {
      "post": {
        "tags": [
          "run",
          "reports"
        ],
        "summary": "Create a run",
        "description": "Create a run. The user does not need have an account yet or be authenticated. The project may or may not exist yet.",
        "operationId": "run_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewRun"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonReport"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/runners": {
      "get": {
        "tags": [
          "runners"
        ],
        "summary": "List runners",
        "description": "➕ Bencher Plus: List all runners on the server. The user must be an admin to use this endpoint.",
        "operationId": "runners_get",
        "parameters": [
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/RunnersSort"
            }
          },
          {
            "in": "query",
            "name": "archived",
            "description": "Include archived runners.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "name",
            "description": "Filter by runner name, exact match.",
            "schema": {
              "$ref": "#/components/schemas/ResourceName"
            }
          },
          {
            "in": "query",
            "name": "search",
            "description": "Search by runner name, slug, or UUID.",
            "schema": {
              "$ref": "#/components/schemas/Search"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonRunners"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "runners"
        ],
        "summary": "Create a runner",
        "description": "➕ Bencher Plus: Create a new runner on the server. The user must be an admin to use this endpoint. Returns the runner token which is only shown once.",
        "operationId": "runners_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewRunner"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonRunnerToken"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/runners/{runner}": {
      "get": {
        "tags": [
          "runners"
        ],
        "summary": "View a runner",
        "description": "➕ Bencher Plus: View a runner on the server. The user must be an admin to use this endpoint.",
        "operationId": "runner_get",
        "parameters": [
          {
            "in": "path",
            "name": "runner",
            "description": "The slug or UUID for a runner.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonRunner"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "tags": [
          "runners"
        ],
        "summary": "Update a runner",
        "description": "➕ Bencher Plus: Update a runner on the server. The user must be an admin to use this endpoint. Can be used to archive or unarchive a runner.",
        "operationId": "runner_patch",
        "parameters": [
          {
            "in": "path",
            "name": "runner",
            "description": "The slug or UUID for a runner.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonUpdateRunner"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonRunner"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/runners/{runner}/channel": {
      "get": {
        "tags": [
          "runners"
        ],
        "summary": "Persistent WebSocket channel for runner lifecycle",
        "description": "➕ Bencher Plus: Single persistent WebSocket connection for job assignment and execution. Runner sends `Ready` to request a job, server pushes `Job` or `NoJob`. During execution, handles `Running`, `Heartbeat`, `Completed`, `Failed`, and `Canceled` messages. Authentication is via runner token in the Authorization header.",
        "operationId": "runner_channel",
        "parameters": [
          {
            "in": "path",
            "name": "runner",
            "description": "The slug or UUID for a runner.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        },
        "x-dropshot-websocket": {}
      }
    },
    "/v0/runners/{runner}/specs": {
      "get": {
        "tags": [
          "runners"
        ],
        "summary": "List specs for a runner",
        "description": "➕ Bencher Plus: List all hardware specs associated with a runner. The user must be an admin to use this endpoint.",
        "operationId": "runner_specs_get",
        "parameters": [
          {
            "in": "path",
            "name": "runner",
            "description": "The slug or UUID for a runner.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonSpecs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "runners"
        ],
        "summary": "Add a spec to a runner",
        "description": "➕ Bencher Plus: Associate a hardware spec with a runner. The user must be an admin to use this endpoint.",
        "operationId": "runner_specs_post",
        "parameters": [
          {
            "in": "path",
            "name": "runner",
            "description": "The slug or UUID for a runner.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewRunnerSpec"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonSpec"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/runners/{runner}/specs/{spec}": {
      "delete": {
        "tags": [
          "runners"
        ],
        "summary": "Remove a spec from a runner",
        "description": "➕ Bencher Plus: Remove the association between a hardware spec and a runner. The user must be an admin to use this endpoint.",
        "operationId": "runner_spec_delete",
        "parameters": [
          {
            "in": "path",
            "name": "runner",
            "description": "The slug or UUID for a runner.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "spec",
            "description": "The UUID or slug for a spec.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful deletion",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/runners/{runner}/token": {
      "post": {
        "tags": [
          "runners"
        ],
        "summary": "Rotate runner token",
        "description": "➕ Bencher Plus: Generate a new token for a runner, invalidating the old one. The user must be an admin to use this endpoint. Returns the new token which is only shown once.",
        "operationId": "runner_token_post",
        "parameters": [
          {
            "in": "path",
            "name": "runner",
            "description": "The slug or UUID for a runner.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonRunnerToken"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/server/backup": {
      "post": {
        "tags": [
          "server"
        ],
        "summary": "Backup server",
        "description": "Backup the API server database. The user must be an admin on the server to use this route.",
        "operationId": "server_backup_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonBackup"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonBackupCreated"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/server/config": {
      "get": {
        "tags": [
          "server"
        ],
        "summary": "View server configuration",
        "description": "View the API server configuration. The user must be an admin on the server to use this route.",
        "operationId": "server_config_get",
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonConfig"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/server/config/console": {
      "get": {
        "tags": [
          "server"
        ],
        "summary": "View console configuration",
        "description": "View the Bencher Console configuration managed by the API server. This is a public route and does not require authentication.",
        "operationId": "server_config_console_get",
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonConsole"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/server/spec": {
      "get": {
        "tags": [
          "server"
        ],
        "summary": "View server OpenAPI specification",
        "description": "View the API server OpenAPI specification. The OpenAPI specification can be used to generate API client code.",
        "operationId": "server_spec_get",
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonOpenApiSpec"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/server/stats": {
      "get": {
        "tags": [
          "server",
          "stats"
        ],
        "summary": "View server stats",
        "description": "➕ Bencher Plus: View the API server stats. The user must be an admin on the server to use this route.",
        "operationId": "server_stats_get",
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonServerStats"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "server",
          "stats"
        ],
        "operationId": "server_stats_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonServerStats"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "successfully enqueued operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "title": "Null",
                  "type": "string",
                  "enum": [
                    null
                  ]
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/server/stats/{server}": {
      "get": {
        "tags": [
          "server",
          "stats"
        ],
        "operationId": "server_startup_stats_get",
        "parameters": [
          {
            "in": "path",
            "name": "server",
            "description": "The UUID for the self-hosted server.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ServerUuid"
            }
          },
          {
            "in": "query",
            "name": "startup",
            "description": "Server startup.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/BooleanParam"
            }
          },
          {
            "in": "query",
            "name": "stats",
            "description": "Server stats.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/BooleanParam"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonUuid"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/server/version": {
      "get": {
        "tags": [
          "server"
        ],
        "summary": "View server version",
        "description": "View the API server version. This is used to verify that the CLI and API server are compatible. It can also be used as a simple endpoint to verify that the server is running.",
        "operationId": "server_version_get",
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonApiVersion"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/specs": {
      "get": {
        "tags": [
          "specs"
        ],
        "summary": "List specs",
        "description": "➕ Bencher Plus: List all hardware specs on the server. The user must be an admin to use this endpoint.",
        "operationId": "specs_get",
        "parameters": [
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/SpecsSort"
            }
          },
          {
            "in": "query",
            "name": "archived",
            "description": "Include archived specs.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "name",
            "description": "Filter by spec name, exact match.",
            "schema": {
              "$ref": "#/components/schemas/ResourceName"
            }
          },
          {
            "in": "query",
            "name": "search",
            "description": "Search by spec name, slug, or UUID.",
            "schema": {
              "$ref": "#/components/schemas/Search"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonSpecs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "specs"
        ],
        "summary": "Create a spec",
        "description": "➕ Bencher Plus: Create a new hardware spec on the server. The user must be an admin to use this endpoint.",
        "operationId": "specs_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewSpec"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonSpec"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/specs/{spec}": {
      "get": {
        "tags": [
          "specs"
        ],
        "summary": "View a spec",
        "description": "➕ Bencher Plus: View a hardware spec on the server. The user must be an admin to use this endpoint.",
        "operationId": "spec_get",
        "parameters": [
          {
            "in": "path",
            "name": "spec",
            "description": "The UUID or slug for a spec.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonSpec"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "delete": {
        "tags": [
          "specs"
        ],
        "summary": "Delete a spec",
        "description": "➕ Bencher Plus: Delete a hardware spec from the server. The user must be an admin to use this endpoint. Returns 409 Conflict if the spec is referenced by runners or jobs.",
        "operationId": "spec_delete",
        "parameters": [
          {
            "in": "path",
            "name": "spec",
            "description": "The UUID or slug for a spec.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful deletion",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "tags": [
          "specs"
        ],
        "summary": "Update a spec",
        "description": "➕ Bencher Plus: Update a hardware spec on the server. The user must be an admin to use this endpoint.",
        "operationId": "spec_patch",
        "parameters": [
          {
            "in": "path",
            "name": "spec",
            "description": "The UUID or slug for a spec.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonUpdateSpec"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonSpec"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/users": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "List users",
        "description": "List all users. The user must be an admin on the server to use this route. The HTTP response header `X-Total-Count` contains the total number of users.",
        "operationId": "users_get",
        "parameters": [
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/UsersSort"
            }
          },
          {
            "in": "query",
            "name": "name",
            "description": "Filter by user name, exact match.",
            "schema": {
              "$ref": "#/components/schemas/UserName"
            }
          },
          {
            "in": "query",
            "name": "search",
            "description": "Search by user name, slug, or UUID.",
            "schema": {
              "$ref": "#/components/schemas/Search"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonUsers"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/users/{user}": {
      "get": {
        "tags": [
          "users"
        ],
        "summary": "View a user",
        "description": "View a user. Only the authenticated user themselves and server admins have access to this endpoint. To view users within your organization, use the organization members endpoints.",
        "operationId": "user_get",
        "parameters": [
          {
            "in": "path",
            "name": "user",
            "description": "The slug or UUID for a user.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonUser"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "tags": [
          "users"
        ],
        "summary": "Update a user",
        "description": "Update a user. Only the authenticated user themselves and server admins have access to this endpoint. Some fields can only be updated by an admin. To manage users within your organization, use the organization members endpoints.",
        "operationId": "user_patch",
        "parameters": [
          {
            "in": "path",
            "name": "user",
            "description": "The slug or UUID for a user.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonUpdateUser"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonUser"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/users/{user}/tokens": {
      "get": {
        "tags": [
          "users",
          "tokens"
        ],
        "summary": "List tokens for a user",
        "description": "List all API tokens for a user. Only the authenticated user themselves and server admins have access to this endpoint. By default, the tokens are sorted in alphabetical order by name. The HTTP response header `X-Total-Count` contains the total number of tokens.",
        "operationId": "user_tokens_get",
        "parameters": [
          {
            "in": "path",
            "name": "user",
            "description": "The slug or UUID for a user.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "direction",
            "description": "The direction to sort by. If not specified, the default sort direction is used.",
            "schema": {
              "$ref": "#/components/schemas/JsonDirection"
            }
          },
          {
            "in": "query",
            "name": "page",
            "description": "The page number to return. If not specified, the first page is returned.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "per_page",
            "description": "The number of items to return per page. If not specified, the default number of items per page (8) is used.",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint8",
              "minimum": 0
            }
          },
          {
            "in": "query",
            "name": "sort",
            "description": "The field to sort by. If not specified, the default sort field is used.",
            "schema": {
              "$ref": "#/components/schemas/UserTokensSort"
            }
          },
          {
            "in": "query",
            "name": "name",
            "description": "Filter by token name, exact match.",
            "schema": {
              "$ref": "#/components/schemas/ResourceName"
            }
          },
          {
            "in": "query",
            "name": "search",
            "description": "Search by token name, slug, or UUID.",
            "schema": {
              "$ref": "#/components/schemas/Search"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonTokens"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "post": {
        "tags": [
          "users",
          "tokens"
        ],
        "summary": "Create a token",
        "description": "Create an API token for a user. Only the authenticated user themselves and server admins have access to this endpoint.",
        "operationId": "user_token_post",
        "parameters": [
          {
            "in": "path",
            "name": "user",
            "description": "The slug or UUID for a user.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonNewToken"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "successful creation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonToken"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v0/users/{user}/tokens/{token}": {
      "get": {
        "tags": [
          "users",
          "tokens"
        ],
        "summary": "View a token",
        "description": "View an API token for a user. Only the authenticated user themselves and server admins have access to this endpoint.",
        "operationId": "user_token_get",
        "parameters": [
          {
            "in": "path",
            "name": "token",
            "description": "The UUID for a token.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "path",
            "name": "user",
            "description": "The slug or UUID for a user.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonToken"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      },
      "patch": {
        "tags": [
          "users",
          "tokens"
        ],
        "summary": "Update a token",
        "description": "Update an API token for a user. Only the authenticated user themselves and server admins have access to this endpoint.",
        "operationId": "user_token_patch",
        "parameters": [
          {
            "in": "path",
            "name": "token",
            "description": "The UUID for a token.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "path",
            "name": "user",
            "description": "The slug or UUID for a user.",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JsonUpdateToken"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "successful operation",
            "headers": {
              "access-control-allow-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-methods": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-allow-origin": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "access-control-expose-headers": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              },
              "x-total-count": {
                "style": "simple",
                "required": true,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonToken"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/Error"
          },
          "5XX": {
            "$ref": "#/components/responses/Error"
          }
        }
      }
    },
    "/v2": {
      "get": {
        "tags": [
          "oci"
        ],
        "summary": "OCI API version check endpoint",
        "description": "Returns 200 OK if a valid Bearer token is provided. Returns 401 Unauthorized with WWW-Authenticate header if not authenticated. Accepts auth (user) and public (anonymous) OCI tokens.",
        "operationId": "oci_base",
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/v2/{name}/blobs/{ref}": {
      "get": {
        "tags": [
          "oci"
        ],
        "summary": "Download a blob (GET)",
        "description": "Streams the blob content rather than loading it entirely into memory, making this suitable for large container image layers.",
        "operationId": "oci_blob_get",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "ref",
            "description": "Reference - either a digest (e.g., \"sha256:abc123...\") or \"uploads\"",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "oci"
        ],
        "summary": "Monolithic upload (PUT to /v2/{name}/blobs/uploads?digest=...)",
        "description": "Uploads a complete blob in a single request. The request body is streamed to storage incrementally, so memory usage is bounded by the network chunk size rather than the total blob size.\n\n# Authentication\n\nAuthentication is optional for unclaimed projects. If the project's organization is claimed, valid authentication with Create permission is required. If the project doesn't exist and a slug is used, the project will be created automatically.",
        "operationId": "oci_upload_monolithic",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "ref",
            "description": "Reference - either a digest (e.g., \"sha256:abc123...\") or \"uploads\"",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "digest",
            "description": "Expected digest of the complete blob",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "oci"
        ],
        "summary": "Start a new blob upload (POST to /v2/{name}/blobs/uploads)",
        "description": "Authentication is optional for unclaimed projects. If the project's organization is claimed, valid authentication with Create permission is required. If the project doesn't exist and a slug is used, the project will be created automatically.",
        "operationId": "oci_upload_start",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "ref",
            "description": "Reference - either a digest (e.g., \"sha256:abc123...\") or \"uploads\"",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "digest",
            "description": "Digest of blob to mount from another repository",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "description": "Source repository for cross-repo mount",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "oci"
        ],
        "summary": "Delete a blob (DELETE)",
        "operationId": "oci_blob_delete",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "ref",
            "description": "Reference - either a digest (e.g., \"sha256:abc123...\") or \"uploads\"",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      },
      "head": {
        "tags": [
          "oci"
        ],
        "summary": "Check if a blob exists (HEAD) or start upload check",
        "operationId": "oci_blob_exists",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "ref",
            "description": "Reference - either a digest (e.g., \"sha256:abc123...\") or \"uploads\"",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/v2/{name}/blobs/{ref}/{session_id}": {
      "get": {
        "tags": [
          "oci"
        ],
        "summary": "Get upload status",
        "operationId": "oci_upload_status",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "ref",
            "description": "Must be \"uploads\" for upload operations",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "session_id",
            "description": "Upload session ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "oci"
        ],
        "summary": "Complete an upload (with digest verification)",
        "operationId": "oci_upload_complete",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "ref",
            "description": "Must be \"uploads\" for upload operations",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "session_id",
            "description": "Upload session ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "digest",
            "description": "Expected digest of the complete blob",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "oci"
        ],
        "summary": "Cancel an upload",
        "operationId": "oci_upload_cancel",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "ref",
            "description": "Must be \"uploads\" for upload operations",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "session_id",
            "description": "Upload session ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "oci"
        ],
        "summary": "Upload a chunk of data",
        "description": "Appends a chunk of data to an in-progress upload session. This is the recommended approach for large blobs, as each chunk is stored immediately rather than buffering the entire blob in memory.\n\nClients can call this endpoint multiple times to upload a blob in pieces, then call `PUT /v2/{name}/blobs/uploads/{session_id}?digest=...` to complete the upload.\n\nThe `Content-Range` header is optional but recommended - if provided, the server validates that the chunk starts at the expected offset.",
        "operationId": "oci_upload_chunk",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "ref",
            "description": "Must be \"uploads\" for upload operations",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "session_id",
            "description": "Upload session ID",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/v2/{name}/manifests/{reference}": {
      "get": {
        "tags": [
          "oci"
        ],
        "summary": "Download a manifest",
        "operationId": "oci_manifest_get",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "reference",
            "description": "Reference (tag or digest)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "oci"
        ],
        "summary": "Upload a manifest",
        "description": "Authentication is optional for unclaimed projects. If the project's organization is claimed, valid authentication with Create permission is required. If the project doesn't exist and a slug is used, the project will be created automatically.",
        "operationId": "oci_manifest_put",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "reference",
            "description": "Reference (tag or digest)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          },
          "required": true
        },
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "oci"
        ],
        "summary": "Delete a manifest",
        "operationId": "oci_manifest_delete",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "reference",
            "description": "Reference (tag or digest)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      },
      "head": {
        "tags": [
          "oci"
        ],
        "summary": "Check if a manifest exists",
        "operationId": "oci_manifest_exists",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "path",
            "name": "reference",
            "description": "Reference (tag or digest)",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/v2/{name}/referrers/{digest}": {
      "get": {
        "tags": [
          "oci"
        ],
        "summary": "List referrers to a manifest",
        "description": "Returns an image index containing descriptors of all manifests that reference the specified digest via their `subject` field.",
        "operationId": "oci_referrers_list",
        "parameters": [
          {
            "in": "path",
            "name": "digest",
            "description": "Digest of the manifest to find referrers for",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "artifactType",
            "description": "Filter by artifact type",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/v2/{name}/tags/list": {
      "get": {
        "tags": [
          "oci"
        ],
        "summary": "List tags for a repository",
        "description": "Returns a list of tags for the specified repository with optional pagination. When more results are available, a `Link` header is included with a URL to fetch the next page of results per the OCI Distribution Spec.",
        "operationId": "oci_tags_list",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "description": "Project resource ID (UUID or slug)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ResourceId"
            }
          },
          {
            "in": "query",
            "name": "last",
            "description": "Last tag from previous response (for pagination)",
            "schema": {
              "nullable": true,
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "n",
            "description": "Number of tags to return (default: 100)",
            "schema": {
              "nullable": true,
              "type": "integer",
              "format": "uint32",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "default": {
            "description": "",
            "content": {
              "*/*": {
                "schema": {}
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Adapter": {
        "type": "string",
        "enum": [
          "magic",
          "json",
          "rust",
          "rust_bench",
          "rust_criterion",
          "rust_iai",
          "rust_gungraun",
          "cpp",
          "cpp_google",
          "cpp_catch2",
          "go",
          "go_bench",
          "java",
          "java_jmh",
          "c_sharp",
          "c_sharp_dot_net",
          "js",
          "js_benchmark",
          "js_time",
          "python",
          "python_asv",
          "python_pytest",
          "ruby",
          "ruby_benchmark",
          "shell",
          "shell_hyperfine",
          "dart",
          "dart_benchmark_harness"
        ]
      },
      "AlertStatus": {
        "oneOf": [
          {
            "description": "The alert is active.",
            "type": "string",
            "enum": [
              "active"
            ]
          },
          {
            "description": "The alert has been dismissed by a user.",
            "type": "string",
            "enum": [
              "dismissed"
            ]
          },
          {
            "description": "The alert has been silenced by the system.",
            "type": "string",
            "enum": [
              "silenced"
            ]
          }
        ]
      },
      "AlertUuid": {
        "type": "string",
        "format": "uuid"
      },
      "Architecture": {
        "type": "string",
        "enum": [
          "x86_64",
          "aarch64"
        ]
      },
      "BenchmarkName": {
        "type": "string"
      },
      "BenchmarkSlug": {
        "$ref": "#/components/schemas/Slug"
      },
      "BenchmarkUuid": {
        "type": "string",
        "format": "uuid"
      },
      "BigInt": {
        "type": "integer",
        "format": "uint64",
        "minimum": 0
      },
      "Boundary": {
        "type": "number",
        "format": "double"
      },
      "BoundaryLimit": {
        "type": "string",
        "enum": [
          "lower",
          "upper"
        ]
      },
      "BranchName": {
        "type": "string"
      },
      "BranchSlug": {
        "$ref": "#/components/schemas/Slug"
      },
      "BranchUuid": {
        "type": "string",
        "format": "uuid"
      },
      "CardBrand": {
        "type": "string",
        "enum": [
          "amex",
          "diners",
          "discover",
          "jcb",
          "mastercard",
          "unionpay",
          "visa",
          "unknown"
        ]
      },
      "Cpu": {
        "type": "integer",
        "format": "uint32",
        "minimum": 0
      },
      "DataStore": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "access_key_id": {
                "type": "string"
              },
              "access_point": {
                "type": "string"
              },
              "secret_access_key": {
                "$ref": "#/components/schemas/Secret"
              },
              "service": {
                "type": "string",
                "enum": [
                  "aws_s3"
                ]
              }
            },
            "required": [
              "access_key_id",
              "access_point",
              "secret_access_key",
              "service"
            ]
          }
        ]
      },
      "DateTime": {
        "type": "string",
        "format": "date-time"
      },
      "Disk": {
        "type": "integer",
        "format": "uint64",
        "minimum": 0
      },
      "Email": {
        "type": "string"
      },
      "Entitlements": {
        "type": "integer",
        "format": "uint32",
        "minimum": 0
      },
      "Error": {
        "description": "Error information from a response.",
        "type": "object",
        "properties": {
          "error_code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          }
        },
        "required": [
          "message",
          "request_id"
        ]
      },
      "ExpirationMonth": {
        "type": "integer",
        "format": "int32"
      },
      "ExpirationYear": {
        "type": "integer",
        "format": "int32"
      },
      "GitHash": {
        "type": "string"
      },
      "GracePeriod": {
        "type": "integer",
        "format": "uint32",
        "minimum": 0
      },
      "HeadUuid": {
        "type": "string",
        "format": "uuid"
      },
      "HeartbeatTimeout": {
        "type": "integer",
        "format": "uint32",
        "minimum": 0
      },
      "IfExists": {
        "type": "string",
        "enum": [
          "fail",
          "truncate",
          "append"
        ]
      },
      "ImageDigest": {
        "description": "An OCI image digest in the format `algorithm:hex`.\n\nSupports: - `sha256:` followed by 64 hex characters - `sha512:` followed by 128 hex characters",
        "type": "string"
      },
      "ImageReference": {
        "type": "string"
      },
      "Index": {
        "type": "integer",
        "format": "uint8",
        "minimum": 0
      },
      "Iteration": {
        "type": "integer",
        "format": "uint32",
        "minimum": 0
      },
      "JobStatus": {
        "description": "Job status",
        "type": "string",
        "enum": [
          "pending",
          "claimed",
          "running",
          "completed",
          "processed",
          "failed",
          "canceled"
        ]
      },
      "JobUuid": {
        "type": "string",
        "format": "uuid"
      },
      "JsonAccept": {
        "type": "object",
        "properties": {
          "invite": {
            "$ref": "#/components/schemas/Jwt"
          }
        },
        "required": [
          "invite"
        ]
      },
      "JsonAlert": {
        "type": "object",
        "properties": {
          "benchmark": {
            "$ref": "#/components/schemas/JsonBenchmark"
          },
          "boundary": {
            "$ref": "#/components/schemas/JsonBoundary"
          },
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "iteration": {
            "$ref": "#/components/schemas/Iteration"
          },
          "limit": {
            "$ref": "#/components/schemas/BoundaryLimit"
          },
          "metric": {
            "$ref": "#/components/schemas/JsonMetric"
          },
          "modified": {
            "$ref": "#/components/schemas/DateTime"
          },
          "report": {
            "$ref": "#/components/schemas/ReportUuid"
          },
          "status": {
            "$ref": "#/components/schemas/AlertStatus"
          },
          "threshold": {
            "$ref": "#/components/schemas/JsonThreshold"
          },
          "uuid": {
            "$ref": "#/components/schemas/AlertUuid"
          }
        },
        "required": [
          "benchmark",
          "boundary",
          "created",
          "iteration",
          "limit",
          "metric",
          "modified",
          "report",
          "status",
          "threshold",
          "uuid"
        ]
      },
      "JsonAlerts": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonAlert"
        }
      },
      "JsonAllowed": {
        "type": "object",
        "properties": {
          "allowed": {
            "type": "boolean"
          }
        },
        "required": [
          "allowed"
        ]
      },
      "JsonApiVersion": {
        "type": "object",
        "properties": {
          "version": {
            "type": "string"
          }
        },
        "required": [
          "version"
        ]
      },
      "JsonAuthAck": {
        "type": "object",
        "properties": {
          "email": {
            "$ref": "#/components/schemas/Email"
          }
        },
        "required": [
          "email"
        ]
      },
      "JsonAuthUser": {
        "type": "object",
        "properties": {
          "creation": {
            "$ref": "#/components/schemas/DateTime"
          },
          "expiration": {
            "$ref": "#/components/schemas/DateTime"
          },
          "token": {
            "$ref": "#/components/schemas/Jwt"
          },
          "user": {
            "$ref": "#/components/schemas/JsonUser"
          }
        },
        "required": [
          "creation",
          "expiration",
          "token",
          "user"
        ]
      },
      "JsonAverage": {
        "type": "string",
        "enum": [
          "mean",
          "median"
        ]
      },
      "JsonBackup": {
        "type": "object",
        "properties": {
          "compress": {
            "nullable": true,
            "description": "Compress the database backup with gzip. This operation runs first.",
            "type": "boolean"
          },
          "data_store": {
            "nullable": true,
            "description": "Save the database backup to this data store. This operation runs second.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonDataStore"
              }
            ]
          },
          "remove": {
            "nullable": true,
            "description": "Remove the local copy of the database backup. This operation runs third.",
            "type": "boolean"
          }
        }
      },
      "JsonBackupCreated": {
        "type": "object",
        "properties": {
          "created": {
            "$ref": "#/components/schemas/DateTime"
          }
        },
        "required": [
          "created"
        ]
      },
      "JsonBenchmark": {
        "type": "object",
        "properties": {
          "archived": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "modified": {
            "$ref": "#/components/schemas/DateTime"
          },
          "name": {
            "$ref": "#/components/schemas/BenchmarkName"
          },
          "project": {
            "$ref": "#/components/schemas/ProjectUuid"
          },
          "slug": {
            "$ref": "#/components/schemas/BenchmarkSlug"
          },
          "uuid": {
            "$ref": "#/components/schemas/BenchmarkUuid"
          }
        },
        "required": [
          "created",
          "modified",
          "name",
          "project",
          "slug",
          "uuid"
        ]
      },
      "JsonBenchmarks": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonBenchmark"
        }
      },
      "JsonBilling": {
        "type": "object",
        "properties": {
          "products": {
            "$ref": "#/components/schemas/JsonProducts"
          },
          "secret_key": {
            "$ref": "#/components/schemas/Secret"
          }
        },
        "required": [
          "products",
          "secret_key"
        ]
      },
      "JsonBingIndex": {
        "type": "object",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/NonEmpty"
          },
          "key_location": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Url"
              }
            ]
          }
        },
        "required": [
          "key"
        ]
      },
      "JsonBoundary": {
        "type": "object",
        "properties": {
          "baseline": {
            "nullable": true,
            "type": "number",
            "format": "double"
          },
          "lower_limit": {
            "nullable": true,
            "type": "number",
            "format": "double"
          },
          "upper_limit": {
            "nullable": true,
            "type": "number",
            "format": "double"
          }
        }
      },
      "JsonBranch": {
        "type": "object",
        "properties": {
          "archived": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "head": {
            "$ref": "#/components/schemas/JsonHead"
          },
          "modified": {
            "$ref": "#/components/schemas/DateTime"
          },
          "name": {
            "$ref": "#/components/schemas/BranchName"
          },
          "project": {
            "$ref": "#/components/schemas/ProjectUuid"
          },
          "slug": {
            "$ref": "#/components/schemas/BranchSlug"
          },
          "uuid": {
            "$ref": "#/components/schemas/BranchUuid"
          }
        },
        "required": [
          "created",
          "head",
          "modified",
          "name",
          "project",
          "slug",
          "uuid"
        ]
      },
      "JsonBranches": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonBranch"
        }
      },
      "JsonCardDetails": {
        "type": "object",
        "properties": {
          "brand": {
            "$ref": "#/components/schemas/CardBrand"
          },
          "exp_month": {
            "$ref": "#/components/schemas/ExpirationMonth"
          },
          "exp_year": {
            "$ref": "#/components/schemas/ExpirationYear"
          },
          "last_four": {
            "$ref": "#/components/schemas/LastFour"
          }
        },
        "required": [
          "brand",
          "exp_month",
          "exp_year",
          "last_four"
        ]
      },
      "JsonCheckout": {
        "type": "object",
        "properties": {
          "session": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "session",
          "url"
        ]
      },
      "JsonCheckpoint": {
        "type": "object",
        "properties": {
          "interval": {
            "nullable": true,
            "description": "How often to perform a non-blocking PASSIVE checkpoint",
            "type": "string"
          },
          "min_page_count": {
            "nullable": true,
            "description": "Minimum WAL pages before a PASSIVE checkpoint triggers",
            "type": "integer",
            "format": "uint64",
            "minimum": 0
          },
          "truncate_page_n": {
            "nullable": true,
            "description": "Page threshold for blocking TRUNCATE checkpoint (0 to disable)",
            "type": "integer",
            "format": "uint64",
            "minimum": 0
          }
        }
      },
      "JsonCloud": {
        "type": "object",
        "properties": {
          "billing": {
            "$ref": "#/components/schemas/JsonBilling"
          },
          "index": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonIndex"
              }
            ]
          },
          "license_pem": {
            "$ref": "#/components/schemas/Secret"
          },
          "otel": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonOtel"
              }
            ]
          },
          "recaptcha": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRecaptcha"
              }
            ]
          },
          "sentry": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Secret"
              }
            ]
          }
        },
        "required": [
          "billing",
          "license_pem"
        ]
      },
      "JsonCohort": {
        "type": "object",
        "properties": {
          "month": {
            "type": "integer",
            "format": "uint64",
            "minimum": 0
          },
          "total": {
            "type": "integer",
            "format": "uint64",
            "minimum": 0
          },
          "week": {
            "type": "integer",
            "format": "uint64",
            "minimum": 0
          }
        },
        "required": [
          "month",
          "total",
          "week"
        ]
      },
      "JsonCohortAvg": {
        "type": "object",
        "properties": {
          "month": {
            "type": "number",
            "format": "double"
          },
          "total": {
            "type": "number",
            "format": "double"
          },
          "week": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "month",
          "total",
          "week"
        ]
      },
      "JsonConfig": {
        "type": "object",
        "properties": {
          "console": {
            "$ref": "#/components/schemas/JsonConsole"
          },
          "database": {
            "$ref": "#/components/schemas/JsonDatabase"
          },
          "logging": {
            "$ref": "#/components/schemas/JsonLogging"
          },
          "plus": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonPlus"
              }
            ]
          },
          "security": {
            "$ref": "#/components/schemas/JsonSecurity"
          },
          "server": {
            "$ref": "#/components/schemas/JsonServer2"
          },
          "smtp": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonSmtp"
              }
            ]
          }
        },
        "required": [
          "console",
          "database",
          "logging",
          "security",
          "server"
        ]
      },
      "JsonConfirm": {
        "type": "object",
        "properties": {
          "token": {
            "$ref": "#/components/schemas/Jwt"
          }
        },
        "required": [
          "token"
        ]
      },
      "JsonConsole": {
        "type": "object",
        "properties": {
          "url": {
            "description": "The URL for the Bencher Console UI.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Url"
              }
            ]
          }
        },
        "required": [
          "url"
        ]
      },
      "JsonCustomer": {
        "type": "object",
        "properties": {
          "email": {
            "$ref": "#/components/schemas/Email"
          },
          "name": {
            "$ref": "#/components/schemas/NonEmpty"
          },
          "uuid": {
            "$ref": "#/components/schemas/UserUuid"
          }
        },
        "required": [
          "email",
          "name",
          "uuid"
        ]
      },
      "JsonDataStore": {
        "type": "string",
        "enum": [
          "aws_s3"
        ]
      },
      "JsonDatabase": {
        "type": "object",
        "properties": {
          "busy_timeout": {
            "nullable": true,
            "description": "The database busy timeout in milliseconds",
            "type": "integer",
            "format": "uint32",
            "minimum": 0
          },
          "data_store": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DataStore"
              }
            ]
          },
          "file": {
            "type": "string"
          }
        },
        "required": [
          "file"
        ]
      },
      "JsonFold": {
        "type": "string",
        "enum": [
          "min",
          "max",
          "mean",
          "median"
        ]
      },
      "JsonGitHub": {
        "type": "object",
        "properties": {
          "client_id": {
            "$ref": "#/components/schemas/NonEmpty"
          },
          "client_secret": {
            "$ref": "#/components/schemas/Secret"
          }
        },
        "required": [
          "client_id",
          "client_secret"
        ]
      },
      "JsonGoogle": {
        "type": "object",
        "properties": {
          "client_id": {
            "$ref": "#/components/schemas/NonEmpty"
          },
          "client_secret": {
            "$ref": "#/components/schemas/Secret"
          }
        },
        "required": [
          "client_id",
          "client_secret"
        ]
      },
      "JsonGoogleIndex": {
        "type": "object",
        "properties": {
          "client_email": {
            "$ref": "#/components/schemas/NonEmpty"
          },
          "private_key": {
            "$ref": "#/components/schemas/Secret"
          },
          "token_uri": {
            "$ref": "#/components/schemas/NonEmpty"
          }
        },
        "required": [
          "client_email",
          "private_key",
          "token_uri"
        ]
      },
      "JsonHead": {
        "type": "object",
        "properties": {
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "replaced": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "start_point": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonStartPoint"
              }
            ]
          },
          "uuid": {
            "$ref": "#/components/schemas/HeadUuid"
          },
          "version": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonVersion"
              }
            ]
          }
        },
        "required": [
          "created",
          "uuid"
        ]
      },
      "JsonIndex": {
        "type": "object",
        "properties": {
          "bing": {
            "$ref": "#/components/schemas/JsonBingIndex"
          },
          "google": {
            "$ref": "#/components/schemas/JsonGoogleIndex"
          }
        },
        "required": [
          "bing",
          "google"
        ]
      },
      "JsonIterationOutput": {
        "description": "Output from a single benchmark iteration.",
        "type": "object",
        "properties": {
          "exit_code": {
            "description": "Exit code from the benchmark command",
            "type": "integer",
            "format": "int32"
          },
          "output": {
            "nullable": true,
            "description": "File path to contents map",
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "stderr": {
            "nullable": true,
            "description": "Standard error from the benchmark",
            "type": "string"
          },
          "stdout": {
            "nullable": true,
            "description": "Standard output from the benchmark",
            "type": "string"
          }
        },
        "required": [
          "exit_code"
        ]
      },
      "JsonJob": {
        "description": "A benchmark job",
        "type": "object",
        "properties": {
          "claimed": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "completed": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "config": {
            "nullable": true,
            "description": "Job configuration (only included when claimed by a runner)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonJobConfig"
              }
            ]
          },
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "modified": {
            "$ref": "#/components/schemas/DateTime"
          },
          "output": {
            "nullable": true,
            "description": "Job output (stdout, stderr, files) from blob storage, included for terminal jobs.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonJobOutput"
              }
            ]
          },
          "runner": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/RunnerUuid"
              }
            ]
          },
          "spec": {
            "description": "Resource spec for this job",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonSpec"
              }
            ]
          },
          "started": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "uuid": {
            "$ref": "#/components/schemas/JobUuid"
          }
        },
        "required": [
          "created",
          "modified",
          "spec",
          "status",
          "uuid"
        ]
      },
      "JsonJobConfig": {
        "description": "Job configuration sent to runners.\n\nContains the execution details needed for a runner to execute a job. Designed to minimize data leakage - runners only learn what's necessary to pull and execute an OCI image. Resource requirements (cpu, memory, disk, network) are in the associated spec.",
        "type": "object",
        "properties": {
          "allow_failure": {
            "nullable": true,
            "description": "Allow benchmark failure without short-circuiting iterations",
            "type": "boolean"
          },
          "average": {
            "nullable": true,
            "description": "Benchmark harness suggested central tendency",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonAverage"
              }
            ]
          },
          "backdate": {
            "nullable": true,
            "description": "Backdate the report start time",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "cmd": {
            "nullable": true,
            "description": "Command override (like Docker CMD)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "digest": {
            "description": "Image digest - must be immutable (e.g., \"sha256:abc123...\")",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageDigest"
              }
            ]
          },
          "entrypoint": {
            "nullable": true,
            "description": "Entrypoint override (like Docker ENTRYPOINT)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "env": {
            "nullable": true,
            "description": "Environment variables passed to the container",
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "file_paths": {
            "nullable": true,
            "description": "File paths to read from the VM after job completion",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "fold": {
            "nullable": true,
            "description": "Fold operation for combining multiple iteration results",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonFold"
              }
            ]
          },
          "iter": {
            "nullable": true,
            "description": "Number of benchmark iterations for the runner to execute",
            "allOf": [
              {
                "$ref": "#/components/schemas/Iteration"
              }
            ]
          },
          "project": {
            "description": "Project UUID for OCI authentication scoping",
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectUuid"
              }
            ]
          },
          "registry": {
            "description": "Registry URL for pulling the OCI image (e.g., `https://registry.bencher.dev`)",
            "allOf": [
              {
                "$ref": "#/components/schemas/Url"
              }
            ]
          },
          "timeout": {
            "description": "Maximum execution time in seconds",
            "allOf": [
              {
                "$ref": "#/components/schemas/Timeout"
              }
            ]
          }
        },
        "required": [
          "digest",
          "project",
          "registry",
          "timeout"
        ]
      },
      "JsonJobOutput": {
        "description": "Job output stored in blob storage after job completion or failure.",
        "type": "object",
        "properties": {
          "error": {
            "nullable": true,
            "description": "Error message (present when the job failed).",
            "type": "string"
          },
          "results": {
            "description": "Per-iteration results",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonIterationOutput"
            }
          }
        },
        "required": [
          "results"
        ]
      },
      "JsonJobs": {
        "description": "A list of jobs",
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonJob"
        }
      },
      "JsonLicense": {
        "type": "object",
        "properties": {
          "entitlements": {
            "$ref": "#/components/schemas/Entitlements"
          },
          "expiration": {
            "$ref": "#/components/schemas/DateTime"
          },
          "issued_at": {
            "$ref": "#/components/schemas/DateTime"
          },
          "key": {
            "$ref": "#/components/schemas/Jwt"
          },
          "level": {
            "$ref": "#/components/schemas/PlanLevel"
          },
          "organization": {
            "$ref": "#/components/schemas/OrganizationUuid"
          }
        },
        "required": [
          "entitlements",
          "expiration",
          "issued_at",
          "key",
          "level",
          "organization"
        ]
      },
      "JsonLitestream": {
        "type": "object",
        "properties": {
          "checkpoint": {
            "nullable": true,
            "description": "Checkpoint configuration",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCheckpoint"
              }
            ]
          },
          "replica": {
            "description": "Disaster recovery replica",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonReplica"
              }
            ]
          },
          "snapshot": {
            "nullable": true,
            "description": "Snapshot configuration",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonSnapshot"
              }
            ]
          },
          "validation": {
            "nullable": true,
            "description": "Validation configuration",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonValidation"
              }
            ]
          }
        },
        "required": [
          "replica"
        ]
      },
      "JsonLogging": {
        "type": "object",
        "properties": {
          "log": {
            "$ref": "#/components/schemas/ServerLog"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "log",
          "name"
        ]
      },
      "JsonLogin": {
        "type": "object",
        "properties": {
          "email": {
            "$ref": "#/components/schemas/Email"
          },
          "invite": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Jwt"
              }
            ]
          },
          "plan": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/PlanLevel"
              }
            ]
          },
          "recaptcha_token": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/NonEmpty"
              }
            ]
          }
        },
        "required": [
          "email"
        ]
      },
      "JsonMeasure": {
        "type": "object",
        "properties": {
          "archived": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "modified": {
            "$ref": "#/components/schemas/DateTime"
          },
          "name": {
            "$ref": "#/components/schemas/ResourceName"
          },
          "project": {
            "$ref": "#/components/schemas/ProjectUuid"
          },
          "slug": {
            "$ref": "#/components/schemas/MeasureSlug"
          },
          "units": {
            "$ref": "#/components/schemas/ResourceName"
          },
          "uuid": {
            "$ref": "#/components/schemas/MeasureUuid"
          }
        },
        "required": [
          "created",
          "modified",
          "name",
          "project",
          "slug",
          "units",
          "uuid"
        ]
      },
      "JsonMeasures": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonMeasure"
        }
      },
      "JsonMember": {
        "type": "object",
        "properties": {
          "created": {
            "description": "The date time the member was created.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "email": {
            "description": "The member email.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Email"
              }
            ]
          },
          "modified": {
            "description": "The date time the member was last modified.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "name": {
            "description": "The member user name.",
            "allOf": [
              {
                "$ref": "#/components/schemas/UserName"
              }
            ]
          },
          "role": {
            "description": "The member organization role.",
            "allOf": [
              {
                "$ref": "#/components/schemas/OrganizationRole"
              }
            ]
          },
          "slug": {
            "description": "The member slug.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Slug"
              }
            ]
          },
          "uuid": {
            "description": "The member UUID.",
            "allOf": [
              {
                "$ref": "#/components/schemas/UserUuid"
              }
            ]
          }
        },
        "required": [
          "created",
          "email",
          "modified",
          "name",
          "role",
          "slug",
          "uuid"
        ]
      },
      "JsonMembers": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonMember"
        }
      },
      "JsonMetric": {
        "type": "object",
        "properties": {
          "lower_value": {
            "nullable": true,
            "type": "number",
            "format": "double"
          },
          "upper_value": {
            "nullable": true,
            "type": "number",
            "format": "double"
          },
          "uuid": {
            "$ref": "#/components/schemas/MetricUuid"
          },
          "value": {
            "type": "number",
            "format": "double"
          }
        },
        "required": [
          "uuid",
          "value"
        ]
      },
      "JsonModel": {
        "type": "object",
        "properties": {
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "lower_boundary": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Boundary"
              }
            ]
          },
          "max_sample_size": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/SampleSize"
              }
            ]
          },
          "min_sample_size": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/SampleSize"
              }
            ]
          },
          "replaced": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "test": {
            "$ref": "#/components/schemas/ModelTest"
          },
          "upper_boundary": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Boundary"
              }
            ]
          },
          "uuid": {
            "$ref": "#/components/schemas/ModelUuid"
          },
          "window": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Window"
              }
            ]
          }
        },
        "required": [
          "created",
          "test",
          "uuid"
        ]
      },
      "JsonNewBenchmark": {
        "type": "object",
        "properties": {
          "name": {
            "description": "The name of the benchmark. Maximum length is 1,024 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/BenchmarkName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred slug for the benchmark. If not provided, the slug will be generated from the name. If the provided or generated slug is already in use, a unique slug will be generated. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/BenchmarkSlug"
              }
            ]
          }
        },
        "required": [
          "name"
        ]
      },
      "JsonNewBranch": {
        "type": "object",
        "properties": {
          "name": {
            "description": "The name of the branch. Maximum length is 256 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/BranchName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred slug for the branch. If not provided, the slug will be generated from the name. If the provided or generated slug is already in use, a unique slug will be generated. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/BranchSlug"
              }
            ]
          },
          "start_point": {
            "nullable": true,
            "description": "The start point for the new branch. Historical branch versions from the start point branch will be shallow copied over to the new branch head. That is, historical metrics data for the start point branch will appear in queries for the new branch. For example, pull request branches often use their base branch as their start point branch. After the new branch is created, it is not kept in sync with the start point branch. If not provided, the new branch will have no historical data.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonNewStartPoint"
              }
            ]
          }
        },
        "required": [
          "name"
        ]
      },
      "JsonNewCheckout": {
        "type": "object",
        "properties": {
          "entitlements": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Entitlements"
              }
            ]
          },
          "level": {
            "$ref": "#/components/schemas/PlanLevel"
          },
          "organization": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "self_hosted": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/OrganizationUuid"
              }
            ]
          }
        },
        "required": [
          "level",
          "organization"
        ]
      },
      "JsonNewClaim": {
        "type": "object",
        "properties": {
          "empty": {
            "nullable": true,
            "type": "string",
            "enum": [
              null
            ]
          }
        }
      },
      "JsonNewMeasure": {
        "type": "object",
        "properties": {
          "name": {
            "description": "The name of the measure. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred slug for the measure. If not provided, the slug will be generated from the name. If the provided or generated slug is already in use, a unique slug will be generated. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/MeasureSlug"
              }
            ]
          },
          "units": {
            "description": "The units of measure. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          }
        },
        "required": [
          "name",
          "units"
        ]
      },
      "JsonNewMember": {
        "type": "object",
        "properties": {
          "email": {
            "description": "The email for the invitee. This will be used to both send the invite and to create the user account if they do not exist.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Email"
              }
            ]
          },
          "name": {
            "nullable": true,
            "description": "The user name for the invitee.",
            "allOf": [
              {
                "$ref": "#/components/schemas/UserName"
              }
            ]
          },
          "role": {
            "description": "The organization role for the invitee.",
            "allOf": [
              {
                "$ref": "#/components/schemas/OrganizationRole"
              }
            ]
          }
        },
        "required": [
          "email",
          "role"
        ]
      },
      "JsonNewOrganization": {
        "type": "object",
        "properties": {
          "name": {
            "description": "The name of the organization. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred slug for the organization. If not provided, the slug will be generated from the name. If the provided or generated slug is already in use, a unique slug will be generated. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/OrganizationSlug"
              }
            ]
          }
        },
        "required": [
          "name"
        ]
      },
      "JsonNewPlan": {
        "type": "object",
        "properties": {
          "checkout": {
            "$ref": "#/components/schemas/NonEmpty"
          },
          "entitlements": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Entitlements"
              }
            ]
          },
          "level": {
            "$ref": "#/components/schemas/PlanLevel"
          },
          "remote": {
            "nullable": true,
            "type": "boolean"
          },
          "self_hosted": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/OrganizationUuid"
              }
            ]
          }
        },
        "required": [
          "checkout",
          "level"
        ]
      },
      "JsonNewPlot": {
        "type": "object",
        "properties": {
          "benchmarks": {
            "description": "The benchmarks to include in the plot. At least one benchmark must be specified.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BenchmarkUuid"
            }
          },
          "branches": {
            "description": "The branches to include in the plot. At least one branch must be specified.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BranchUuid"
            }
          },
          "index": {
            "nullable": true,
            "description": "The index of the plot. Maximum index is 64.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Index"
              }
            ]
          },
          "lower_boundary": {
            "description": "Display lower boundary limits.",
            "type": "boolean"
          },
          "lower_value": {
            "description": "Display metric lower values.",
            "type": "boolean"
          },
          "measures": {
            "description": "The measures to include in the plot. At least one measure must be specified.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MeasureUuid"
            }
          },
          "testbeds": {
            "description": "The testbeds to include in the plot. At least one testbed must be specified.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TestbedUuid"
            }
          },
          "title": {
            "nullable": true,
            "description": "The title of the plot. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "upper_boundary": {
            "description": "Display upper boundary limits.",
            "type": "boolean"
          },
          "upper_value": {
            "description": "Display metric upper values.",
            "type": "boolean"
          },
          "window": {
            "description": "The window of time for the plot, in seconds. Metrics outside of this window will be omitted.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Window"
              }
            ]
          },
          "x_axis": {
            "description": "The x-axis to use for the plot.",
            "allOf": [
              {
                "$ref": "#/components/schemas/XAxis"
              }
            ]
          }
        },
        "required": [
          "benchmarks",
          "branches",
          "lower_boundary",
          "lower_value",
          "measures",
          "testbeds",
          "upper_boundary",
          "upper_value",
          "window",
          "x_axis"
        ]
      },
      "JsonNewProject": {
        "type": "object",
        "properties": {
          "name": {
            "description": "The name of the project. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred slug for the project. If not provided, the slug will be generated from the name. If the provided or generated slug is already in use, a unique slug will be generated. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectSlug"
              }
            ]
          },
          "url": {
            "nullable": true,
            "description": "The URL for the project. If the project is public, the URL will be accessible listed on its Perf Page.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Url"
              }
            ]
          },
          "visibility": {
            "nullable": true,
            "description": "➕ Bencher Plus: Set the visibility of the project. Creating a `private` project requires a valid Bencher Plus subscription.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Visibility"
              }
            ]
          }
        },
        "required": [
          "name"
        ]
      },
      "JsonNewReport": {
        "type": "object",
        "properties": {
          "branch": {
            "description": "Branch UUID, slug, or name. If the branch does not exist, it will be created.",
            "allOf": [
              {
                "$ref": "#/components/schemas/NameId"
              }
            ]
          },
          "end_time": {
            "description": "End time for the report. Must be an ISO 8601 formatted string.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "hash": {
            "nullable": true,
            "description": "Full `git` commit hash. All reports with the same `git` commit hash will be considered part of the same branch version. This can be useful for tracking the performance of a specific commit across multiple testbeds.",
            "allOf": [
              {
                "$ref": "#/components/schemas/GitHash"
              }
            ]
          },
          "results": {
            "description": "An array of benchmarks results in Bencher Metric Format (BMF).",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "settings": {
            "nullable": true,
            "description": "Settings for how to handle the report.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonReportSettings"
              }
            ]
          },
          "start_point": {
            "nullable": true,
            "description": "The start point for the report branch. If the branch does not exist, the start point will be used to create a new branch. If the branch already exists and the start point is not provided, the current branch will be used. If the branch already exists and the start point provided is different, a new branch head will be created from the new start point. If a new branch or new branch head is created with a start point, historical branch versions from the start point branch will be shallow copied over to the new branch. That is, historical metrics data for the start point branch will appear in queries for the branch. For example, pull request branches often use their base branch as their start point branch. If a new branch is created, it is not kept in sync with the start point branch.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonUpdateStartPoint"
              }
            ]
          },
          "start_time": {
            "description": "Start time for the report. Must be an ISO 8601 formatted string.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "testbed": {
            "description": "Testbed UUID, slug, or name. If the testbed does not exist, it will be created.",
            "allOf": [
              {
                "$ref": "#/components/schemas/NameId"
              }
            ]
          },
          "thresholds": {
            "nullable": true,
            "description": "Thresholds to use for the branch, testbed, and measures in the report. If a threshold does not exist, it will be created. If a threshold exists and the model is different, it will be updated with the new model. If a measure name or slug is provided, the measure will be created if it does not exist.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonReportThresholds"
              }
            ]
          }
        },
        "required": [
          "branch",
          "end_time",
          "results",
          "start_time",
          "testbed"
        ]
      },
      "JsonNewRun": {
        "type": "object",
        "properties": {
          "branch": {
            "nullable": true,
            "description": "Branch UUID, slug, or name. If the branch is not provided or does not exist, it will be created.",
            "allOf": [
              {
                "$ref": "#/components/schemas/NameId"
              }
            ]
          },
          "context": {
            "nullable": true,
            "description": "Context for the report.",
            "allOf": [
              {
                "$ref": "#/components/schemas/RunContext"
              }
            ]
          },
          "end_time": {
            "description": "End time for the report. Must be an ISO 8601 formatted string.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "hash": {
            "nullable": true,
            "description": "Full `git` commit hash. All reports with the same `git` commit hash will be considered part of the same branch version. This can be useful for tracking the performance of a specific commit across multiple testbeds.",
            "allOf": [
              {
                "$ref": "#/components/schemas/GitHash"
              }
            ]
          },
          "idempotency_key": {
            "nullable": true,
            "description": "Optional idempotency key for deduplicating run submissions. If provided, a duplicate submission with the same key within the same project will return the existing report instead of creating a new one.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ReportIdempotencyKey"
              }
            ]
          },
          "job": {
            "nullable": true,
            "description": "Runner job configuration. When present, the run is executed on a remote bare metal runner instead of locally.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonNewRunJob"
              }
            ]
          },
          "project": {
            "nullable": true,
            "description": "Project UUID or slug. If the project is not provided or does not exist, it will be created.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceId"
              }
            ]
          },
          "results": {
            "description": "An array of benchmarks results in Bencher Metric Format (BMF).",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "settings": {
            "nullable": true,
            "description": "Settings for how to handle the results.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonReportSettings"
              }
            ]
          },
          "spec_reset": {
            "nullable": true,
            "description": "When set to `true`, clear the hardware spec from the testbed.",
            "type": "boolean"
          },
          "start_point": {
            "nullable": true,
            "description": "The start point for the report branch. If the branch does not exist, the start point will be used to create a new branch. If the branch already exists and the start point is not provided, the current branch will be used. If the branch already exists and the start point provided is different, a new branch head will be created from the new start point. If a new branch or new branch head is created with a start point, historical branch versions from the start point branch will be shallow copied over to the new branch. That is, historical metrics data for the start point branch will appear in queries for the branch. For example, pull request branches often use their base branch as their start point branch. If a new branch is created, it is not kept in sync with the start point branch.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonUpdateStartPoint"
              }
            ]
          },
          "start_time": {
            "description": "Start time for the report. Must be an ISO 8601 formatted string.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "testbed": {
            "nullable": true,
            "description": "Testbed UUID, slug, or name. If the testbed is not provided or does not exist, it will be created.",
            "allOf": [
              {
                "$ref": "#/components/schemas/NameId"
              }
            ]
          },
          "thresholds": {
            "nullable": true,
            "description": "Thresholds to use for the branch, testbed, and measures in the report. If a threshold does not exist, it will be created. If a threshold exists and the model is different, it will be updated with the new model. If a measure name or slug is provided, the measure will be created if it does not exist.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonReportThresholds"
              }
            ]
          }
        },
        "required": [
          "end_time",
          "results",
          "start_time"
        ]
      },
      "JsonNewRunJob": {
        "description": "Job configuration for a remote runner execution.\n\nSent as part of `JsonNewRun` when the CLI `--image` flag is used. The API server uses this to create a job for a bare metal runner instead of expecting locally-executed benchmark results.",
        "type": "object",
        "properties": {
          "allow_failure": {
            "nullable": true,
            "description": "Allow benchmark failure without short-circuiting iterations",
            "type": "boolean"
          },
          "backdate": {
            "nullable": true,
            "description": "Backdate the report start time",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "build_time": {
            "nullable": true,
            "description": "Track the build time of the benchmark command",
            "type": "boolean"
          },
          "cmd": {
            "nullable": true,
            "description": "Command override (like Docker CMD)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "entrypoint": {
            "nullable": true,
            "description": "Container entrypoint override (like Docker ENTRYPOINT)",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "env": {
            "nullable": true,
            "description": "Environment variables passed to the container",
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "file_paths": {
            "nullable": true,
            "description": "File paths to collect from the VM after job completion",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "file_size": {
            "nullable": true,
            "description": "Track the file size of the output files instead of parsing their contents",
            "type": "boolean"
          },
          "image": {
            "description": "OCI image reference (e.g. \"alpine:3.18\", \"ghcr.io/owner/repo:v1\", \"image@sha256:abc...\")",
            "allOf": [
              {
                "$ref": "#/components/schemas/ImageReference"
              }
            ]
          },
          "iter": {
            "nullable": true,
            "description": "Number of benchmark iterations for the runner to execute",
            "allOf": [
              {
                "$ref": "#/components/schemas/Iteration"
              }
            ]
          },
          "spec": {
            "nullable": true,
            "description": "Hardware spec slug or UUID to run on",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceId"
              }
            ]
          },
          "timeout": {
            "nullable": true,
            "description": "Maximum execution time in seconds",
            "allOf": [
              {
                "$ref": "#/components/schemas/Timeout"
              }
            ]
          }
        },
        "required": [
          "image"
        ]
      },
      "JsonNewRunner": {
        "description": "Create a new runner",
        "type": "object",
        "properties": {
          "name": {
            "description": "The name of the runner.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred slug for the runner. If not provided, the slug will be generated from the name.",
            "allOf": [
              {
                "$ref": "#/components/schemas/RunnerSlug"
              }
            ]
          }
        },
        "required": [
          "name"
        ]
      },
      "JsonNewRunnerSpec": {
        "description": "Add a spec to a runner",
        "type": "object",
        "properties": {
          "spec": {
            "description": "The UUID or slug of the spec to associate with the runner.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceId"
              }
            ]
          }
        },
        "required": [
          "spec"
        ]
      },
      "JsonNewSpec": {
        "description": "Create a new spec",
        "type": "object",
        "properties": {
          "architecture": {
            "description": "CPU architecture",
            "allOf": [
              {
                "$ref": "#/components/schemas/Architecture"
              }
            ]
          },
          "cpu": {
            "description": "Number of CPUs",
            "allOf": [
              {
                "$ref": "#/components/schemas/Cpu"
              }
            ]
          },
          "disk": {
            "description": "Disk size in bytes",
            "allOf": [
              {
                "$ref": "#/components/schemas/Disk"
              }
            ]
          },
          "fallback": {
            "description": "Whether this spec is the fallback spec",
            "default": false,
            "type": "boolean"
          },
          "memory": {
            "description": "Memory size in bytes",
            "allOf": [
              {
                "$ref": "#/components/schemas/Memory"
              }
            ]
          },
          "name": {
            "description": "The name of the spec.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "network": {
            "description": "Whether the VM has network access",
            "default": false,
            "type": "boolean"
          },
          "os": {
            "description": "Operating system",
            "allOf": [
              {
                "$ref": "#/components/schemas/OperatingSystem"
              }
            ]
          },
          "sandbox": {
            "nullable": true,
            "description": "Sandbox type (e.g. firecracker). If not provided, the job runs without a sandbox.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Sandbox"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred slug for the spec. If not provided, the slug will be generated from the name.",
            "allOf": [
              {
                "$ref": "#/components/schemas/SpecSlug"
              }
            ]
          }
        },
        "required": [
          "architecture",
          "cpu",
          "disk",
          "memory",
          "name",
          "os"
        ]
      },
      "JsonNewSso": {
        "type": "object",
        "properties": {
          "domain": {
            "description": "The SSO domain. For example: example.com",
            "allOf": [
              {
                "$ref": "#/components/schemas/NonEmpty"
              }
            ]
          }
        },
        "required": [
          "domain"
        ]
      },
      "JsonNewStartPoint": {
        "type": "object",
        "properties": {
          "branch": {
            "description": "The UUID, slug, or name of the branch to use as the start point.",
            "allOf": [
              {
                "$ref": "#/components/schemas/NameId"
              }
            ]
          },
          "clone_thresholds": {
            "nullable": true,
            "description": "If set to `true`, the thresholds from the start point branch will be deep copied to the new branch. This can be useful for pull request branches that should have the same thresholds as their target branch. Requires the `branch` field to be set.",
            "type": "boolean"
          },
          "hash": {
            "nullable": true,
            "description": "The full `git` hash of the branch to use as the start point. Requires the `branch` field to be set.",
            "allOf": [
              {
                "$ref": "#/components/schemas/GitHash"
              }
            ]
          },
          "max_versions": {
            "nullable": true,
            "description": "The maximum number of historical branch versions to include. Versions beyond this number will be omitted. The default is 255. Requires the `branch` field to be set.",
            "type": "integer",
            "format": "uint32",
            "minimum": 0
          }
        },
        "required": [
          "branch"
        ]
      },
      "JsonNewTestbed": {
        "type": "object",
        "properties": {
          "name": {
            "description": "The name of the testbed. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred slug for the testbed. If not provided, the slug will be generated from the name. If the provided or generated slug is already in use, a unique slug will be generated. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestbedSlug"
              }
            ]
          },
          "spec": {
            "nullable": true,
            "description": "The UUID or slug of the hardware spec for this testbed.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceId"
              }
            ]
          }
        },
        "required": [
          "name"
        ]
      },
      "JsonNewThreshold": {
        "type": "object",
        "properties": {
          "branch": {
            "description": "The UUID, slug, or name of the threshold branch.",
            "allOf": [
              {
                "$ref": "#/components/schemas/NameId"
              }
            ]
          },
          "lower_boundary": {
            "nullable": true,
            "description": "The lower boundary used to calculate the lower boundary limit. The requirements for this field depend on which `test` is selected.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Boundary"
              }
            ]
          },
          "max_sample_size": {
            "nullable": true,
            "description": "The maximum number of samples used to perform the test. Only the most recent samples will be used if there are more.",
            "allOf": [
              {
                "$ref": "#/components/schemas/SampleSize"
              }
            ]
          },
          "measure": {
            "description": "The UUID, slug, or name of the threshold measure.",
            "allOf": [
              {
                "$ref": "#/components/schemas/NameId"
              }
            ]
          },
          "min_sample_size": {
            "nullable": true,
            "description": "The minimum number of samples required to perform the test. If there are fewer samples, the test will not be performed.",
            "allOf": [
              {
                "$ref": "#/components/schemas/SampleSize"
              }
            ]
          },
          "test": {
            "description": "The test used by the threshold model to calculate the baseline and boundary limits.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ModelTest"
              }
            ]
          },
          "testbed": {
            "description": "The UUID, slug, or name of the threshold testbed.",
            "allOf": [
              {
                "$ref": "#/components/schemas/NameId"
              }
            ]
          },
          "upper_boundary": {
            "nullable": true,
            "description": "The upper boundary used to calculate the upper boundary limit. The requirements for this field depend on which `test` is selected.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Boundary"
              }
            ]
          },
          "window": {
            "nullable": true,
            "description": "The window of time for samples used to perform the test, in seconds. Samples outside of this window will be omitted.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Window"
              }
            ]
          }
        },
        "required": [
          "branch",
          "measure",
          "test",
          "testbed"
        ]
      },
      "JsonNewToken": {
        "type": "object",
        "properties": {
          "name": {
            "description": "The name of the token. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "ttl": {
            "nullable": true,
            "description": "The time-to-live (TTL) for the token in seconds. If not provided, the token will not expire for over 128 years.",
            "type": "integer",
            "format": "uint32",
            "minimum": 0
          }
        },
        "required": [
          "name"
        ]
      },
      "JsonOAuth": {
        "type": "object",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/Secret"
          },
          "state": {
            "$ref": "#/components/schemas/Jwt"
          }
        },
        "required": [
          "code",
          "state"
        ]
      },
      "JsonOAuthUrl": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "url"
        ]
      },
      "JsonOAuthUser": {
        "type": "object",
        "properties": {
          "plan": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/PlanLevel"
              }
            ]
          },
          "user": {
            "$ref": "#/components/schemas/JsonAuthUser"
          }
        },
        "required": [
          "user"
        ]
      },
      "JsonOciBandwidth": {
        "type": "object",
        "properties": {
          "free": {
            "nullable": true,
            "description": "Bytes per day for free (claimed, no paid plan) organizations",
            "type": "integer",
            "format": "uint64",
            "minimum": 0
          },
          "plus": {
            "nullable": true,
            "description": "Bytes per day for Plus (Team/Enterprise) organizations",
            "type": "integer",
            "format": "uint64",
            "minimum": 0
          },
          "unclaimed": {
            "nullable": true,
            "description": "Bytes per day for unclaimed organizations (0 members)",
            "type": "integer",
            "format": "uint64",
            "minimum": 0
          }
        }
      },
      "JsonOneMetric": {
        "type": "object",
        "properties": {
          "alert": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonPerfAlert"
              }
            ]
          },
          "benchmark": {
            "$ref": "#/components/schemas/JsonBenchmark"
          },
          "boundary": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonBoundary"
              }
            ]
          },
          "branch": {
            "$ref": "#/components/schemas/JsonBranch"
          },
          "end_time": {
            "$ref": "#/components/schemas/DateTime"
          },
          "iteration": {
            "$ref": "#/components/schemas/Iteration"
          },
          "measure": {
            "$ref": "#/components/schemas/JsonMeasure"
          },
          "metric": {
            "$ref": "#/components/schemas/JsonMetric"
          },
          "report": {
            "$ref": "#/components/schemas/ReportUuid"
          },
          "start_time": {
            "$ref": "#/components/schemas/DateTime"
          },
          "testbed": {
            "$ref": "#/components/schemas/JsonTestbed"
          },
          "threshold": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonThresholdModel"
              }
            ]
          },
          "uuid": {
            "$ref": "#/components/schemas/MetricUuid"
          }
        },
        "required": [
          "benchmark",
          "branch",
          "end_time",
          "iteration",
          "measure",
          "metric",
          "report",
          "start_time",
          "testbed",
          "uuid"
        ]
      },
      "JsonOpenApiSpec": {},
      "JsonOrganization": {
        "type": "object",
        "properties": {
          "claimed": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "license": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Jwt"
              }
            ]
          },
          "modified": {
            "$ref": "#/components/schemas/DateTime"
          },
          "name": {
            "$ref": "#/components/schemas/ResourceName"
          },
          "slug": {
            "$ref": "#/components/schemas/OrganizationSlug"
          },
          "sso": {
            "nullable": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonSso"
            }
          },
          "uuid": {
            "$ref": "#/components/schemas/OrganizationUuid"
          }
        },
        "required": [
          "created",
          "modified",
          "name",
          "slug",
          "uuid"
        ]
      },
      "JsonOrganizationPatch": {
        "type": "object",
        "properties": {
          "license": {
            "nullable": true,
            "description": "➕ Bencher Plus: The new license for the organization. Set to `null` to remove the current license.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Jwt"
              }
            ]
          },
          "name": {
            "nullable": true,
            "description": "The new name of the organization. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred new slug for the organization. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/OrganizationSlug"
              }
            ]
          }
        }
      },
      "JsonOrganizationPatchNull": {
        "type": "object",
        "properties": {
          "license": {
            "type": "string",
            "enum": [
              null
            ]
          },
          "name": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/OrganizationSlug"
              }
            ]
          }
        },
        "required": [
          "license"
        ]
      },
      "JsonOrganizations": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonOrganization"
        }
      },
      "JsonOtel": {
        "type": "object",
        "properties": {
          "endpoint": {
            "description": "The OTEL collector URL.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Url"
              }
            ]
          },
          "interval": {
            "nullable": true,
            "description": "The OTEL export interval in seconds. Defaults to 15 seconds, if not specified.",
            "type": "integer",
            "format": "uint64",
            "minimum": 0
          },
          "protocol": {
            "description": "The OTEL protocol.",
            "allOf": [
              {
                "$ref": "#/components/schemas/OtelProtocol"
              }
            ]
          }
        },
        "required": [
          "endpoint",
          "protocol"
        ]
      },
      "JsonPerf": {
        "type": "object",
        "properties": {
          "end_time": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "project": {
            "$ref": "#/components/schemas/JsonProject"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonPerfMetrics"
            }
          },
          "start_time": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          }
        },
        "required": [
          "project",
          "results"
        ]
      },
      "JsonPerfAlert": {
        "type": "object",
        "properties": {
          "limit": {
            "$ref": "#/components/schemas/BoundaryLimit"
          },
          "modified": {
            "$ref": "#/components/schemas/DateTime"
          },
          "status": {
            "$ref": "#/components/schemas/AlertStatus"
          },
          "uuid": {
            "$ref": "#/components/schemas/AlertUuid"
          }
        },
        "required": [
          "limit",
          "modified",
          "status",
          "uuid"
        ]
      },
      "JsonPerfMetric": {
        "type": "object",
        "properties": {
          "alert": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonPerfAlert"
              }
            ]
          },
          "boundary": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonBoundary"
              }
            ]
          },
          "end_time": {
            "$ref": "#/components/schemas/DateTime"
          },
          "iteration": {
            "$ref": "#/components/schemas/Iteration"
          },
          "metric": {
            "$ref": "#/components/schemas/JsonMetric"
          },
          "report": {
            "$ref": "#/components/schemas/ReportUuid"
          },
          "start_time": {
            "$ref": "#/components/schemas/DateTime"
          },
          "threshold": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonThresholdModel"
              }
            ]
          },
          "version": {
            "$ref": "#/components/schemas/JsonVersion"
          }
        },
        "required": [
          "end_time",
          "iteration",
          "metric",
          "report",
          "start_time",
          "version"
        ]
      },
      "JsonPerfMetrics": {
        "type": "object",
        "properties": {
          "benchmark": {
            "$ref": "#/components/schemas/JsonBenchmark"
          },
          "branch": {
            "$ref": "#/components/schemas/JsonBranch"
          },
          "measure": {
            "$ref": "#/components/schemas/JsonMeasure"
          },
          "metrics": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonPerfMetric"
            }
          },
          "testbed": {
            "$ref": "#/components/schemas/JsonTestbed"
          }
        },
        "required": [
          "benchmark",
          "branch",
          "measure",
          "metrics",
          "testbed"
        ]
      },
      "JsonPlan": {
        "type": "object",
        "properties": {
          "card": {
            "$ref": "#/components/schemas/JsonCardDetails"
          },
          "current_period_end": {
            "$ref": "#/components/schemas/DateTime"
          },
          "current_period_start": {
            "$ref": "#/components/schemas/DateTime"
          },
          "customer": {
            "$ref": "#/components/schemas/JsonCustomer"
          },
          "level": {
            "$ref": "#/components/schemas/PlanLevel"
          },
          "license": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonLicense"
              }
            ]
          },
          "organization": {
            "$ref": "#/components/schemas/OrganizationUuid"
          },
          "status": {
            "$ref": "#/components/schemas/PlanStatus"
          },
          "unit_amount": {
            "$ref": "#/components/schemas/BigInt"
          }
        },
        "required": [
          "card",
          "current_period_end",
          "current_period_start",
          "customer",
          "level",
          "organization",
          "status",
          "unit_amount"
        ]
      },
      "JsonPlot": {
        "type": "object",
        "properties": {
          "benchmarks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BenchmarkUuid"
            }
          },
          "branches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BranchUuid"
            }
          },
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "lower_boundary": {
            "type": "boolean"
          },
          "lower_value": {
            "type": "boolean"
          },
          "measures": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MeasureUuid"
            }
          },
          "modified": {
            "$ref": "#/components/schemas/DateTime"
          },
          "project": {
            "$ref": "#/components/schemas/ProjectUuid"
          },
          "testbeds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TestbedUuid"
            }
          },
          "title": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "upper_boundary": {
            "type": "boolean"
          },
          "upper_value": {
            "type": "boolean"
          },
          "uuid": {
            "$ref": "#/components/schemas/PlotUuid"
          },
          "window": {
            "$ref": "#/components/schemas/Window"
          },
          "x_axis": {
            "$ref": "#/components/schemas/XAxis"
          }
        },
        "required": [
          "benchmarks",
          "branches",
          "created",
          "lower_boundary",
          "lower_value",
          "measures",
          "modified",
          "project",
          "testbeds",
          "upper_boundary",
          "upper_value",
          "uuid",
          "window",
          "x_axis"
        ]
      },
      "JsonPlotPatch": {
        "type": "object",
        "properties": {
          "index": {
            "nullable": true,
            "description": "The new index for the plot. Maximum index is 64.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Index"
              }
            ]
          },
          "title": {
            "nullable": true,
            "description": "The new title of the plot. Set to `null` to remove the current title. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "window": {
            "nullable": true,
            "description": "The window of time for the plot, in seconds. Metrics outside of this window will be omitted.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Window"
              }
            ]
          }
        }
      },
      "JsonPlotPatchNull": {
        "type": "object",
        "properties": {
          "index": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Index"
              }
            ]
          },
          "title": {
            "type": "string",
            "enum": [
              null
            ]
          },
          "window": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Window"
              }
            ]
          }
        },
        "required": [
          "title"
        ]
      },
      "JsonPlots": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonPlot"
        }
      },
      "JsonPlus": {
        "type": "object",
        "properties": {
          "cloud": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCloud"
              }
            ]
          },
          "github": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonGitHub"
              }
            ]
          },
          "google": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonGoogle"
              }
            ]
          },
          "litestream": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonLitestream"
              }
            ]
          },
          "rate_limiting": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRateLimiting"
              }
            ]
          },
          "registry": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRegistry"
              }
            ]
          },
          "runners": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRunners2"
              }
            ]
          },
          "stats": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonStats"
              }
            ]
          }
        }
      },
      "JsonProduct": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "licensed": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "metered": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "required": [
          "id",
          "licensed",
          "metered"
        ]
      },
      "JsonProducts": {
        "type": "object",
        "properties": {
          "bare_metal": {
            "$ref": "#/components/schemas/JsonProduct"
          },
          "enterprise": {
            "$ref": "#/components/schemas/JsonProduct"
          },
          "team": {
            "$ref": "#/components/schemas/JsonProduct"
          }
        },
        "required": [
          "bare_metal",
          "enterprise",
          "team"
        ]
      },
      "JsonProject": {
        "type": "object",
        "properties": {
          "claimed": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "modified": {
            "$ref": "#/components/schemas/DateTime"
          },
          "name": {
            "$ref": "#/components/schemas/ResourceName"
          },
          "organization": {
            "$ref": "#/components/schemas/OrganizationUuid"
          },
          "slug": {
            "$ref": "#/components/schemas/ProjectSlug"
          },
          "url": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Url"
              }
            ]
          },
          "uuid": {
            "$ref": "#/components/schemas/ProjectUuid"
          },
          "visibility": {
            "$ref": "#/components/schemas/Visibility"
          }
        },
        "required": [
          "created",
          "modified",
          "name",
          "organization",
          "slug",
          "uuid",
          "visibility"
        ]
      },
      "JsonProjectPatch": {
        "type": "object",
        "properties": {
          "name": {
            "nullable": true,
            "description": "The new name of the project. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred new slug for the project. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectSlug"
              }
            ]
          },
          "url": {
            "nullable": true,
            "description": "The new URL of the project. Set to `null` to remove the current URL.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Url"
              }
            ]
          },
          "visibility": {
            "nullable": true,
            "description": "➕ Bencher Plus: Set the new visibility of the project. Moving to a `private` project requires a valid Bencher Plus subscription.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Visibility"
              }
            ]
          }
        }
      },
      "JsonProjectPatchNull": {
        "type": "object",
        "properties": {
          "name": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectSlug"
              }
            ]
          },
          "url": {
            "type": "string",
            "enum": [
              null
            ]
          },
          "visibility": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Visibility"
              }
            ]
          }
        },
        "required": [
          "url"
        ]
      },
      "JsonProjects": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonProject"
        }
      },
      "JsonPubUser": {
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/UserName"
          },
          "slug": {
            "$ref": "#/components/schemas/UserSlug"
          },
          "uuid": {
            "$ref": "#/components/schemas/UserUuid"
          }
        },
        "required": [
          "name",
          "slug",
          "uuid"
        ]
      },
      "JsonPublicRateLimiter": {
        "type": "object",
        "properties": {
          "attempts": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRateLimits"
              }
            ]
          },
          "requests": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRateLimits"
              }
            ]
          },
          "runs": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRateLimits"
              }
            ]
          }
        }
      },
      "JsonRateLimiting": {
        "type": "object",
        "properties": {
          "claimed_limit": {
            "nullable": true,
            "type": "integer",
            "format": "uint32",
            "minimum": 0
          },
          "oci_bandwidth": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonOciBandwidth"
              }
            ]
          },
          "public": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonPublicRateLimiter"
              }
            ]
          },
          "runner": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRunnerRateLimiter"
              }
            ]
          },
          "unclaimed_limit": {
            "nullable": true,
            "type": "integer",
            "format": "uint32",
            "minimum": 0
          },
          "user": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonUserRateLimiter"
              }
            ]
          },
          "window": {
            "nullable": true,
            "type": "integer",
            "format": "uint32",
            "minimum": 0
          }
        }
      },
      "JsonRateLimits": {
        "type": "object",
        "properties": {
          "day": {
            "nullable": true,
            "type": "integer",
            "format": "uint",
            "minimum": 0
          },
          "hour": {
            "nullable": true,
            "type": "integer",
            "format": "uint",
            "minimum": 0
          },
          "minute": {
            "nullable": true,
            "type": "integer",
            "format": "uint",
            "minimum": 0
          }
        }
      },
      "JsonRecaptcha": {
        "type": "object",
        "properties": {
          "min_score": {
            "description": "The minimum acceptable score for reCAPTCHA verification.",
            "allOf": [
              {
                "$ref": "#/components/schemas/RecaptchaScore"
              }
            ]
          },
          "secret": {
            "description": "The shared key between your site and reCAPTCHA.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Secret"
              }
            ]
          }
        },
        "required": [
          "min_score",
          "secret"
        ]
      },
      "JsonRegistry": {
        "description": "Container registry configuration",
        "type": "object",
        "properties": {
          "data_store": {
            "nullable": true,
            "description": "Storage configuration for the container registry. Defaults to local filesystem storage if not provided.",
            "allOf": [
              {
                "$ref": "#/components/schemas/RegistryDataStore"
              }
            ]
          },
          "max_body_size": {
            "description": "Maximum body size in bytes for blob and manifest uploads. Requests exceeding this limit are rejected with 413 Payload Too Large. Defaults to 1 GiB (1,073,741,824 bytes).",
            "default": 1073741824,
            "type": "integer",
            "format": "uint64",
            "minimum": 0
          },
          "upload_timeout": {
            "description": "Upload session timeout in seconds. Uploads older than this are cleaned up when new uploads start. Defaults to 3600 (1 hour).",
            "default": 3600,
            "type": "integer",
            "format": "uint64",
            "minimum": 0
          },
          "url": {
            "nullable": true,
            "description": "The externally-reachable URL of the API server for OCI registry access. Defaults to `http://localhost:61016`.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Url"
              }
            ]
          }
        }
      },
      "JsonRemoveModel": {
        "type": "object",
        "properties": {
          "test": {
            "type": "string",
            "enum": [
              null
            ]
          }
        },
        "required": [
          "test"
        ]
      },
      "JsonReplica": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "path": {
                "type": "string"
              },
              "scheme": {
                "type": "string",
                "enum": [
                  "file"
                ]
              },
              "sync_interval": {
                "nullable": true,
                "type": "string"
              }
            },
            "required": [
              "path",
              "scheme"
            ]
          },
          {
            "type": "object",
            "properties": {
              "host": {
                "type": "string"
              },
              "key_path": {
                "nullable": true,
                "type": "string"
              },
              "password": {
                "nullable": true,
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Secret"
                  }
                ]
              },
              "path": {
                "nullable": true,
                "type": "string"
              },
              "port": {
                "type": "integer",
                "format": "uint16",
                "minimum": 0
              },
              "scheme": {
                "type": "string",
                "enum": [
                  "sftp"
                ]
              },
              "sync_interval": {
                "nullable": true,
                "type": "string"
              },
              "user": {
                "type": "string"
              }
            },
            "required": [
              "host",
              "port",
              "scheme",
              "user"
            ]
          },
          {
            "type": "object",
            "properties": {
              "access_key_id": {
                "type": "string"
              },
              "bucket": {
                "type": "string"
              },
              "endpoint": {
                "nullable": true,
                "type": "string"
              },
              "path": {
                "nullable": true,
                "type": "string"
              },
              "region": {
                "nullable": true,
                "type": "string"
              },
              "scheme": {
                "type": "string",
                "enum": [
                  "s3"
                ]
              },
              "secret_access_key": {
                "$ref": "#/components/schemas/Secret"
              },
              "sync_interval": {
                "nullable": true,
                "type": "string"
              }
            },
            "required": [
              "access_key_id",
              "bucket",
              "scheme",
              "secret_access_key"
            ]
          }
        ]
      },
      "JsonReport": {
        "type": "object",
        "properties": {
          "adapter": {
            "$ref": "#/components/schemas/Adapter"
          },
          "alerts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonAlert"
            }
          },
          "branch": {
            "$ref": "#/components/schemas/JsonBranch"
          },
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "end_time": {
            "$ref": "#/components/schemas/DateTime"
          },
          "job": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JobUuid"
              }
            ]
          },
          "project": {
            "$ref": "#/components/schemas/JsonProject"
          },
          "results": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/JsonReportResult"
              }
            }
          },
          "start_time": {
            "$ref": "#/components/schemas/DateTime"
          },
          "testbed": {
            "$ref": "#/components/schemas/JsonTestbed"
          },
          "user": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonPubUser"
              }
            ]
          },
          "uuid": {
            "$ref": "#/components/schemas/ReportUuid"
          }
        },
        "required": [
          "adapter",
          "alerts",
          "branch",
          "created",
          "end_time",
          "project",
          "results",
          "start_time",
          "testbed",
          "uuid"
        ]
      },
      "JsonReportMeasure": {
        "type": "object",
        "properties": {
          "boundary": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonBoundary"
              }
            ]
          },
          "measure": {
            "$ref": "#/components/schemas/JsonMeasure"
          },
          "metric": {
            "$ref": "#/components/schemas/JsonMetric"
          },
          "threshold": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonThresholdModel"
              }
            ]
          }
        },
        "required": [
          "measure",
          "metric"
        ]
      },
      "JsonReportResult": {
        "type": "object",
        "properties": {
          "benchmark": {
            "$ref": "#/components/schemas/JsonBenchmark"
          },
          "iteration": {
            "$ref": "#/components/schemas/Iteration"
          },
          "measures": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonReportMeasure"
            }
          }
        },
        "required": [
          "benchmark",
          "iteration",
          "measures"
        ]
      },
      "JsonReportSettings": {
        "type": "object",
        "properties": {
          "adapter": {
            "nullable": true,
            "description": "The benchmark harness adapter for parsing the benchmark results. If no adapter is specified, then the Magic adapter will be used.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Adapter"
              }
            ]
          },
          "average": {
            "nullable": true,
            "description": "Benchmark harness suggested central tendency (ie average). Some benchmarking harnesses provide multiple averages, such as mean and median.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonAverage"
              }
            ]
          },
          "fold": {
            "nullable": true,
            "description": "Fold multiple results into a single result using the selected operation. This can be useful for taking the min, max, mean, or median of the benchmark results.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonFold"
              }
            ]
          }
        }
      },
      "JsonReportThresholds": {
        "type": "object",
        "properties": {
          "models": {
            "nullable": true,
            "description": "Map of measure UUID, slug, or name to the threshold model to use. If a measure name or slug is provided, the measure will be created if it does not exist.",
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Model"
            }
          },
          "reset": {
            "nullable": true,
            "description": "Reset all thresholds for the branch and testbed. Any models present in the `models` field will still be updated accordingly. If a threshold already exists and is not present in the `models` field, its current model will be removed.",
            "type": "boolean"
          }
        }
      },
      "JsonReports": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonReport"
        }
      },
      "JsonRunner": {
        "description": "A benchmark runner",
        "type": "object",
        "properties": {
          "archived": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "last_heartbeat": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "modified": {
            "$ref": "#/components/schemas/DateTime"
          },
          "name": {
            "$ref": "#/components/schemas/ResourceName"
          },
          "slug": {
            "$ref": "#/components/schemas/RunnerSlug"
          },
          "specs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SpecUuid"
            }
          },
          "uuid": {
            "$ref": "#/components/schemas/RunnerUuid"
          }
        },
        "required": [
          "created",
          "modified",
          "name",
          "slug",
          "specs",
          "uuid"
        ]
      },
      "JsonRunnerRateLimiter": {
        "type": "object",
        "properties": {
          "requests": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRateLimits"
              }
            ]
          }
        }
      },
      "JsonRunnerStats": {
        "description": "Runner stats",
        "type": "object",
        "properties": {
          "seconds": {
            "description": "Total runner seconds",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRunnerStatsCohort_for_JsonCohort"
              }
            ]
          },
          "seconds_per_report": {
            "description": "Median runner seconds per report",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRunnerStatsCohort_for_JsonCohortAvg"
              }
            ]
          },
          "top_projects": {
            "description": "Top 10 projects by runner seconds",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRunnerStatsCohort_for_JsonTopJobCohort"
              }
            ]
          }
        },
        "required": [
          "seconds",
          "seconds_per_report",
          "top_projects"
        ]
      },
      "JsonRunnerStatsCohort_for_JsonCohort": {
        "description": "Runner stats broken down by project state",
        "type": "object",
        "properties": {
          "claimed": {
            "description": "Claimed projects only",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "plus": {
            "description": "Plus (paid plan) projects only",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "total": {
            "description": "Total (all projects)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "unclaimed": {
            "description": "Unclaimed projects only",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          }
        },
        "required": [
          "claimed",
          "plus",
          "total",
          "unclaimed"
        ]
      },
      "JsonRunnerStatsCohort_for_JsonCohortAvg": {
        "description": "Runner stats broken down by project state",
        "type": "object",
        "properties": {
          "claimed": {
            "description": "Claimed projects only",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohortAvg"
              }
            ]
          },
          "plus": {
            "description": "Plus (paid plan) projects only",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohortAvg"
              }
            ]
          },
          "total": {
            "description": "Total (all projects)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohortAvg"
              }
            ]
          },
          "unclaimed": {
            "description": "Unclaimed projects only",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohortAvg"
              }
            ]
          }
        },
        "required": [
          "claimed",
          "plus",
          "total",
          "unclaimed"
        ]
      },
      "JsonRunnerStatsCohort_for_JsonTopJobCohort": {
        "description": "Runner stats broken down by project state",
        "type": "object",
        "properties": {
          "claimed": {
            "description": "Claimed projects only",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonTopJobCohort"
              }
            ]
          },
          "plus": {
            "description": "Plus (paid plan) projects only",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonTopJobCohort"
              }
            ]
          },
          "total": {
            "description": "Total (all projects)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonTopJobCohort"
              }
            ]
          },
          "unclaimed": {
            "description": "Unclaimed projects only",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonTopJobCohort"
              }
            ]
          }
        },
        "required": [
          "claimed",
          "plus",
          "total",
          "unclaimed"
        ]
      },
      "JsonRunnerToken": {
        "description": "Runner token response (returned on create or rotate)",
        "type": "object",
        "properties": {
          "token": {
            "description": "The runner token. Only shown once - store it securely!",
            "allOf": [
              {
                "$ref": "#/components/schemas/Secret"
              }
            ]
          },
          "uuid": {
            "$ref": "#/components/schemas/RunnerUuid"
          }
        },
        "required": [
          "token",
          "uuid"
        ]
      },
      "JsonRunners": {
        "description": "List of runners",
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonRunner"
        }
      },
      "JsonRunners2": {
        "description": "Runner system configuration",
        "type": "object",
        "properties": {
          "heartbeat_timeout": {
            "description": "Time in seconds without a heartbeat before marking a job as failed. Defaults to 90 seconds.",
            "default": 90,
            "allOf": [
              {
                "$ref": "#/components/schemas/HeartbeatTimeout"
              }
            ]
          },
          "job_timeout_grace_period": {
            "description": "Extra time in seconds beyond a job's configured timeout before the server cancels it. Defaults to 60 seconds.",
            "default": 60,
            "allOf": [
              {
                "$ref": "#/components/schemas/GracePeriod"
              }
            ]
          }
        }
      },
      "JsonSecurity": {
        "type": "object",
        "properties": {
          "issuer": {
            "nullable": true,
            "type": "string"
          },
          "secret_key": {
            "$ref": "#/components/schemas/Secret"
          }
        },
        "required": [
          "secret_key"
        ]
      },
      "JsonServer": {
        "description": "A Bencher server instance",
        "type": "object",
        "properties": {
          "created": {
            "description": "The date the server was created",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "uuid": {
            "description": "The server UUID",
            "allOf": [
              {
                "$ref": "#/components/schemas/ServerUuid"
              }
            ]
          },
          "version": {
            "nullable": true,
            "description": "The current version of the server",
            "type": "string"
          }
        },
        "required": [
          "created",
          "uuid"
        ]
      },
      "JsonServer2": {
        "type": "object",
        "properties": {
          "bind_address": {
            "type": "string"
          },
          "request_body_max_bytes": {
            "type": "integer",
            "format": "uint",
            "minimum": 0
          },
          "tls": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonTls"
              }
            ]
          }
        },
        "required": [
          "bind_address",
          "request_body_max_bytes"
        ]
      },
      "JsonServerStats": {
        "description": "Bencher server stats",
        "type": "object",
        "properties": {
          "active_projects": {
            "nullable": true,
            "description": "Number of active projects (with at least one report)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "active_projects_claimed": {
            "nullable": true,
            "description": "Number of active claimed projects (with at least one report)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "active_projects_unclaimed": {
            "nullable": true,
            "description": "Number of active unclaimed projects (with at least one report)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "admins": {
            "nullable": true,
            "description": "Server admins",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonUsers"
              }
            ]
          },
          "metrics": {
            "nullable": true,
            "description": "Number of metrics (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "metrics_claimed": {
            "nullable": true,
            "description": "Number of claimed metrics (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "metrics_per_report": {
            "nullable": true,
            "description": "Number of metrics per report (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohortAvg"
              }
            ]
          },
          "metrics_per_report_claimed": {
            "nullable": true,
            "description": "Number of metrics per claimed report (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohortAvg"
              }
            ]
          },
          "metrics_per_report_unclaimed": {
            "nullable": true,
            "description": "Number of metrics per unclaimed report (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohortAvg"
              }
            ]
          },
          "metrics_unclaimed": {
            "nullable": true,
            "description": "Number of unclaimed metrics (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "organizations": {
            "nullable": true,
            "description": "Server organizations",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonOrganizations"
              }
            ]
          },
          "projects": {
            "nullable": true,
            "description": "Number of projects (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "projects_claimed": {
            "nullable": true,
            "description": "Number of claimed projects (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "projects_unclaimed": {
            "nullable": true,
            "description": "Number of unclaimed projects (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "reports": {
            "nullable": true,
            "description": "Number of reports (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "reports_claimed": {
            "nullable": true,
            "description": "Number of claimed reports (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "reports_per_project": {
            "nullable": true,
            "description": "Number of reports per active project (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohortAvg"
              }
            ]
          },
          "reports_per_project_claimed": {
            "nullable": true,
            "description": "Number of reports per active claimed project (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohortAvg"
              }
            ]
          },
          "reports_per_project_unclaimed": {
            "nullable": true,
            "description": "Number of reports per active unclaimed project (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohortAvg"
              }
            ]
          },
          "reports_unclaimed": {
            "nullable": true,
            "description": "Number of unclaimed reports (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          },
          "runner": {
            "nullable": true,
            "description": "Runner stats",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRunnerStats"
              }
            ]
          },
          "server": {
            "description": "The Bencher server instance",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonServer"
              }
            ]
          },
          "timestamp": {
            "description": "Timestamp of the stats",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "top_projects": {
            "nullable": true,
            "description": "Top 10 projects",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonTopCohort"
              }
            ]
          },
          "top_projects_claimed": {
            "nullable": true,
            "description": "Top 10 claimed projects",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonTopCohort"
              }
            ]
          },
          "top_projects_unclaimed": {
            "nullable": true,
            "description": "Top 10 unclaimed projects",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonTopCohort"
              }
            ]
          },
          "users": {
            "nullable": true,
            "description": "Number of users (created)",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonCohort"
              }
            ]
          }
        },
        "required": [
          "server",
          "timestamp"
        ]
      },
      "JsonSignup": {
        "type": "object",
        "properties": {
          "claim": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/OrganizationUuid"
              }
            ]
          },
          "email": {
            "$ref": "#/components/schemas/Email"
          },
          "i_agree": {
            "description": "I agree to the Bencher Terms of Use (https://bencher.dev/legal/terms-of-use), Privacy Policy (https://bencher.dev/legal/privacy), and License Agreement (https://bencher.dev/legal/license)",
            "type": "boolean"
          },
          "invite": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/Jwt"
              }
            ]
          },
          "name": {
            "$ref": "#/components/schemas/UserName"
          },
          "plan": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/PlanLevel"
              }
            ]
          },
          "recaptcha_token": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/NonEmpty"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/UserSlug"
              }
            ]
          }
        },
        "required": [
          "email",
          "i_agree",
          "name"
        ]
      },
      "JsonSmtp": {
        "type": "object",
        "properties": {
          "from_email": {
            "$ref": "#/components/schemas/Email"
          },
          "from_name": {
            "$ref": "#/components/schemas/ResourceName"
          },
          "hostname": {
            "$ref": "#/components/schemas/ResourceName"
          },
          "insecure_host": {
            "nullable": true,
            "type": "boolean"
          },
          "port": {
            "nullable": true,
            "type": "integer",
            "format": "uint16",
            "minimum": 0
          },
          "secret": {
            "$ref": "#/components/schemas/Secret"
          },
          "starttls": {
            "nullable": true,
            "type": "boolean"
          },
          "username": {
            "$ref": "#/components/schemas/ResourceName"
          }
        },
        "required": [
          "from_email",
          "from_name",
          "hostname",
          "secret",
          "username"
        ]
      },
      "JsonSnapshot": {
        "type": "object",
        "properties": {
          "interval": {
            "nullable": true,
            "description": "How often new snapshots are created",
            "type": "string"
          },
          "retention": {
            "nullable": true,
            "description": "How long snapshot & WAL files are kept",
            "type": "string"
          }
        }
      },
      "JsonSpec": {
        "description": "A hardware spec",
        "type": "object",
        "properties": {
          "architecture": {
            "description": "CPU architecture",
            "allOf": [
              {
                "$ref": "#/components/schemas/Architecture"
              }
            ]
          },
          "archived": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "cpu": {
            "$ref": "#/components/schemas/Cpu"
          },
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "disk": {
            "$ref": "#/components/schemas/Disk"
          },
          "fallback": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "memory": {
            "$ref": "#/components/schemas/Memory"
          },
          "modified": {
            "$ref": "#/components/schemas/DateTime"
          },
          "name": {
            "$ref": "#/components/schemas/ResourceName"
          },
          "network": {
            "type": "boolean"
          },
          "os": {
            "description": "Operating system",
            "allOf": [
              {
                "$ref": "#/components/schemas/OperatingSystem"
              }
            ]
          },
          "sandbox": {
            "nullable": true,
            "description": "Sandbox type",
            "allOf": [
              {
                "$ref": "#/components/schemas/Sandbox"
              }
            ]
          },
          "slug": {
            "$ref": "#/components/schemas/SpecSlug"
          },
          "uuid": {
            "$ref": "#/components/schemas/SpecUuid"
          }
        },
        "required": [
          "architecture",
          "cpu",
          "created",
          "disk",
          "memory",
          "modified",
          "name",
          "network",
          "os",
          "slug",
          "uuid"
        ]
      },
      "JsonSpecs": {
        "description": "List of specs",
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonSpec"
        }
      },
      "JsonSso": {
        "type": "object",
        "properties": {
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "domain": {
            "$ref": "#/components/schemas/NonEmpty"
          },
          "uuid": {
            "$ref": "#/components/schemas/SsoUuid"
          }
        },
        "required": [
          "created",
          "domain",
          "uuid"
        ]
      },
      "JsonSsos": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonSso"
        }
      },
      "JsonStartPoint": {
        "type": "object",
        "properties": {
          "branch": {
            "$ref": "#/components/schemas/BranchUuid"
          },
          "head": {
            "$ref": "#/components/schemas/HeadUuid"
          },
          "version": {
            "$ref": "#/components/schemas/JsonVersion"
          }
        },
        "required": [
          "branch",
          "head",
          "version"
        ]
      },
      "JsonStats": {
        "type": "object",
        "properties": {
          "enabled": {
            "nullable": true,
            "description": "Enable stats collection",
            "type": "boolean"
          },
          "offset": {
            "nullable": true,
            "description": "Number of seconds from midnight",
            "type": "integer",
            "format": "uint32",
            "minimum": 0
          }
        }
      },
      "JsonTestbed": {
        "type": "object",
        "properties": {
          "archived": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "modified": {
            "$ref": "#/components/schemas/DateTime"
          },
          "name": {
            "$ref": "#/components/schemas/ResourceName"
          },
          "project": {
            "$ref": "#/components/schemas/ProjectUuid"
          },
          "slug": {
            "$ref": "#/components/schemas/TestbedSlug"
          },
          "spec": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonSpec"
              }
            ]
          },
          "uuid": {
            "$ref": "#/components/schemas/TestbedUuid"
          }
        },
        "required": [
          "created",
          "modified",
          "name",
          "project",
          "slug",
          "uuid"
        ]
      },
      "JsonTestbedPatch": {
        "type": "object",
        "properties": {
          "archived": {
            "nullable": true,
            "description": "Set whether the testbed is archived.",
            "type": "boolean"
          },
          "name": {
            "nullable": true,
            "description": "The new name of the testbed. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred new slug for the testbed. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/TestbedSlug"
              }
            ]
          },
          "spec": {
            "nullable": true,
            "description": "The UUID or slug of the hardware spec for this testbed. Set to `null` to remove the current spec.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceId"
              }
            ]
          }
        }
      },
      "JsonTestbedPatchNull": {
        "type": "object",
        "properties": {
          "archived": {
            "nullable": true,
            "type": "boolean"
          },
          "name": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/TestbedSlug"
              }
            ]
          },
          "spec": {
            "type": "string",
            "enum": [
              null
            ]
          }
        },
        "required": [
          "spec"
        ]
      },
      "JsonTestbeds": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonTestbed"
        }
      },
      "JsonThreshold": {
        "type": "object",
        "properties": {
          "branch": {
            "$ref": "#/components/schemas/JsonBranch"
          },
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "measure": {
            "$ref": "#/components/schemas/JsonMeasure"
          },
          "model": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonModel"
              }
            ]
          },
          "modified": {
            "$ref": "#/components/schemas/DateTime"
          },
          "project": {
            "$ref": "#/components/schemas/ProjectUuid"
          },
          "testbed": {
            "$ref": "#/components/schemas/JsonTestbed"
          },
          "uuid": {
            "$ref": "#/components/schemas/ThresholdUuid"
          }
        },
        "required": [
          "branch",
          "created",
          "measure",
          "modified",
          "project",
          "testbed",
          "uuid"
        ]
      },
      "JsonThresholdModel": {
        "type": "object",
        "properties": {
          "created": {
            "$ref": "#/components/schemas/DateTime"
          },
          "model": {
            "$ref": "#/components/schemas/JsonModel"
          },
          "project": {
            "$ref": "#/components/schemas/ProjectUuid"
          },
          "uuid": {
            "$ref": "#/components/schemas/ThresholdUuid"
          }
        },
        "required": [
          "created",
          "model",
          "project",
          "uuid"
        ]
      },
      "JsonThresholds": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonThreshold"
        }
      },
      "JsonTls": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "cert_file": {
                "type": "string"
              },
              "key_file": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "as_file"
                ]
              }
            },
            "required": [
              "cert_file",
              "key_file",
              "type"
            ]
          },
          {
            "type": "object",
            "properties": {
              "certs": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "format": "uint8",
                  "minimum": 0
                }
              },
              "key": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "format": "uint8",
                  "minimum": 0
                }
              },
              "type": {
                "type": "string",
                "enum": [
                  "as_bytes"
                ]
              }
            },
            "required": [
              "certs",
              "key",
              "type"
            ]
          }
        ]
      },
      "JsonToken": {
        "type": "object",
        "properties": {
          "creation": {
            "$ref": "#/components/schemas/DateTime"
          },
          "expiration": {
            "$ref": "#/components/schemas/DateTime"
          },
          "name": {
            "$ref": "#/components/schemas/ResourceName"
          },
          "token": {
            "$ref": "#/components/schemas/Jwt"
          },
          "user": {
            "$ref": "#/components/schemas/UserUuid"
          },
          "uuid": {
            "$ref": "#/components/schemas/TokenUuid"
          }
        },
        "required": [
          "creation",
          "expiration",
          "name",
          "token",
          "user",
          "uuid"
        ]
      },
      "JsonTokens": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonToken"
        }
      },
      "JsonTopCohort": {
        "type": "object",
        "properties": {
          "month": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonTopProject"
            }
          },
          "total": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonTopProject"
            }
          },
          "week": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonTopProject"
            }
          }
        },
        "required": [
          "month",
          "total",
          "week"
        ]
      },
      "JsonTopJobCohort": {
        "type": "object",
        "properties": {
          "month": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonTopJobProject"
            }
          },
          "total": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonTopJobProject"
            }
          },
          "week": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonTopJobProject"
            }
          }
        },
        "required": [
          "month",
          "total",
          "week"
        ]
      },
      "JsonTopJobProject": {
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/ResourceName"
          },
          "percentage": {
            "type": "number",
            "format": "double"
          },
          "seconds": {
            "description": "Total runner seconds",
            "type": "integer",
            "format": "uint64",
            "minimum": 0
          },
          "uuid": {
            "$ref": "#/components/schemas/ProjectUuid"
          }
        },
        "required": [
          "name",
          "percentage",
          "seconds",
          "uuid"
        ]
      },
      "JsonTopProject": {
        "type": "object",
        "properties": {
          "metrics": {
            "type": "integer",
            "format": "uint64",
            "minimum": 0
          },
          "name": {
            "$ref": "#/components/schemas/ResourceName"
          },
          "percentage": {
            "type": "number",
            "format": "double"
          },
          "uuid": {
            "$ref": "#/components/schemas/ProjectUuid"
          }
        },
        "required": [
          "metrics",
          "name",
          "percentage",
          "uuid"
        ]
      },
      "JsonUpdateAlert": {
        "type": "object",
        "properties": {
          "status": {
            "nullable": true,
            "description": "The new status of the alert.",
            "allOf": [
              {
                "$ref": "#/components/schemas/UpdateAlertStatus"
              }
            ]
          }
        }
      },
      "JsonUpdateBenchmark": {
        "type": "object",
        "properties": {
          "archived": {
            "nullable": true,
            "description": "Set whether the benchmark is archived.",
            "type": "boolean"
          },
          "name": {
            "nullable": true,
            "description": "The new name of the benchmark. Maximum length is 1,024 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/BenchmarkName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred new slug for the benchmark. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/BenchmarkSlug"
              }
            ]
          }
        }
      },
      "JsonUpdateBranch": {
        "type": "object",
        "properties": {
          "archived": {
            "nullable": true,
            "description": "Set whether the branch is archived.",
            "type": "boolean"
          },
          "name": {
            "nullable": true,
            "description": "The new name of the branch. Maximum length is 256 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/BranchName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred new slug for the branch. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/BranchSlug"
              }
            ]
          },
          "start_point": {
            "nullable": true,
            "description": "The new start point for the branch.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonUpdateStartPoint"
              }
            ]
          }
        }
      },
      "JsonUpdateMeasure": {
        "type": "object",
        "properties": {
          "archived": {
            "nullable": true,
            "description": "Set whether the measure is archived.",
            "type": "boolean"
          },
          "name": {
            "nullable": true,
            "description": "The new name of the measure. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred new slug for the measure. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/MeasureSlug"
              }
            ]
          },
          "units": {
            "nullable": true,
            "description": "The new units of measure. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          }
        }
      },
      "JsonUpdateMember": {
        "type": "object",
        "properties": {
          "role": {
            "nullable": true,
            "description": "The new organization role for the member.",
            "allOf": [
              {
                "$ref": "#/components/schemas/OrganizationRole"
              }
            ]
          }
        }
      },
      "JsonUpdateModel": {
        "type": "object",
        "properties": {
          "lower_boundary": {
            "nullable": true,
            "description": "The lower boundary used to calculate the lower boundary limit. The requirements for this field depend on which `test` is selected.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Boundary"
              }
            ]
          },
          "max_sample_size": {
            "nullable": true,
            "description": "The maximum number of samples used to perform the test. Only the most recent samples will be used if there are more.",
            "allOf": [
              {
                "$ref": "#/components/schemas/SampleSize"
              }
            ]
          },
          "min_sample_size": {
            "nullable": true,
            "description": "The minimum number of samples required to perform the test. If there are fewer samples, the test will not be performed.",
            "allOf": [
              {
                "$ref": "#/components/schemas/SampleSize"
              }
            ]
          },
          "test": {
            "description": "The test used by the threshold model to calculate the baseline and boundary limits.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ModelTest"
              }
            ]
          },
          "upper_boundary": {
            "nullable": true,
            "description": "The upper boundary used to calculate the upper boundary limit. The requirements for this field depend on which `test` is selected.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Boundary"
              }
            ]
          },
          "window": {
            "nullable": true,
            "description": "The window of time for samples used to perform the test, in seconds. Samples outside of this window will be omitted.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Window"
              }
            ]
          }
        },
        "required": [
          "test"
        ]
      },
      "JsonUpdateOrganization": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/JsonOrganizationPatch"
          },
          {
            "$ref": "#/components/schemas/JsonOrganizationPatchNull"
          }
        ]
      },
      "JsonUpdatePlot": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/JsonPlotPatch"
          },
          {
            "$ref": "#/components/schemas/JsonPlotPatchNull"
          }
        ]
      },
      "JsonUpdateProject": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/JsonProjectPatch"
          },
          {
            "$ref": "#/components/schemas/JsonProjectPatchNull"
          }
        ]
      },
      "JsonUpdateRunner": {
        "description": "Update a runner",
        "type": "object",
        "properties": {
          "archived": {
            "nullable": true,
            "description": "Set whether the runner is archived.",
            "type": "boolean"
          },
          "name": {
            "nullable": true,
            "description": "The new name for the runner.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The new slug for the runner.",
            "allOf": [
              {
                "$ref": "#/components/schemas/RunnerSlug"
              }
            ]
          }
        }
      },
      "JsonUpdateSpec": {
        "description": "Update a spec",
        "type": "object",
        "properties": {
          "archived": {
            "nullable": true,
            "description": "Set whether the spec is archived.",
            "type": "boolean"
          },
          "fallback": {
            "nullable": true,
            "description": "Set whether the spec is the fallback spec.",
            "type": "boolean"
          },
          "name": {
            "nullable": true,
            "description": "The new name for the spec.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The new slug for the spec.",
            "allOf": [
              {
                "$ref": "#/components/schemas/SpecSlug"
              }
            ]
          }
        }
      },
      "JsonUpdateStartPoint": {
        "type": "object",
        "properties": {
          "branch": {
            "nullable": true,
            "description": "The UUID, slug, or name of the branch to use as the start point.",
            "allOf": [
              {
                "$ref": "#/components/schemas/NameId"
              }
            ]
          },
          "clone_thresholds": {
            "nullable": true,
            "description": "If set to `true`, the thresholds from the start point branch will be deep copied to the branch. This can be useful for pull request branches that should have the same thresholds as their target branch. Requires the `branch` field to be set.",
            "type": "boolean"
          },
          "hash": {
            "nullable": true,
            "description": "The full git hash of the branch to use as the start point. Requires the `branch` field to be set.",
            "allOf": [
              {
                "$ref": "#/components/schemas/GitHash"
              }
            ]
          },
          "max_versions": {
            "nullable": true,
            "description": "The maximum number of historical branch versions to include. Versions beyond this number will be omitted. The default is 255. Requires the `branch` field to be set.",
            "type": "integer",
            "format": "uint32",
            "minimum": 0
          },
          "reset": {
            "nullable": true,
            "description": "Reset the branch head to an empty state. If the start point `branch` is specified, the new branch head will begin at that start point. Otherwise, the branch head will be reset to an empty state.",
            "type": "boolean"
          }
        }
      },
      "JsonUpdateTestbed": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/JsonTestbedPatch"
          },
          {
            "$ref": "#/components/schemas/JsonTestbedPatchNull"
          }
        ]
      },
      "JsonUpdateThreshold": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/JsonUpdateModel"
          },
          {
            "$ref": "#/components/schemas/JsonRemoveModel"
          }
        ]
      },
      "JsonUpdateToken": {
        "type": "object",
        "properties": {
          "name": {
            "nullable": true,
            "description": "The new name of the token. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceName"
              }
            ]
          }
        }
      },
      "JsonUpdateUser": {
        "type": "object",
        "properties": {
          "admin": {
            "nullable": true,
            "description": "Update whether the user is an admin. Must be an admin to update this field.",
            "type": "boolean"
          },
          "email": {
            "nullable": true,
            "description": "The new email for the user.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Email"
              }
            ]
          },
          "locked": {
            "nullable": true,
            "description": "Update whether the user is locked. Must be an admin to update this field.",
            "type": "boolean"
          },
          "name": {
            "nullable": true,
            "description": "The new name of the user. Maximum length is 64 characters. May only contain alphanumeric characters, non-leading or trailing spaces, and the following characters: , . - '",
            "allOf": [
              {
                "$ref": "#/components/schemas/UserName"
              }
            ]
          },
          "slug": {
            "nullable": true,
            "description": "The preferred new slug for the user. Maximum length is 64 characters.",
            "allOf": [
              {
                "$ref": "#/components/schemas/UserSlug"
              }
            ]
          }
        }
      },
      "JsonUsage": {
        "type": "object",
        "properties": {
          "end_time": {
            "description": "The end time of the usage.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "kind": {
            "description": "The kind of usage.",
            "allOf": [
              {
                "$ref": "#/components/schemas/UsageKind"
              }
            ]
          },
          "license": {
            "nullable": true,
            "description": "The organization license.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonLicense"
              }
            ]
          },
          "organization": {
            "description": "The organization UUID.",
            "allOf": [
              {
                "$ref": "#/components/schemas/OrganizationUuid"
              }
            ]
          },
          "plan": {
            "nullable": true,
            "description": "The organization plan.",
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonPlan"
              }
            ]
          },
          "start_time": {
            "description": "The start time of the usage.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "usage": {
            "nullable": true,
            "description": "The metrics usage amount.",
            "type": "integer",
            "format": "uint32",
            "minimum": 0
          }
        },
        "required": [
          "end_time",
          "kind",
          "organization",
          "start_time"
        ]
      },
      "JsonUser": {
        "type": "object",
        "properties": {
          "admin": {
            "type": "boolean"
          },
          "email": {
            "$ref": "#/components/schemas/Email"
          },
          "locked": {
            "type": "boolean"
          },
          "name": {
            "$ref": "#/components/schemas/UserName"
          },
          "slug": {
            "$ref": "#/components/schemas/UserSlug"
          },
          "uuid": {
            "$ref": "#/components/schemas/UserUuid"
          }
        },
        "required": [
          "admin",
          "email",
          "locked",
          "name",
          "slug",
          "uuid"
        ]
      },
      "JsonUserRateLimiter": {
        "type": "object",
        "properties": {
          "attempts": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRateLimits"
              }
            ]
          },
          "invites": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRateLimits"
              }
            ]
          },
          "organizations": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRateLimits"
              }
            ]
          },
          "requests": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRateLimits"
              }
            ]
          },
          "runs": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRateLimits"
              }
            ]
          },
          "tokens": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/JsonRateLimits"
              }
            ]
          }
        }
      },
      "JsonUsers": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonUser"
        }
      },
      "JsonUuid": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "uuid"
        ]
      },
      "JsonValidation": {
        "type": "object",
        "properties": {
          "interval": {
            "nullable": true,
            "description": "How often to restore and validate replica data",
            "type": "string"
          }
        }
      },
      "JsonVersion": {
        "type": "object",
        "properties": {
          "hash": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/GitHash"
              }
            ]
          },
          "number": {
            "$ref": "#/components/schemas/VersionNumber"
          }
        },
        "required": [
          "number"
        ]
      },
      "Jwt": {
        "type": "string"
      },
      "LastFour": {
        "type": "string"
      },
      "LogLevel": {
        "type": "string",
        "enum": [
          "trace",
          "debug",
          "info",
          "warn",
          "error",
          "critical"
        ]
      },
      "MeasureSlug": {
        "$ref": "#/components/schemas/Slug"
      },
      "MeasureUuid": {
        "type": "string",
        "format": "uuid"
      },
      "Memory": {
        "type": "integer",
        "format": "uint64",
        "minimum": 0
      },
      "MetricUuid": {
        "type": "string",
        "format": "uuid"
      },
      "Model": {
        "type": "object",
        "properties": {
          "lower_boundary": {
            "nullable": true,
            "description": "The lower boundary used to calculate the lower boundary limit. The requirements for this field depend on which `test` is selected.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Boundary"
              }
            ]
          },
          "max_sample_size": {
            "nullable": true,
            "description": "The maximum number of samples used to perform the test. Only the most recent samples will be used if there are more.",
            "allOf": [
              {
                "$ref": "#/components/schemas/SampleSize"
              }
            ]
          },
          "min_sample_size": {
            "nullable": true,
            "description": "The minimum number of samples required to perform the test. If there are fewer samples, the test will not be performed.",
            "allOf": [
              {
                "$ref": "#/components/schemas/SampleSize"
              }
            ]
          },
          "test": {
            "description": "The test used by the threshold model to calculate the baseline and boundary limits.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ModelTest"
              }
            ]
          },
          "upper_boundary": {
            "nullable": true,
            "description": "The upper boundary used to calculate the upper boundary limit. The requirements for this field depend on which `test` is selected.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Boundary"
              }
            ]
          },
          "window": {
            "nullable": true,
            "description": "The window of time for samples used to perform the test, in seconds. Samples outside of this window will be omitted.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Window"
              }
            ]
          }
        },
        "required": [
          "test"
        ]
      },
      "ModelTest": {
        "type": "string",
        "enum": [
          "static",
          "percentage",
          "z_score",
          "t_test",
          "log_normal",
          "iqr",
          "delta_iqr"
        ]
      },
      "ModelUuid": {
        "type": "string",
        "format": "uuid"
      },
      "NameId": {
        "type": "string"
      },
      "NonEmpty": {
        "type": "string"
      },
      "OperatingSystem": {
        "type": "string",
        "enum": [
          "linux",
          "macos",
          "windows"
        ]
      },
      "OrganizationRole": {
        "oneOf": [
          {
            "description": "The organization leader role.",
            "type": "string",
            "enum": [
              "leader"
            ]
          }
        ]
      },
      "OrganizationSlug": {
        "$ref": "#/components/schemas/Slug"
      },
      "OrganizationUuid": {
        "type": "string",
        "format": "uuid"
      },
      "OtelProtocol": {
        "oneOf": [
          {
            "description": "GRPC protocol",
            "type": "string",
            "enum": [
              "grpc"
            ]
          },
          {
            "description": "HTTP protocol with binary protobuf",
            "type": "string",
            "enum": [
              "http/binary"
            ]
          },
          {
            "description": "HTTP protocol with JSON payload",
            "type": "string",
            "enum": [
              "http/json"
            ]
          }
        ]
      },
      "PlanLevel": {
        "type": "string",
        "enum": [
          "free",
          "team",
          "enterprise"
        ]
      },
      "PlanStatus": {
        "type": "string",
        "enum": [
          "active",
          "canceled",
          "incomplete",
          "incomplete_expired",
          "past_due",
          "paused",
          "trialing",
          "unpaid"
        ]
      },
      "PlotUuid": {
        "type": "string",
        "format": "uuid"
      },
      "ProjectSlug": {
        "$ref": "#/components/schemas/Slug"
      },
      "ProjectUuid": {
        "type": "string",
        "format": "uuid"
      },
      "RecaptchaScore": {
        "type": "number",
        "format": "float"
      },
      "RegistryDataStore": {
        "description": "Container registry storage backend",
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "service": {
                "type": "string",
                "enum": [
                  "local"
                ]
              }
            },
            "required": [
              "service"
            ]
          },
          {
            "type": "object",
            "properties": {
              "access_key_id": {
                "description": "AWS Access Key ID with permissions to read/write the specified S3 bucket",
                "type": "string"
              },
              "access_point": {
                "description": "S3 Access Point ARN with optional path prefix Format: arn:aws:s3:<region>:<account-id>:accesspoint/<bucket>[/path]",
                "type": "string"
              },
              "chunk_size": {
                "nullable": true,
                "description": "Minimum chunk size in bytes for buffering upload data before storing to S3. Valid range: 5 MB–5 GB. Defaults to 5 MB (5,242,880 bytes). See [`DEFAULT_CHUNK_SIZE`] and [`MAX_CHUNK_SIZE`].",
                "type": "integer",
                "format": "uint64",
                "minimum": 0
              },
              "secret_access_key": {
                "description": "AWS Secret Access Key with permissions to read/write the specified S3 bucket",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Secret"
                  }
                ]
              },
              "service": {
                "type": "string",
                "enum": [
                  "aws_s3"
                ]
              }
            },
            "required": [
              "access_key_id",
              "access_point",
              "secret_access_key",
              "service"
            ]
          }
        ]
      },
      "ReportIdempotencyKey": {
        "type": "string",
        "format": "uuid"
      },
      "ReportUuid": {
        "type": "string",
        "format": "uuid"
      },
      "ResourceId": {
        "$ref": "#/components/schemas/Slug"
      },
      "ResourceName": {
        "type": "string"
      },
      "RunContext": {
        "type": "object",
        "additionalProperties": {
          "type": "string"
        }
      },
      "RunnerSlug": {
        "$ref": "#/components/schemas/Slug"
      },
      "RunnerUuid": {
        "type": "string",
        "format": "uuid"
      },
      "SampleSize": {
        "type": "integer",
        "format": "uint32",
        "minimum": 0
      },
      "Sandbox": {
        "type": "string",
        "enum": [
          "firecracker"
        ]
      },
      "Secret": {
        "type": "string"
      },
      "ServerLog": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "stderr_terminal": {
                "type": "object",
                "properties": {
                  "level": {
                    "$ref": "#/components/schemas/LogLevel"
                  }
                },
                "required": [
                  "level"
                ]
              }
            },
            "required": [
              "stderr_terminal"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "file": {
                "type": "object",
                "properties": {
                  "if_exists": {
                    "$ref": "#/components/schemas/IfExists"
                  },
                  "level": {
                    "$ref": "#/components/schemas/LogLevel"
                  },
                  "path": {
                    "type": "string"
                  }
                },
                "required": [
                  "if_exists",
                  "level",
                  "path"
                ]
              }
            },
            "required": [
              "file"
            ],
            "additionalProperties": false
          }
        ]
      },
      "ServerUuid": {
        "type": "string",
        "format": "uuid"
      },
      "Slug": {
        "type": "string"
      },
      "SpecSlug": {
        "$ref": "#/components/schemas/Slug"
      },
      "SpecUuid": {
        "type": "string",
        "format": "uuid"
      },
      "SsoUuid": {
        "type": "string",
        "format": "uuid"
      },
      "TestbedSlug": {
        "$ref": "#/components/schemas/Slug"
      },
      "TestbedUuid": {
        "type": "string",
        "format": "uuid"
      },
      "ThresholdUuid": {
        "type": "string",
        "format": "uuid"
      },
      "Timeout": {
        "type": "integer",
        "format": "uint32",
        "minimum": 0
      },
      "TokenUuid": {
        "type": "string",
        "format": "uuid"
      },
      "UpdateAlertStatus": {
        "oneOf": [
          {
            "description": "The alert is active.",
            "type": "string",
            "enum": [
              "active"
            ]
          },
          {
            "description": "The alert has been dismissed by a user.",
            "type": "string",
            "enum": [
              "dismissed"
            ]
          }
        ]
      },
      "Url": {
        "type": "string"
      },
      "UsageKind": {
        "oneOf": [
          {
            "description": "Bencher Cloud (Free)",
            "type": "string",
            "enum": [
              "cloud_free"
            ]
          },
          {
            "description": "Bencher Cloud (Metered)",
            "type": "string",
            "enum": [
              "cloud_metered"
            ]
          },
          {
            "description": "Bencher Self-Hosted (Licensed) via Bencher Cloud",
            "type": "string",
            "enum": [
              "cloud_self_hosted_licensed"
            ]
          },
          {
            "description": "Bencher Self-Hosted (Free)",
            "type": "string",
            "enum": [
              "self_hosted_free"
            ]
          },
          {
            "description": "Bencher Self-Hosted (Licensed)",
            "type": "string",
            "enum": [
              "self_hosted_licensed"
            ]
          }
        ]
      },
      "UserName": {
        "type": "string"
      },
      "UserSlug": {
        "$ref": "#/components/schemas/Slug"
      },
      "UserUuid": {
        "type": "string",
        "format": "uuid"
      },
      "VersionNumber": {
        "type": "integer",
        "format": "uint32",
        "minimum": 0
      },
      "Visibility": {
        "type": "string",
        "enum": [
          "public",
          "private"
        ]
      },
      "Window": {
        "type": "integer",
        "format": "uint32",
        "minimum": 0
      },
      "XAxis": {
        "type": "string",
        "enum": [
          "date_time",
          "version"
        ]
      },
      "JsonDirection": {
        "type": "string",
        "enum": [
          "asc",
          "desc"
        ]
      },
      "OrganizationsSort": {
        "oneOf": [
          {
            "description": "Sort by organization name.",
            "type": "string",
            "enum": [
              "name"
            ]
          }
        ]
      },
      "Search": {
        "type": "string"
      },
      "OrganizationPermission": {
        "type": "string",
        "enum": [
          "view",
          "create",
          "edit",
          "delete",
          "manage",
          "view_role",
          "create_role",
          "edit_role",
          "delete_role"
        ]
      },
      "OrgMembersSort": {
        "oneOf": [
          {
            "description": "Sort by user name.",
            "type": "string",
            "enum": [
              "name"
            ]
          }
        ]
      },
      "OrgProjectsSort": {
        "oneOf": [
          {
            "description": "Sort by project name.",
            "type": "string",
            "enum": [
              "name"
            ]
          }
        ]
      },
      "OrgSsoSort": {
        "oneOf": [
          {
            "description": "Sort by SSO domain.",
            "type": "string",
            "enum": [
              "domain"
            ]
          }
        ]
      },
      "ProjectsSort": {
        "oneOf": [
          {
            "description": "Sort by project name.",
            "type": "string",
            "enum": [
              "name"
            ]
          }
        ]
      },
      "ProjAlertsSort": {
        "oneOf": [
          {
            "description": "Sort by alert creation date time.",
            "type": "string",
            "enum": [
              "created"
            ]
          },
          {
            "description": "Sort by alert modified date time.",
            "type": "string",
            "enum": [
              "modified"
            ]
          }
        ]
      },
      "ProjectPermission": {
        "type": "string",
        "enum": [
          "view",
          "create",
          "edit",
          "delete",
          "manage",
          "view_role",
          "create_role",
          "edit_role",
          "delete_role"
        ]
      },
      "ProjBenchmarksSort": {
        "oneOf": [
          {
            "description": "Sort by benchmark name.",
            "type": "string",
            "enum": [
              "name"
            ]
          }
        ]
      },
      "ProjBranchesSort": {
        "oneOf": [
          {
            "description": "Sort by branch name.",
            "type": "string",
            "enum": [
              "name"
            ]
          }
        ]
      },
      "ProjJobsSort": {
        "oneOf": [
          {
            "description": "Sort by creation date time.",
            "type": "string",
            "enum": [
              "created"
            ]
          }
        ]
      },
      "ProjMeasuresSort": {
        "oneOf": [
          {
            "description": "Sort by measure name.",
            "type": "string",
            "enum": [
              "name"
            ]
          }
        ]
      },
      "DateTimeMillis": {
        "$ref": "#/components/schemas/TimestampMillis"
      },
      "TimestampMillis": {
        "type": "integer",
        "format": "int64"
      },
      "ProjPlotsSort": {
        "oneOf": [
          {
            "description": "Sort by plot index.",
            "type": "string",
            "enum": [
              "index"
            ]
          },
          {
            "description": "Sort by plot title.",
            "type": "string",
            "enum": [
              "title"
            ]
          }
        ]
      },
      "ProjReportsSort": {
        "oneOf": [
          {
            "description": "Sort by date time.",
            "type": "string",
            "enum": [
              "date_time"
            ]
          }
        ]
      },
      "ProjTestbedsSort": {
        "oneOf": [
          {
            "description": "Sort by testbed name.",
            "type": "string",
            "enum": [
              "name"
            ]
          }
        ]
      },
      "ProjThresholdsSort": {
        "oneOf": [
          {
            "description": "Sort by threshold creation date time.",
            "type": "string",
            "enum": [
              "created"
            ]
          },
          {
            "description": "Sort by threshold modified date time.",
            "type": "string",
            "enum": [
              "modified"
            ]
          }
        ]
      },
      "RunnersSort": {
        "oneOf": [
          {
            "description": "Sort by runner name.",
            "type": "string",
            "enum": [
              "name"
            ]
          },
          {
            "description": "Sort by creation date.",
            "type": "string",
            "enum": [
              "created"
            ]
          }
        ]
      },
      "BooleanParam": {
        "description": "Optional boolean parameter",
        "type": "boolean"
      },
      "SpecsSort": {
        "oneOf": [
          {
            "description": "Sort by spec name.",
            "type": "string",
            "enum": [
              "name"
            ]
          },
          {
            "description": "Sort by creation date.",
            "type": "string",
            "enum": [
              "created"
            ]
          }
        ]
      },
      "UsersSort": {
        "oneOf": [
          {
            "description": "Sort by user name.",
            "type": "string",
            "enum": [
              "name"
            ]
          }
        ]
      },
      "UserTokensSort": {
        "oneOf": [
          {
            "description": "Sort by token name.",
            "type": "string",
            "enum": [
              "name"
            ]
          }
        ]
      }
    },
    "responses": {
      "Error": {
        "description": "Error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "alerts",
      "description": "Alerts"
    },
    {
      "name": "allowed"
    },
    {
      "name": "auth",
      "description": "Auth"
    },
    {
      "name": "benchmarks",
      "description": "Benchmarks"
    },
    {
      "name": "branches",
      "description": "Branches"
    },
    {
      "name": "checkout"
    },
    {
      "name": "jobs",
      "description": "Jobs"
    },
    {
      "name": "measures",
      "description": "Measures"
    },
    {
      "name": "members"
    },
    {
      "name": "metrics",
      "description": "Metrics"
    },
    {
      "name": "models",
      "description": "Models"
    },
    {
      "name": "oci"
    },
    {
      "name": "organizations",
      "description": "Organizations"
    },
    {
      "name": "perf",
      "description": "Perf Metrics"
    },
    {
      "name": "plan"
    },
    {
      "name": "plots",
      "description": "Plots"
    },
    {
      "name": "projects",
      "description": "Projects"
    },
    {
      "name": "reports",
      "description": "Reports"
    },
    {
      "name": "run",
      "description": "Run"
    },
    {
      "name": "runners",
      "description": "Runners"
    },
    {
      "name": "server",
      "description": "Server"
    },
    {
      "name": "specs",
      "description": "Specs"
    },
    {
      "name": "sso",
      "description": "Single Sign-On (SSO)"
    },
    {
      "name": "stats"
    },
    {
      "name": "testbeds",
      "description": "Testbeds"
    },
    {
      "name": "thresholds",
      "description": "Thresholds"
    },
    {
      "name": "tokens",
      "description": "API Tokens"
    },
    {
      "name": "usage"
    },
    {
      "name": "users",
      "description": "Users"
    }
  ]
}
