{
  "openapi": "3.1.1",
  "info": {
    "title": "Tendersight API",
    "description": "Public procurement data from Tendersight: notices, their documents, the bids on them and the organizations\nbehind them, across every source Tendersight follows.\n\n## Quickstart\n\n1. In the [Tendersight app](https://app.tendersight.ai), open **Team settings › API keys** and create an API\n   key. Copy its secret: it is shown once.\n2. Search notices:\n\n```bash\ncurl https://api.tendersight.ai/v1/notices/search \\\n  -H \"Authorization: Bearer $TENDERSIGHT_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"filters\": {\"searchText\": \"servicii de curatenie\", \"contractTypes\": [\"services\"]}, \"pageSize\": 10}'\n```\n\n3. Read one of the notices it returned:\n\n```bash\ncurl https://api.tendersight.ai/v1/notices/not_01knmr7zabb90erdeq3z02vqhx \\\n  -H \"Authorization: Bearer $TENDERSIGHT_API_KEY\"\n```\n\n## Authentication\n\nSend an API key on every call: `Authorization: Bearer tsk_live_…`. An API key belongs to a Team and holds\none or more Scopes; each route needs the Scope shown on it:\n\n| Scope | Grants |\n|---|---|\n| `notices:read` | Searching and reading notices |\n| `documents:read` | Listing and downloading notice documents |\n| `awards:read` | Reading bids and winners |\n| `organizations:read` | Searching buyers and reading organizations |\n\nReading filter values needs no particular Scope. A revoked API key stops working at once.\n\n## Errors\n\nErrors are [RFC 7807](https://www.rfc-editor.org/rfc/rfc7807) problems (`application/problem+json`) with a\n`title` and a `detail` you can show to a person.\n\n| Status | Meaning |\n|---|---|\n| 400 | The request is not valid; `errors` names each member at fault. |\n| 401 | The API key is missing, unknown or revoked. |\n| 402 | The Team has no Credits left for API calls. |\n| 403 | The API key does not have the route's Scope. |\n| 404 | Nothing exists under this key. |\n| 429 | Too many calls; wait `Retry-After` seconds. |\n| 502, 504 | A data source failed or did not answer in time. Retry later. |\n\n## Credits\n\nCalls are paid in Credits from the Team's balance. Only a successful call is charged; an error costs\nnothing. Every response carries `X-Credits-Charged` with what the call cost.\n\n| Operation | Route | Credits |\n|---|---|---|\n| SearchNotices | `POST /v1/notices/search` | 2 |\n| GetNotice | `GET /v1/notices/{noticeKey}` | 1 |\n| ListNoticeDocuments | `GET /v1/notices/{noticeKey}/documents` | 1 |\n| DownloadNoticeDocument | `GET /v1/notices/{noticeKey}/documents/{documentId}` | 5 |\n| ListNoticeBids | `GET /v1/notices/{noticeKey}/bids` | 5 |\n| GetOrganization | `GET /v1/organizations/{organizationKey}` | 1 |\n| SearchOrganizations | `GET /v1/organizations?fiscalId=&limit=` | 1 |\n| SearchBuyers | `GET /v1/buyers?query=&limit=` | 1 |\n| GetFilterMetadata | `GET /v1/meta/filters` | 0 |\n\n## Rate limits\n\nEach API key may make 10 calls per\nsecond and 100,000 calls per UTC day.\n`X-RateLimit-Limit` and `X-RateLimit-Remaining` describe whichever of the two windows is closer to running\nout. Past a limit, calls are answered with 429 and a `Retry-After` header in seconds.\n\n## Pagination\n\nNotice search pages with a cursor: send `pageSize` (1 to 100, default 20), then pass each page's\n`continuationToken` back to get the next page, until it is `null`. `totalCount` says how many notices\nmatch. Buyer search returns the best `limit` matches (1 to 25, default 10), and the organization lookup by\nfiscal identifier up to `limit` organizations (1 to 100, default 20).\n\n## MCP\n\nAI agents can use the same data through the Model Context Protocol at `https://api.tendersight.ai/mcp`\n(Streamable HTTP), with the same API key, Scopes and Credits. Tools: `search_notices`, `get_notice`,\n`list_notice_documents`, `list_notice_bids`, `search_buyers`, `get_organization`, `search_organizations`.",
    "version": "0.1.1"
  },
  "servers": [
    {
      "url": "https://api.tendersight.ai"
    }
  ],
  "paths": {
    "/v1/notices/search": {
      "post": {
        "tags": [
          "Notices"
        ],
        "summary": "Search notices",
        "description": "Searches public procurement notices. Every filter is optional. Results come in pages: pass the `continuationToken` of a page to get the next one, until it is `null`.\n\n**Scope:** `notices:read` · **Credits:** 2 per successful call.",
        "operationId": "SearchNotices",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoticeSearch"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Credits-Charged": {
                "description": "The Credits this call cost.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "The limit of the rate limit window closest to running out.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The calls left in that window before a 429.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoticeSearchPage"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpValidationProblemDetails"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-credits": 2,
        "x-scope": "notices:read"
      }
    },
    "/v1/notices/{noticeKey}": {
      "get": {
        "tags": [
          "Notices"
        ],
        "summary": "Get a notice",
        "description": "Reads one notice by its key.\n\n**Scope:** `notices:read` · **Credits:** 1 per successful call.",
        "operationId": "GetNotice",
        "parameters": [
          {
            "name": "noticeKey",
            "in": "path",
            "description": "The notice key, e.g. `not_01knmr7zabb90erdeq3z02vqhx`.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Credits-Charged": {
                "description": "The Credits this call cost.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "The limit of the rate limit window closest to running out.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The calls left in that window before a 429.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Notice"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-credits": 1,
        "x-scope": "notices:read"
      }
    },
    "/v1/notices/{noticeKey}/documents": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "List a notice's documents",
        "description": "Lists the documents published with a notice. Download one with `GET /v1/notices/{noticeKey}/documents/{documentId}`.\n\n**Scope:** `documents:read` · **Credits:** 1 per successful call.",
        "operationId": "ListNoticeDocuments",
        "parameters": [
          {
            "name": "noticeKey",
            "in": "path",
            "description": "The notice key, e.g. `not_01knmr7zabb90erdeq3z02vqhx`.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Credits-Charged": {
                "description": "The Credits this call cost.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "The limit of the rate limit window closest to running out.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The calls left in that window before a 429.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoticeDocumentList"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-credits": 1,
        "x-scope": "documents:read"
      }
    },
    "/v1/notices/{noticeKey}/documents/{documentId}": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Download a notice document",
        "description": "Streams the file as an attachment with its media type. The Credits are charged once the file starts streaming.\n\n**Scope:** `documents:read` · **Credits:** 5 per successful call.",
        "operationId": "DownloadNoticeDocument",
        "parameters": [
          {
            "name": "noticeKey",
            "in": "path",
            "description": "The notice key, e.g. `not_01knmr7zabb90erdeq3z02vqhx`.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "The document id, from the notice's document list.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Credits-Charged": {
                "description": "The Credits this call cost.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "The limit of the rate limit window closest to running out.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The calls left in that window before a 429.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-credits": 5,
        "x-scope": "documents:read"
      }
    },
    "/v1/notices/{noticeKey}/bids": {
      "get": {
        "tags": [
          "Bids"
        ],
        "summary": "List the bids on a notice",
        "description": "Lists the bids published for a notice and each of its lots: the bidder, whether it won, the offered value and the organizations behind it.\n\n**Scope:** `awards:read` · **Credits:** 5 per successful call.",
        "operationId": "ListNoticeBids",
        "parameters": [
          {
            "name": "noticeKey",
            "in": "path",
            "description": "The notice key, e.g. `not_01knmr7zabb90erdeq3z02vqhx`.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Credits-Charged": {
                "description": "The Credits this call cost.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "The limit of the rate limit window closest to running out.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The calls left in that window before a 429.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoticeBids"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-credits": 5,
        "x-scope": "awards:read"
      }
    },
    "/v1/organizations": {
      "get": {
        "tags": [
          "Organizations"
        ],
        "summary": "Find organizations by fiscal identifier",
        "description": "Looks organizations up by fiscal identifier, in any common formatting: spaces, dots and dashes are ignored, and a two-letter country prefix is dropped when the identifier is registered without it (`RO4305857` finds what `4305857` finds). To find an organization by name, search buyers first.\n\n**Scope:** `organizations:read` · **Credits:** 1 per successful call.",
        "operationId": "SearchOrganizations",
        "parameters": [
          {
            "name": "fiscalId",
            "in": "query",
            "description": "The fiscal identifier, e.g. `RO4305857` or `4305857`. Required.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "How many organizations to return, 1 to 100. Default 20.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Credits-Charged": {
                "description": "The Credits this call cost.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "The limit of the rate limit window closest to running out.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The calls left in that window before a 429.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrganizationSearchPage"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-credits": 1,
        "x-scope": "organizations:read"
      }
    },
    "/v1/organizations/{organizationKey}": {
      "get": {
        "tags": [
          "Organizations"
        ],
        "summary": "Get an organization",
        "description": "Reads one contracting authority or economic operator by its key.\n\n**Scope:** `organizations:read` · **Credits:** 1 per successful call.",
        "operationId": "GetOrganization",
        "parameters": [
          {
            "name": "organizationKey",
            "in": "path",
            "description": "The organization key, e.g. `org_01knmr7zc4e8x1d9v5p3t2wq6m`.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Credits-Charged": {
                "description": "The Credits this call cost.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "The limit of the rate limit window closest to running out.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The calls left in that window before a 429.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Organization"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-credits": 1,
        "x-scope": "organizations:read"
      }
    },
    "/v1/buyers": {
      "get": {
        "tags": [
          "Buyers"
        ],
        "summary": "Search buyers",
        "description": "Finds buying organizations (contracting authorities) that published notices, by any part of their name or by fiscal identifier, best match first. To get the full organization, pass a buyer's `fiscalId` to `GET /v1/organizations?fiscalId=`; to find its notices, use the notice search's `buyer.fiscalIds` filter.\n\n**Scope:** `organizations:read` · **Credits:** 1 per successful call.",
        "operationId": "SearchBuyers",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Part of a name or a fiscal identifier in any common formatting, 2 to 100 characters, e.g. `primaria cluj`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "How many buyers to return, 1 to 25. Default 10.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Credits-Charged": {
                "description": "The Credits this call cost.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "The limit of the rate limit window closest to running out.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The calls left in that window before a 429.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BuyerSearchPage"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-credits": 1,
        "x-scope": "organizations:read"
      }
    },
    "/v1/meta/filters": {
      "get": {
        "tags": [
          "Meta"
        ],
        "summary": "Get filter values",
        "description": "Lists the values notice filters accept, with how many notices carry each.\n\n**Scope:** any API key · **Credits:** 0 per successful call.",
        "operationId": "GetFilterMetadata",
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Credits-Charged": {
                "description": "The Credits this call cost.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "The limit of the rate limit window closest to running out.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "The calls left in that window before a 429.",
                "schema": {
                  "type": "integer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FilterMetadata"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-credits": 0
      }
    }
  },
  "components": {
    "schemas": {
      "AwardCriteriaFilter": {
        "required": [
          "hasAwardCriteria",
          "freeText"
        ],
        "type": "object",
        "properties": {
          "hasAwardCriteria": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "`true` keeps notices that state award criteria, `false` those that do not."
          },
          "freeText": {
            "type": [
              "null",
              "string"
            ],
            "description": "Free text over the criteria names, e.g. `cel mai mic pret`."
          }
        },
        "additionalProperties": false,
        "description": "Filters on award criteria."
      },
      "Bid": {
        "required": [
          "key",
          "name",
          "isWinner",
          "offerValue",
          "members"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "description": "The bidder's name as the award publishes it."
          },
          "isWinner": {
            "type": "boolean",
            "description": "Whether this bid won."
          },
          "offerValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "The offered value, when published.",
                "$ref": "#/components/schemas/MonetaryAmount"
              }
            ]
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BidMember"
            },
            "description": "The organizations behind the bid, e.g. the members of a consortium."
          }
        },
        "description": "One offer submitted in a procedure, by one bidder or a group."
      },
      "BidMember": {
        "required": [
          "organizationKey",
          "role"
        ],
        "type": "object",
        "properties": {
          "organizationKey": {
            "type": "string",
            "description": "The organization key. Pass it to `GET /v1/organizations/{organizationKey}`."
          },
          "role": {
            "type": [
              "null",
              "string"
            ],
            "description": "Its role in the bid, e.g. leader or subcontractor, when published."
          }
        },
        "description": "An organization taking part in a bid."
      },
      "Buyer": {
        "required": [
          "fiscalId",
          "name",
          "country",
          "noticeCount"
        ],
        "type": "object",
        "properties": {
          "fiscalId": {
            "type": "string",
            "description": "The buyer's fiscal identifier, as the notices give it, e.g. `4305857`. Pass it to `GET /v1/organizations?fiscalId=` or to the notice search's `buyer.fiscalIds` filter."
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "country": {
            "type": [
              "null",
              "string"
            ],
            "description": "ISO 3166-1 alpha-3 country code of the headquarters, e.g. `ROU`."
          },
          "noticeCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "How many notices the buyer has published.",
            "format": "int64"
          }
        },
        "description": "An organization that published procurement notices as a buyer (contracting authority). Get the full organization with `GET /v1/organizations?fiscalId=`."
      },
      "BuyerFilter": {
        "required": [
          "freeText",
          "fiscalIds",
          "countries",
          "regions",
          "cities"
        ],
        "type": "object",
        "properties": {
          "freeText": {
            "type": [
              "null",
              "string"
            ],
            "description": "Free text over the authority's name, fiscal identifier and headquarters."
          },
          "fiscalIds": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Fiscal identifiers as registered, e.g. `RO4305857`."
          },
          "countries": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Headquarters countries, ISO 3166-1 alpha-3, e.g. `ROU`."
          },
          "regions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Headquarters regions, ISO 3166-2, e.g. `RO-CJ`."
          },
          "cities": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Headquarters city names."
          }
        },
        "additionalProperties": false,
        "description": "Filters on the contracting authority. Members combine with AND."
      },
      "BuyerSearchPage": {
        "examples": [
          {
            "items": [
              {
                "fiscalId": "4305857",
                "name": "Municipiul Cluj-Napoca",
                "country": "ROU",
                "noticeCount": 1966
              },
              {
                "fiscalId": "4288284",
                "name": "Consiliul Judetean Cluj",
                "country": "ROU",
                "noticeCount": 612
              }
            ]
          }
        ],
        "required": [
          "items"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Buyer"
            }
          }
        },
        "description": "Buying organizations matching a search, best match first."
      },
      "DateRange": {
        "required": [
          "from",
          "to"
        ],
        "type": "object",
        "properties": {
          "from": {
            "type": [
              "null",
              "string"
            ],
            "description": "Earliest moment, included. ISO 8601.",
            "format": "date-time"
          },
          "to": {
            "type": [
              "null",
              "string"
            ],
            "description": "Latest moment, included. ISO 8601; send the end of the day to include that whole day.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "A date range; omit a bound to leave that side open."
      },
      "ExecutionLocationFilter": {
        "required": [
          "freeText",
          "countries",
          "regions",
          "cities"
        ],
        "type": "object",
        "properties": {
          "freeText": {
            "type": [
              "null",
              "string"
            ],
            "description": "Free text over execution locations and the buyer's headquarters."
          },
          "countries": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Execution countries, ISO 3166-1 alpha-3."
          },
          "regions": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Execution regions, ISO 3166-2."
          },
          "cities": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Execution city names."
          }
        },
        "additionalProperties": false,
        "description": "Filters on where the contract is executed. Members combine with AND."
      },
      "FilterMetadata": {
        "examples": [
          {
            "contractTypes": [
              {
                "key": "services",
                "count": 412873
              },
              {
                "key": "supplies",
                "count": 389120
              },
              {
                "key": "works",
                "count": 128455
              }
            ]
          }
        ],
        "required": [
          "contractTypes"
        ],
        "type": "object",
        "properties": {
          "contractTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterValueCount"
            }
          }
        },
        "description": "The values notice filters accept, with how many notices carry each."
      },
      "FilterValueCount": {
        "required": [
          "key",
          "count"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          }
        },
        "description": "A filter value and how many notices carry it."
      },
      "HttpValidationProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "detail": {
            "type": [
              "null",
              "string"
            ]
          },
          "instance": {
            "type": [
              "null",
              "string"
            ]
          },
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        }
      },
      "LotBids": {
        "required": [
          "lotKey",
          "bids"
        ],
        "type": "object",
        "properties": {
          "lotKey": {
            "type": "string",
            "description": "The lot key, e.g. `lot_01knmr7zf3h6y2c8w4n1q9tb5d`."
          },
          "bids": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Bid"
            }
          }
        },
        "description": "The bids on one lot."
      },
      "MonetaryAmount": {
        "required": [
          "amount",
          "currency"
        ],
        "type": "object",
        "properties": {
          "amount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "string"
            ],
            "format": "double"
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency code, e.g. `RON`."
          }
        },
        "description": "An amount of money."
      },
      "Notice": {
        "examples": [
          {
            "key": "not_01knmr7zabb90erdeq3z02vqhx",
            "title": "Servicii de curatenie pentru sediile administrative ale municipiului",
            "publicationDate": "2026-10-28T08:15:00+00:00",
            "estimatedValue": {
              "minAmount": null,
              "maxAmount": 1250000,
              "currency": "RON",
              "minAmountEur": null,
              "maxAmountEur": 251200
            },
            "buyers": [
              {
                "organizationKey": "org_01knmr7zc4e8x1d9v5p3t2wq6m",
                "name": "Municipiul Cluj-Napoca",
                "country": "ROU",
                "fiscalId": "RO4305857"
              }
            ],
            "milestones": [
              {
                "type": "deadline",
                "name": "Termen limita depunere oferte",
                "date": "2026-11-27T10:00:00+00:00"
              }
            ],
            "awardCriteria": [
              {
                "name": "Pretul ofertei",
                "weight": 100,
                "isPriceCriterion": true
              }
            ],
            "publicationReference": "CN1063571/2025",
            "sourceUri": "https://www.e-licitatie.ro/pub/notices/c-notice/v2/view/100211457",
            "sourceSystem": "urn:tendersight:notices:source-systems:ro:seap",
            "noticeType": "urn:tendersight:notices:types:ro-seap:cn",
            "contractType": "services",
            "primaryCpv": {
              "code": "90910000-9",
              "description": "Servicii de curatenie"
            },
            "procedureStatus": "urn:tendersight:notices:procedure-statuses:ro-seap:ongoing",
            "biddability": "biddable",
            "nextDeadlineAt": "2026-11-27T10:00:00+00:00",
            "lotCount": 1
          }
        ],
        "required": [
          "key",
          "title",
          "publicationDate",
          "estimatedValue",
          "buyers",
          "milestones",
          "awardCriteria",
          "publicationReference",
          "sourceUri",
          "sourceSystem",
          "noticeType",
          "contractType",
          "primaryCpv",
          "procedureStatus",
          "biddability",
          "nextDeadlineAt",
          "lotCount"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The notice key, e.g. `not_01knmr7zabb90erdeq3z02vqhx`. Pass it to the other notice routes."
          },
          "title": {
            "type": [
              "null",
              "string"
            ],
            "description": "The notice title, in the language it was published in."
          },
          "publicationDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "When the notice was published (UTC).",
            "format": "date-time"
          },
          "estimatedValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "The estimated contract value, when the notice states one.",
                "$ref": "#/components/schemas/NoticeValue"
              }
            ]
          },
          "buyers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoticeBuyer"
            },
            "description": "The contracting authorities."
          },
          "milestones": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoticeMilestone"
            },
            "description": "Deadlines and other dated steps of the procedure."
          },
          "awardCriteria": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoticeAwardCriterion"
            },
            "description": "The criteria offers are evaluated on."
          },
          "publicationReference": {
            "type": [
              "null",
              "string"
            ],
            "description": "The identifier the source system publishes the notice under, e.g. `CN1063571/2025`."
          },
          "sourceUri": {
            "type": [
              "null",
              "string"
            ],
            "description": "The notice on its source system."
          },
          "sourceSystem": {
            "type": [
              "null",
              "string"
            ],
            "description": "The source system, as a URN key, e.g. `urn:tendersight:notices:source-systems:ro:seap`."
          },
          "noticeType": {
            "type": [
              "null",
              "string"
            ],
            "description": "The notice type, as a URN key scoped to the source system."
          },
          "contractType": {
            "type": [
              "null",
              "string"
            ],
            "description": "`works`, `supplies`, `services`, `other` or `unspecified`."
          },
          "primaryCpv": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "The main CPV classification, when the notice designates one.",
                "$ref": "#/components/schemas/NoticeCpv"
              }
            ]
          },
          "procedureStatus": {
            "type": [
              "null",
              "string"
            ],
            "description": "The procedure status, as a URN key scoped to the source system."
          },
          "biddability": {
            "description": "Where the procedure stands for a bidder; `biddable` means it accepts offers now.",
            "$ref": "#/components/schemas/NoticeBiddability"
          },
          "nextDeadlineAt": {
            "type": [
              "null",
              "string"
            ],
            "description": "The nearest future deadline, if any (UTC).",
            "format": "date-time"
          },
          "lotCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "How many lots the notice has.",
            "format": "int32"
          }
        },
        "description": "A public procurement notice."
      },
      "NoticeAwardCriterion": {
        "required": [
          "name",
          "weight",
          "isPriceCriterion"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "weight": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "The weight of the criterion, usually in percent.",
            "format": "double"
          },
          "isPriceCriterion": {
            "type": "boolean",
            "description": "Whether the criterion is the price."
          }
        },
        "description": "A criterion offers are evaluated on."
      },
      "NoticeBiddability": {
        "enum": [
          "biddable",
          "upcoming",
          "in_progress",
          "closed",
          "non_biddable",
          "indeterminate"
        ],
        "description": "Where the procedure stands for a bidder: `biddable` (offers are accepted now), `upcoming` (announced, not open yet), `in_progress` (offers closed, evaluation or award under way), `closed` (finished or past its deadline), `non_biddable` (not a procedure one bids on, e.g. a direct award), or `indeterminate` when it cannot be told."
      },
      "NoticeBids": {
        "examples": [
          {
            "noticeKey": "not_01knmr7zabb90erdeq3z02vqhx",
            "bids": [ ],
            "lots": [
              {
                "lotKey": "lot_01knmr7zf3h6y2c8w4n1q9tb5d",
                "bids": [
                  {
                    "key": "par_01knmr9b6d2f4h8j1k3m5n7p9r",
                    "name": "Asocierea Clean Services SRL - Facility Pro SRL",
                    "isWinner": true,
                    "offerValue": {
                      "amount": 1180000,
                      "currency": "RON"
                    },
                    "members": [
                      {
                        "organizationKey": "org_01knmr9c2e4g6j8l0n2p4r6t8v",
                        "role": "leader"
                      },
                      {
                        "organizationKey": "org_01knmr9c7w9y1a3c5e7g9j1l3n",
                        "role": "member"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ],
        "required": [
          "noticeKey",
          "bids",
          "lots"
        ],
        "type": "object",
        "properties": {
          "noticeKey": {
            "type": "string"
          },
          "bids": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Bid"
            },
            "description": "Bids on the procedure as a whole."
          },
          "lots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LotBids"
            },
            "description": "Bids per lot, for procedures split into lots."
          }
        },
        "description": "The bids on a notice: those on the whole procedure and those on each lot."
      },
      "NoticeBuyer": {
        "required": [
          "organizationKey",
          "name",
          "country",
          "fiscalId"
        ],
        "type": "object",
        "properties": {
          "organizationKey": {
            "type": [
              "null",
              "string"
            ],
            "description": "The organization key, e.g. `org_01knmr7zc4e8x1d9v5p3t2wq6m`. Pass it to `GET /v1/organizations/{organizationKey}`."
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "country": {
            "type": [
              "null",
              "string"
            ],
            "description": "ISO 3166-1 alpha-3 country code of the headquarters, e.g. `ROU`."
          },
          "fiscalId": {
            "type": [
              "null",
              "string"
            ],
            "description": "The fiscal identifier as registered, e.g. `RO4305857`."
          }
        },
        "description": "A contracting authority of a notice."
      },
      "NoticeCpv": {
        "required": [
          "code",
          "description"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": [
              "null",
              "string"
            ],
            "description": "The CPV code, e.g. `45233120-6`."
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "description": "A CPV (Common Procurement Vocabulary) classification."
      },
      "NoticeDocument": {
        "required": [
          "documentId",
          "name",
          "contentType",
          "sizeBytes",
          "sha256",
          "documentType",
          "locationPath"
        ],
        "type": "object",
        "properties": {
          "documentId": {
            "type": "string",
            "description": "The document id within the notice."
          },
          "name": {
            "type": "string",
            "description": "The file name."
          },
          "contentType": {
            "type": "string",
            "description": "The media type, e.g. `application/pdf`."
          },
          "sizeBytes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "sha256": {
            "type": "string",
            "description": "Lowercase hex SHA-256 of the file."
          },
          "documentType": {
            "type": [
              "null",
              "string"
            ],
            "description": "The document type the source system gives, when it gives one."
          },
          "locationPath": {
            "type": "string",
            "description": "The folder the document sits in within the notice, `/` for the top level."
          }
        },
        "description": "A document published with a notice. Download it from `GET /v1/notices/{noticeKey}/documents/{documentId}`."
      },
      "NoticeDocumentList": {
        "examples": [
          {
            "noticeKey": "not_01knmr7zabb90erdeq3z02vqhx",
            "status": "indexed",
            "indexedAt": "2026-10-28T09:02:00+00:00",
            "documents": [
              {
                "documentId": "doc_01knmr8a1x7m3c5v9b2n4q6w8e",
                "name": "Caiet de sarcini.pdf",
                "contentType": "application/pdf",
                "sizeBytes": 482113,
                "sha256": "9f2c4a6e8b0d1f3a5c7e9b1d3f5a7c9e1b3d5f7a9c1e3b5d7f9a1c3e5b7d9f1a",
                "documentType": "Caiet de sarcini",
                "locationPath": "/"
              }
            ]
          }
        ],
        "required": [
          "noticeKey",
          "status",
          "indexedAt",
          "documents"
        ],
        "type": "object",
        "properties": {
          "noticeKey": {
            "type": "string"
          },
          "status": {
            "description": "Whether the documents were collected.",
            "$ref": "#/components/schemas/NoticeDocumentsStatus"
          },
          "indexedAt": {
            "type": [
              "null",
              "string"
            ],
            "description": "When the documents were last collected (UTC).",
            "format": "date-time"
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NoticeDocument"
            }
          }
        },
        "description": "The documents of a notice."
      },
      "NoticeDocumentsStatus": {
        "enum": [
          "unknown",
          "indexed",
          "unsupported"
        ],
        "description": "Whether the notice's documents were collected: `indexed` (the list is complete), `unsupported` (the source does not let them be collected), or `unknown` (not determined yet)."
      },
      "NoticeMilestone": {
        "required": [
          "type",
          "name",
          "date"
        ],
        "type": "object",
        "properties": {
          "type": {
            "description": "What the milestone marks.",
            "$ref": "#/components/schemas/NoticeMilestoneType"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "date": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        },
        "description": "A dated step of the procedure, such as the submission deadline."
      },
      "NoticeMilestoneType": {
        "enum": [
          "deadline",
          "decision_date",
          "publication_date",
          "other"
        ],
        "description": "What the milestone marks: `deadline` (the offer submission deadline), `decision_date` (when the award decision is due), `publication_date`, or `other` when the source does not say."
      },
      "NoticeSearch": {
        "examples": [
          {
            "filters": {
              "searchText": "servicii de curatenie",
              "contractTypes": [
                "services"
              ],
              "buyer": {
                "countries": [
                  "ROU"
                ]
              },
              "deadline": {
                "from": "2026-11-07T00:00:00Z"
              },
              "estimatedValue": {
                "min": 50000
              }
            },
            "pageSize": 20
          }
        ],
        "required": [
          "filters",
          "pageSize",
          "continuationToken"
        ],
        "type": "object",
        "properties": {
          "filters": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "What to search for. Every member is optional; members combine with AND.",
                "$ref": "#/components/schemas/NoticeSearchFilters"
              }
            ]
          },
          "pageSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Notices per page, 1 to 100. Default 20.",
            "format": "int32"
          },
          "continuationToken": {
            "type": [
              "null",
              "string"
            ],
            "description": "The `continuationToken` of the previous page. Omit it for the first page."
          }
        },
        "additionalProperties": false,
        "description": "A notice search: filters and paging."
      },
      "NoticeSearchFilters": {
        "required": [
          "searchText",
          "noticeKeys",
          "publicationReference",
          "cpvCodes",
          "sourceSystems",
          "noticeTypes",
          "procedureStatuses",
          "contractTypes",
          "publicationDate",
          "deadline",
          "buyer",
          "executionLocation",
          "estimatedValue",
          "hasDocuments",
          "awardCriteria"
        ],
        "type": "object",
        "properties": {
          "searchText": {
            "type": [
              "null",
              "string"
            ],
            "description": "Free text matched across titles, descriptions, lots, document titles and identifiers. Results are sorted by relevance when it is set."
          },
          "noticeKeys": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Exact notice keys."
          },
          "publicationReference": {
            "type": [
              "null",
              "string"
            ],
            "description": "An exact publication identifier, e.g. `CN1063571/2025`."
          },
          "cpvCodes": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "CPV codes, 8 digits with an optional check digit, matched exactly, e.g. `45233120` or `90910000-9`."
          },
          "sourceSystems": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Source systems as URN keys, e.g. `urn:tendersight:notices:source-systems:ro:seap`."
          },
          "noticeTypes": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Notice types as URN keys."
          },
          "procedureStatuses": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Procedure statuses as URN keys."
          },
          "contractTypes": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Contract types: `works`, `supplies`, `services`, `other`, `unspecified`."
          },
          "publicationDate": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Publication date range, bounds included.",
                "$ref": "#/components/schemas/DateRange"
              }
            ]
          },
          "deadline": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Submission deadline range, bounds included. Notices without a known deadline never match.",
                "$ref": "#/components/schemas/DateRange"
              }
            ]
          },
          "buyer": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "The contracting authority and its headquarters.",
                "$ref": "#/components/schemas/BuyerFilter"
              }
            ]
          },
          "executionLocation": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Where the contract is executed, falling back to the buyer's headquarters.",
                "$ref": "#/components/schemas/ExecutionLocationFilter"
              }
            ]
          },
          "estimatedValue": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Estimated value range in EUR, bounds included. Notices without an estimate never match.",
                "$ref": "#/components/schemas/ValueRange"
              }
            ]
          },
          "hasDocuments": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "`true` keeps notices with documents, `false` those without."
          },
          "awardCriteria": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Whether, and how, the notice states award criteria.",
                "$ref": "#/components/schemas/AwardCriteriaFilter"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "Notice filters. Every member is optional; members combine with AND, values within a list with OR."
      },
      "NoticeSearchPage": {
        "examples": [
          {
            "items": [
              {
                "key": "not_01knmr7zabb90erdeq3z02vqhx",
                "title": "Servicii de curatenie pentru sediile administrative ale municipiului",
                "publicationDate": "2026-10-28T08:15:00+00:00",
                "estimatedValue": {
                  "minAmount": null,
                  "maxAmount": 1250000,
                  "currency": "RON",
                  "minAmountEur": null,
                  "maxAmountEur": 251200
                },
                "buyers": [
                  {
                    "organizationKey": "org_01knmr7zc4e8x1d9v5p3t2wq6m",
                    "name": "Municipiul Cluj-Napoca",
                    "country": "ROU",
                    "fiscalId": "RO4305857"
                  }
                ],
                "milestones": [
                  {
                    "type": "deadline",
                    "name": "Termen limita depunere oferte",
                    "date": "2026-11-27T10:00:00+00:00"
                  }
                ],
                "awardCriteria": [
                  {
                    "name": "Pretul ofertei",
                    "weight": 100,
                    "isPriceCriterion": true
                  }
                ],
                "publicationReference": "CN1063571/2025",
                "sourceUri": "https://www.e-licitatie.ro/pub/notices/c-notice/v2/view/100211457",
                "sourceSystem": "urn:tendersight:notices:source-systems:ro:seap",
                "noticeType": "urn:tendersight:notices:types:ro-seap:cn",
                "contractType": "services",
                "primaryCpv": {
                  "code": "90910000-9",
                  "description": "Servicii de curatenie"
                },
                "procedureStatus": "urn:tendersight:notices:procedure-statuses:ro-seap:ongoing",
                "biddability": "biddable",
                "nextDeadlineAt": "2026-11-27T10:00:00+00:00",
                "lotCount": 1
              }
            ],
            "continuationToken": "eyJzZWFyY2hBZnRlciI6WzEuMCwibm90XzAxa25tcjd6YWJiOTBlcmRlcTN6MDJ2cWh4Il19",
            "totalCount": 1284
          }
        ],
        "required": [
          "items",
          "continuationToken",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Notice"
            }
          },
          "continuationToken": {
            "type": [
              "null",
              "string"
            ],
            "description": "Pass it back as `continuationToken` to get the next page. `null` on the last page."
          },
          "totalCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "How many notices match in total, when known.",
            "format": "int64"
          }
        },
        "description": "One page of notice search results."
      },
      "NoticeValue": {
        "required": [
          "minAmount",
          "maxAmount",
          "currency",
          "minAmountEur",
          "maxAmountEur"
        ],
        "type": "object",
        "properties": {
          "minAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "The lowest estimate, in `currency`.",
            "format": "double"
          },
          "maxAmount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "The highest estimate, in `currency`.",
            "format": "double"
          },
          "currency": {
            "type": [
              "null",
              "string"
            ],
            "description": "ISO 4217 currency code of the amounts, e.g. `RON`."
          },
          "minAmountEur": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "The lowest estimate converted to EUR.",
            "format": "double"
          },
          "maxAmountEur": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "The highest estimate converted to EUR.",
            "format": "double"
          }
        },
        "description": "An estimated contract value, in the notice currency and converted to EUR."
      },
      "Organization": {
        "examples": [
          {
            "key": "org_01knmr7zc4e8x1d9v5p3t2wq6m",
            "name": "Municipiul Cluj-Napoca",
            "type": "government",
            "typeDescription": "Autoritate contractanta",
            "fiscalIdentifiers": [
              {
                "jurisdiction": "rou",
                "type": "vat",
                "code": "RO4305857"
              }
            ],
            "addresses": [
              {
                "countryCode": "ROU",
                "regionCode": "RO-CJ",
                "city": "Cluj-Napoca",
                "addressLines": [
                  "Str. Motilor nr. 1-3"
                ],
                "postalCode": "400001"
              }
            ],
            "contacts": [
              {
                "name": "Directia Achizitii Publice",
                "emailAddress": "achizitii@example.ro",
                "phoneNumber": "+40 264 000 000",
                "websiteUri": "https://example.ro"
              }
            ],
            "createdAt": "2025-03-11T09:30:00+00:00",
            "updatedAt": "2026-10-28T08:16:00+00:00"
          }
        ],
        "required": [
          "key",
          "name",
          "type",
          "typeDescription",
          "fiscalIdentifiers",
          "addresses",
          "contacts",
          "createdAt",
          "updatedAt"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The organization key, e.g. `org_01knmr7zc4e8x1d9v5p3t2wq6m`."
          },
          "name": {
            "type": "string"
          },
          "type": {
            "description": "The kind of organization.",
            "$ref": "#/components/schemas/OrganizationType"
          },
          "typeDescription": {
            "type": [
              "null",
              "string"
            ],
            "description": "A readable description of the kind of organization."
          },
          "fiscalIdentifiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrganizationFiscalIdentifier"
            }
          },
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrganizationAddress"
            }
          },
          "contacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrganizationContact"
            },
            "description": "Contact points as published in procurement notices."
          },
          "createdAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "updatedAt": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        },
        "description": "An organization: a contracting authority or an economic operator."
      },
      "OrganizationAddress": {
        "required": [
          "countryCode",
          "regionCode",
          "city",
          "addressLines",
          "postalCode"
        ],
        "type": "object",
        "properties": {
          "countryCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "regionCode": {
            "type": [
              "null",
              "string"
            ]
          },
          "city": {
            "type": [
              "null",
              "string"
            ]
          },
          "addressLines": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "postalCode": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "description": "An address of an organization."
      },
      "OrganizationContact": {
        "required": [
          "name",
          "emailAddress",
          "phoneNumber",
          "websiteUri"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "emailAddress": {
            "type": [
              "null",
              "string"
            ]
          },
          "phoneNumber": {
            "type": [
              "null",
              "string"
            ]
          },
          "websiteUri": {
            "type": [
              "null",
              "string"
            ]
          }
        },
        "description": "A contact point of an organization."
      },
      "OrganizationFiscalIdentifier": {
        "required": [
          "jurisdiction",
          "type",
          "code"
        ],
        "type": "object",
        "properties": {
          "jurisdiction": {
            "type": "string",
            "description": "The issuing country, lowercase ISO 3166-1 alpha-3, e.g. `rou`."
          },
          "type": {
            "type": "string",
            "description": "The kind of identifier, e.g. `vat` or `cui`."
          },
          "code": {
            "type": "string",
            "description": "The identifier, e.g. `RO4305857`."
          }
        },
        "description": "A fiscal identifier of an organization."
      },
      "OrganizationSearchPage": {
        "examples": [
          {
            "items": [
              {
                "key": "org_01knmr7zc4e8x1d9v5p3t2wq6m",
                "name": "Municipiul Cluj-Napoca",
                "type": "government",
                "typeDescription": "Autoritate contractanta",
                "fiscalIdentifiers": [
                  {
                    "jurisdiction": "rou",
                    "type": "vat",
                    "code": "RO4305857"
                  }
                ],
                "addresses": [
                  {
                    "countryCode": "ROU",
                    "regionCode": "RO-CJ",
                    "city": "Cluj-Napoca",
                    "addressLines": [
                      "Str. Motilor nr. 1-3"
                    ],
                    "postalCode": "400001"
                  }
                ],
                "contacts": [
                  {
                    "name": "Directia Achizitii Publice",
                    "emailAddress": "achizitii@example.ro",
                    "phoneNumber": "+40 264 000 000",
                    "websiteUri": "https://example.ro"
                  }
                ],
                "createdAt": "2025-03-11T09:30:00+00:00",
                "updatedAt": "2026-10-28T08:16:00+00:00"
              }
            ],
            "totalCount": 1
          }
        ],
        "required": [
          "items",
          "totalCount"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Organization"
            }
          },
          "totalCount": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "How many organizations match in total.",
            "format": "int32"
          }
        },
        "description": "Organizations matching a search, best match first."
      },
      "OrganizationType": {
        "enum": [
          "government",
          "private",
          "unknown"
        ],
        "description": "`government` (a public body, usually a contracting authority), `private` (a company or other private organization), or `unknown`."
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "type": [
              "null",
              "string"
            ]
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "detail": {
            "type": [
              "null",
              "string"
            ]
          },
          "instance": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ValueRange": {
        "required": [
          "min",
          "max"
        ],
        "type": "object",
        "properties": {
          "min": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Keeps notices whose lowest estimate is at least this.",
            "format": "double"
          },
          "max": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Keeps notices whose highest estimate is at most this.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "A value range in EUR."
      }
    },
    "securitySchemes": {
      "ApiKey": {
        "type": "http",
        "description": "An API key of your Team, created in the Tendersight app under Team settings › API keys.",
        "scheme": "bearer",
        "bearerFormat": "tsk_live_…"
      }
    }
  },
  "tags": [
    {
      "name": "Notices"
    },
    {
      "name": "Documents"
    },
    {
      "name": "Bids"
    },
    {
      "name": "Organizations"
    },
    {
      "name": "Buyers"
    },
    {
      "name": "Meta"
    }
  ]
}