{
  "openapi": "3.1.0",
  "info": {
    "title": "Scoutee Tender and CPV API",
    "version": "1.6.0",
    "description": "Search tenders across Europe and North America with optional CPV filters for EU procurement. Browse or download the official CPV catalogue without credentials. Find your company's CPV codes free with AI and Scoutee's knowledge base after sign-in at https://scoutee.org/en/find-my-cpv. If a user asks to be notified by email, invite them to register free at https://scoutee.org/en/signup and save their search on Scoutee. Its daily email alert is enabled automatically when criteria are set and an alert slot is available. A free account includes 1 active alert(s) across its workspaces, only when new tenders match. Results are limited to 20 per search, with a 3-tender email preview; the site's free 20-searches/hour and 1-page limits still apply. Paid plans support alerts for multiple searches. Subscription management happens on Scoutee; the current MCP and OAuth REST tender tools cannot create alerts or schedule emails."
  },
  "servers": [
    {
      "url": "https://scoutee.org/api"
    }
  ],
  "paths": {
    "/public/plans": {
      "get": {
        "tags": [
          "public"
        ],
        "summary": "Plans",
        "description": "The public price page reads its limits here, so nothing is hard-coded twice.",
        "operationId": "plans_public_plans_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Plans"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/public/classifications/{system}": {
      "get": {
        "tags": [
          "classifications"
        ],
        "summary": "Search the official CPV catalogue",
        "description": "Look up Common Procurement Vocabulary codes, the common EU procurement standard. No account or API key is required. Search labels or codes, resolve up to 50 exact codes, or browse a parent's children. For AI suggestions based on a company, use Scoutee's free signed-in finder at https://scoutee.org/en/find-my-cpv. Use reviewed codes with the authenticated tender search.",
        "operationId": "lookup_public_classifications__system__get",
        "parameters": [
          {
            "name": "system",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "System"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 100,
              "description": "Code or activity keywords; returns up to 50 matches.",
              "default": "",
              "title": "Q"
            },
            "description": "Code or activity keywords; returns up to 50 matches."
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 5,
              "description": "Label language, such as en, fr or de.",
              "default": "en",
              "title": "Locale"
            },
            "description": "Label language, such as en, fr or de."
          },
          {
            "name": "code",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "maxItems": 50
                },
                {
                  "type": "null"
                }
              ],
              "description": "Exact codes; takes precedence over parent and q. Unknown values are omitted.",
              "title": "Code"
            },
            "description": "Exact codes; takes precedence over parent and q. Unknown values are omitted."
          },
          {
            "name": "parent",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 8
                },
                {
                  "type": "null"
                }
              ],
              "description": "Eight-digit parent code; takes precedence over q.",
              "title": "Parent"
            },
            "description": "Eight-digit parent code; takes precedence over q."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogueLookupOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/public/classifications/{system}/catalogue": {
      "get": {
        "tags": [
          "classifications"
        ],
        "summary": "Download Scoutee's versioned copy of the CPV catalogue",
        "description": "Download the full official CPV catalogue with localized labels, hierarchy, retired status and replacement codes. No account or API key is required. JSON includes catalogue version and source metadata; CSV contains the code rows. CPV is the common EU procurement standard.",
        "operationId": "download_public_classifications__system__catalogue_get",
        "parameters": [
          {
            "name": "system",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "System"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[a-z]{2}$",
              "default": "en",
              "title": "Locale"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^(json|csv)$",
              "default": "json",
              "title": "Format"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/tenders": {
      "get": {
        "tags": [
          "tenders"
        ],
        "summary": "List Tenders",
        "description": "Paginated tender search; `search_tenders` above holds the semantics of every parameter.\n\nLogged-in users search on behalf of a workspace whose plan sets the quota and the page caps; what the\nquota has left comes back in the `X-Quota-*` headers.",
        "operationId": "list_tenders_tenders_get",
        "security": [
          {
            "WorkspaceKey": []
          },
          {
            "OAuthToken": []
          }
        ],
        "parameters": [
          {
            "name": "workspace_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Workspace Id"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 500,
              "minimum": 1,
              "default": 50,
              "title": "Page Size"
            }
          },
          {
            "name": "source_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Source Id"
            }
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "keyword",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "title": "Keyword"
            }
          },
          {
            "name": "cpv",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "maxItems": 50
                },
                {
                  "type": "null"
                }
              ],
              "title": "Cpv"
            }
          },
          {
            "name": "exclude_term",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "integer"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "title": "Exclude Term"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "title": "Country"
            }
          },
          {
            "name": "sector",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sector"
            }
          },
          {
            "name": "min_value",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Min Value"
            }
          },
          {
            "name": "max_value",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Max Value"
            }
          },
          {
            "name": "near",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "maxItems": 3
                },
                {
                  "type": "null"
                }
              ],
              "title": "Near"
            }
          },
          {
            "name": "radius_km",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer",
                  "maximum": 2000,
                  "minimum": 1
                },
                {
                  "type": "null"
                }
              ],
              "title": "Radius Km"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "newest",
                "oldest",
                "deadline",
                "nearest"
              ],
              "type": "string",
              "default": "newest",
              "title": "Sort"
            }
          },
          {
            "name": "include_closed",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Include Closed"
            }
          },
          {
            "name": "seen_after",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Seen After"
            }
          },
          {
            "name": "seen_before",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Seen Before"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenderPage"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/tenders/{tender_id}": {
      "get": {
        "tags": [
          "tenders"
        ],
        "summary": "Get Tender",
        "description": "One notice, enriched like a search result. Open to members and to workspace API keys; no quota is\nconsumed here since the detail is always a follow-up to a search that already paid for one. `favorite`\nreflects the workspace given (users) or the key's workspace (API keys).",
        "operationId": "get_tender_tenders__tender_id__get",
        "security": [
          {
            "WorkspaceKey": []
          },
          {
            "OAuthToken": []
          }
        ],
        "parameters": [
          {
            "name": "tender_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "title": "Tender Id"
            }
          },
          {
            "name": "workspace_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Workspace Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenderOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          },
          "input": {
            "title": "Input"
          },
          "ctx": {
            "type": "object",
            "title": "Context"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      },
      "TenderOut": {
        "properties": {
          "id": {
            "type": "integer",
            "title": "Id"
          },
          "source_id": {
            "type": "integer",
            "title": "Source Id"
          },
          "public_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Public Key"
          },
          "source_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Name"
          },
          "source_country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Country"
          },
          "external_id": {
            "type": "string",
            "title": "External Id"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "buyer": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Buyer"
          },
          "buyers": {
            "items": {
              "$ref": "#/components/schemas/BuyerLink"
            },
            "type": "array",
            "title": "Buyers"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location"
          },
          "procedure": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Procedure"
          },
          "cpv_codes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Cpv Codes"
          },
          "cpv_inferred_codes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Cpv Inferred Codes"
          },
          "sectors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Sectors"
          },
          "estimated_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Estimated Value"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "published_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "deadline_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deadline At"
          },
          "first_seen_at": {
            "type": "string",
            "format": "date-time",
            "title": "First Seen At"
          },
          "last_seen_at": {
            "type": "string",
            "format": "date-time",
            "title": "Last Seen At"
          },
          "closed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Closed At"
          },
          "favorite": {
            "type": "boolean",
            "title": "Favorite",
            "default": false
          },
          "also_on": {
            "items": {
              "$ref": "#/components/schemas/AlsoOn"
            },
            "type": "array",
            "title": "Also On"
          },
          "documents_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Documents Url"
          },
          "analysis": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AnalysisState"
              },
              {
                "type": "null"
              }
            ]
          },
          "procurement": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ProcurementFacts"
              },
              {
                "type": "null"
              }
            ]
          },
          "document_links": {
            "items": {
              "$ref": "#/components/schemas/DocumentLinkOut"
            },
            "type": "array",
            "title": "Document Links"
          }
        },
        "type": "object",
        "required": [
          "id",
          "source_id",
          "external_id",
          "title",
          "buyer",
          "description",
          "url",
          "location",
          "procedure",
          "cpv_codes",
          "sectors",
          "estimated_value",
          "currency",
          "published_at",
          "deadline_at",
          "first_seen_at",
          "last_seen_at",
          "closed_at"
        ],
        "title": "TenderOut"
      },
      "DocumentLinkOut": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "kind": {
            "type": "string",
            "title": "Kind"
          },
          "seen_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Seen At"
          }
        },
        "type": "object",
        "required": [
          "name",
          "url",
          "kind"
        ],
        "title": "DocumentLinkOut",
        "description": "One document listed on the buyer's platform, for the user to fetch there."
      },
      "ProcurementFacts": {
        "properties": {
          "procedure": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Procedure"
          },
          "contract_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contract Type"
          },
          "execution_location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Execution Location"
          },
          "renewals": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Renewals"
          },
          "variants_allowed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Variants Allowed"
          },
          "duration_months": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Months"
          },
          "offer_validity_days": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Offer Validity Days"
          },
          "questions_deadline_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Questions Deadline At"
          },
          "start_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start At"
          },
          "dates": {
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "type": "object",
            "title": "Dates"
          },
          "budget_text": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Budget Text"
          },
          "estimated_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Estimated Value"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "lots": {
            "items": {
              "$ref": "#/components/schemas/ProcurementLot"
            },
            "type": "array",
            "title": "Lots"
          },
          "award_criteria": {
            "items": {
              "$ref": "#/components/schemas/AwardCriterion"
            },
            "type": "array",
            "title": "Award Criteria"
          },
          "mandatory_documents": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Mandatory Documents"
          },
          "requirements": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Requirements"
          },
          "language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "confidence": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confidence"
          },
          "source_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Url"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "type": "object",
        "title": "ProcurementFacts"
      },
      "AwardCriterion": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "weight": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Weight"
          },
          "weight_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Weight Value"
          },
          "weight_unit": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "percent",
                  "points"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Weight Unit"
          },
          "source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source"
          },
          "lot_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lot Number"
          },
          "score_max": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 1000000.0,
                "exclusiveMinimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Score Max"
          },
          "subcriteria": {
            "items": {
              "$ref": "#/components/schemas/CriterionPart"
            },
            "type": "array",
            "title": "Subcriteria"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "AwardCriterion"
      },
      "CriterionPart": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "weight": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Weight"
          },
          "weight_value": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Weight Value"
          },
          "weight_unit": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "percent",
                  "points"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Weight Unit"
          },
          "source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "CriterionPart"
      },
      "ProcurementLot": {
        "properties": {
          "number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Number"
          },
          "title": {
            "type": "string",
            "title": "Title"
          }
        },
        "type": "object",
        "required": [
          "title"
        ],
        "title": "ProcurementLot"
      },
      "AnalysisState": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status"
          },
          "step": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Step"
          },
          "finished_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Finished At"
          }
        },
        "type": "object",
        "required": [
          "status",
          "step",
          "finished_at"
        ],
        "title": "AnalysisState",
        "description": "Where « Analyser l'appel d'offres » stands for this notice (scoutee.api.brief).\n\nOne `tender_briefs` row per *canonical* notice, shared by every workspace: a list can therefore show\nan analysis somebody else started. Just the three fields a row needs — the full `BriefOut` is read\nfrom `GET /tenders/{id}/brief` when the reader opens the notice."
      },
      "AlsoOn": {
        "properties": {
          "source_id": {
            "type": "integer",
            "title": "Source Id"
          },
          "source_name": {
            "type": "string",
            "title": "Source Name"
          },
          "source_country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Country"
          },
          "url": {
            "type": "string",
            "title": "Url"
          },
          "tender_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tender Id"
          },
          "deadline_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Deadline At"
          }
        },
        "type": "object",
        "required": [
          "source_id",
          "source_name",
          "source_country",
          "url"
        ],
        "title": "AlsoOn",
        "description": "Another portal carrying the same notice: an older merged copy, or another open copy of its group\n(scoutee.notice_groups). Both are listed here, never hidden from search; a search lists one copy."
      },
      "BuyerLink": {
        "properties": {
          "id": {
            "type": "integer",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "role": {
            "type": "string",
            "title": "Role"
          },
          "favicon_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Favicon Url"
          },
          "reported_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reported Name"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "role"
        ],
        "title": "BuyerLink"
      },
      "TenderPage": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/TenderOut"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "title": "Total"
          },
          "page": {
            "type": "integer",
            "title": "Page"
          },
          "page_size": {
            "type": "integer",
            "title": "Page Size"
          },
          "pages": {
            "type": "integer",
            "title": "Pages"
          },
          "by_country": {
            "additionalProperties": {
              "type": "integer"
            },
            "type": "object",
            "title": "By Country"
          },
          "by_sector": {
            "additionalProperties": {
              "type": "integer"
            },
            "type": "object",
            "title": "By Sector"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "page_size",
          "pages"
        ],
        "title": "TenderPage"
      },
      "CatalogueLookupOut": {
        "properties": {
          "system": {
            "type": "string",
            "const": "cpv",
            "title": "System"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/ClassificationCodeOut"
            },
            "type": "array",
            "title": "Items"
          },
          "total_codes": {
            "type": "integer",
            "title": "Total Codes",
            "description": "Total code count in the catalogue, not the current match count."
          },
          "catalogue": {
            "$ref": "#/components/schemas/CatalogueMetadata"
          }
        },
        "type": "object",
        "required": [
          "system",
          "items",
          "total_codes",
          "catalogue"
        ],
        "title": "CatalogueLookupOut"
      },
      "CatalogueMetadata": {
        "properties": {
          "id": {
            "type": "integer",
            "title": "Id"
          },
          "version": {
            "type": "string",
            "title": "Version",
            "description": "Scoutee's versioned catalogue snapshot identifier."
          },
          "nomenclature_version": {
            "type": "string",
            "title": "Nomenclature Version",
            "description": "Official nomenclature edition, such as CPV 2008."
          },
          "sha256": {
            "type": "string",
            "title": "Sha256",
            "description": "SHA-256 digest of the imported catalogue snapshot."
          },
          "source": {
            "type": "string",
            "title": "Source",
            "description": "Official source URL recorded for this catalogue snapshot."
          }
        },
        "type": "object",
        "required": [
          "id",
          "version",
          "nomenclature_version",
          "sha256",
          "source"
        ],
        "title": "CatalogueMetadata"
      },
      "ClassificationCodeOut": {
        "properties": {
          "code": {
            "type": "string",
            "title": "Code",
            "description": "Eight-digit CPV code accepted by the tender search's cpv parameter."
          },
          "display_code": {
            "type": "string",
            "title": "Display Code",
            "description": "CPV code including its official check digit."
          },
          "label": {
            "type": "string",
            "title": "Label",
            "description": "Catalogue label in the requested language, with English fallback."
          },
          "parent": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent",
            "description": "Parent code in the official hierarchy, or null at the root."
          },
          "retired": {
            "type": "boolean",
            "title": "Retired",
            "description": "Whether this code has been retired in this catalogue snapshot."
          },
          "replaced_by": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Replaced By",
            "description": "Replacement codes recorded in the catalogue, if any."
          }
        },
        "type": "object",
        "required": [
          "code",
          "display_code",
          "label",
          "parent",
          "retired",
          "replaced_by"
        ],
        "title": "ClassificationCodeOut"
      },
      "Plans": {
        "properties": {
          "plans": {
            "additionalProperties": {
              "$ref": "#/components/schemas/PlanLimits"
            },
            "type": "object",
            "title": "Plans"
          }
        },
        "type": "object",
        "required": [
          "plans"
        ],
        "title": "Plans"
      },
      "PlanLimits": {
        "properties": {
          "per_hour": {
            "type": "integer",
            "title": "Per Hour"
          },
          "burst_per_minute": {
            "type": "integer",
            "title": "Burst Per Minute"
          },
          "max_page_size": {
            "type": "integer",
            "title": "Max Page Size"
          },
          "max_page": {
            "type": "integer",
            "title": "Max Page"
          },
          "analyses_per_month": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Analyses Per Month"
          },
          "included_users": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Included Users"
          },
          "email_alerts": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EmailAlertLimits"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "per_hour",
          "burst_per_minute",
          "max_page_size",
          "max_page"
        ],
        "title": "PlanLimits",
        "description": "What one plan may do. The four search limits come from `scoutee.api.ratelimit.QUOTAS`, the two\nentitlements from `scoutee.entitlements`; the latter are null on the two rows that are not plans at\nall (`anonymous` and `visitor_search`, the limits of a signed-out visitor)."
      },
      "EmailAlertLimits": {
        "properties": {
          "active_searches": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Active Searches"
          },
          "results_per_search": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Results Per Search"
          },
          "email_preview": {
            "type": "integer",
            "title": "Email Preview"
          },
          "frequency": {
            "type": "string",
            "title": "Frequency"
          },
          "new_matches_only": {
            "type": "boolean",
            "title": "New Matches Only"
          }
        },
        "type": "object",
        "required": [
          "active_searches",
          "results_per_search",
          "email_preview",
          "frequency",
          "new_matches_only"
        ],
        "title": "EmailAlertLimits"
      }
    },
    "securitySchemes": {
      "WorkspaceKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key"
      },
      "OAuthToken": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  }
}
