{
  "openapi": "3.1.0",
  "info": {
    "title": "SparkGuild Public Read-Only Market API",
    "version": "1.2.0",
    "description": "Read-only, unauthenticated SparkGuild public resource directory covering software and automation, design and video, research and data, local assistance, and shopping and sourcing. REQUEST/OFFER/GUIDE are external source references, not claimable tasks. Records provide bilingual human summary links and distinct original-source/API URLs. First-party published tasks remain separate. No claiming, agent identity, escrow, payments or MCP/A2A protocol support is implied. UK public notice data: Cabinet Office, via Contracts Finder and Find a Tender. Contains public sector information licensed under the Open Government Licence v3.0. Licence: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/."
  },
  "servers": [
    {
      "url": "https://sparkguild.si"
    }
  ],
  "paths": {
    "/api/v1/market": {
      "get": {
        "operationId": "listMarketInformation",
        "summary": "List source-linked information and separately show published native tasks",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "ALL",
                "REQUEST",
                "OFFER",
                "GUIDE"
              ],
              "default": "ALL"
            },
            "description": "REQUEST is an external request for work or practical help; OFFER is a self-described external service; GUIDE is an external reference. These values do not establish current availability or payment."
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 100
            },
            "description": "All whitespace-separated query words must occur across bilingual title/summary, destination, source, topic, buyer or qualification notes. Case-insensitive NFKC normalization; keyword filtering, not semantic search."
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 100000,
              "default": 0
            }
          },
          {
            "name": "topic",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "software-automation",
                "design-video",
                "research-data",
                "local-assistance",
                "proxy-shopping-sourcing",
                "engineering-consulting"
              ],
              "default": "all"
            },
            "description": "Reviewed editorial topic; all keeps every topic."
          },
          {
            "name": "scope",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "project",
                "public_tender"
              ],
              "default": "all"
            },
            "description": "public_tender selects labelled institutional procurement. project selects other sources, including legacy records whose procurement type was not labelled; it does not prove an individual buyer."
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "future_deadline",
                "past_deadline",
                "unknown_deadline",
                "closed",
                "quoting_closed"
              ],
              "default": "all",
              "description": "Discovery status: explicit source closure and quoting closure take priority over recorded application deadline. Unknown never proves availability."
            },
            "description": "Recorded deadline only; future_deadline is not proof of availability or eligibility. Without a time and timezone, date D is unknown_deadline from D 00:00 UTC+14 inclusive through D+1 00:00 UTC-12 exclusive; before that interval it is future_deadline and at/after its end it is past_deadline. Missing/invalid deadlines are unknown_deadline."
          }
        ],
        "responses": {
          "200": {
            "description": "Typed MarketResponse with paginated ExternalRecord items, counts, nativeTasks and provenance links.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MarketResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid filter",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        },
        "description": "Free read-only bilingual source catalog. Combine q, type, topic, scope and status; paginate with limit/offset and follow next. q matches all whitespace-separated words, case-insensitively after Unicode NFKC normalization, across titles, summaries, locations, platform, topic, buyer and qualification notes. External references always have claimableOnSparkGuild=false. Native public tasks remain separate. A future recorded deadline does not confirm current availability or eligibility."
      }
    },
    "/api/v1/market/{id}": {
      "get": {
        "operationId": "getMarketReference",
        "summary": "Read a public reference by stable ID",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Typed SourceDetailResponse for one original-source reference (not a claimable task).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SourceDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Unknown ID",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/capabilities": {
      "get": {
        "operationId": "getReadOnlyCapabilities",
        "summary": "Read supported features and unavailable actions",
        "responses": {
          "200": {
            "description": "Read-only current capabilities",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CapabilitiesResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tasks": {
      "get": {
        "operationId": "getPublishedNativeTasks",
        "summary": "Existing consented first-party public tasks only; may be empty",
        "responses": {
          "200": {
            "description": "First-party tasks, not external source posts",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NativeTaskFeedResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "BilingualText": {
        "type": "object",
        "required": [
          "en",
          "zh"
        ],
        "additionalProperties": false,
        "properties": {
          "en": {
            "type": "string"
          },
          "zh": {
            "type": "string"
          }
        }
      },
      "ExternalRecord": {
        "type": "object",
        "description": "An independently summarised reference to an original third-party public page. The human URLs point to SparkGuild summaries; source.url points to the original publisher and detailUrl returns this API record. Never a claimable SparkGuild task or payout.",
        "required": [
          "id",
          "recordKind",
          "listingType",
          "title",
          "summary",
          "originalPublishedAt",
          "destination",
          "source",
          "availability",
          "sourceOwnerConsentedToSparkGuildMatching",
          "claimableOnSparkGuild",
          "payoutVerified",
          "officialSparkGuildTask",
          "detailUrl",
          "checkedAt",
          "dateBasis",
          "topicSlug",
          "humanUrl",
          "humanUrls"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]{1,99}$"
          },
          "recordKind": {
            "type": "string",
            "const": "external_source_reference"
          },
          "listingType": {
            "type": "string",
            "enum": [
              "REQUEST",
              "OFFER",
              "GUIDE"
            ]
          },
          "title": {
            "$ref": "#/components/schemas/BilingualText"
          },
          "summary": {
            "$ref": "#/components/schemas/BilingualText"
          },
          "originalPublishedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "Legacy field holding the recorded source date, or null when unknown. Inspect dateBasis: older references may record a post date, document issue date, event start or application window instead of a confirmed web publication date. Never substitute checkedAt for an original source date."
          },
          "checkedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "Date the public source was reviewed. This is not the original publication date and does not establish current availability or verified payment."
          },
          "dateBasis": {
            "type": [
              "string",
              "null"
            ],
            "description": "Recorded provenance for originalPublishedAt or the displayed source date. Values may distinguish original post dates, document issue dates, event starts, application windows or checked_at. A null basis does not prove an exact publication timestamp; checked_at is a review date, not a publication date."
          },
          "destination": {
            "type": "string",
            "description": "Legacy location field: the source-stated country, service coverage, task location or destination. It is not independently verified and is not limited to parcel destinations."
          },
          "source": {
            "$ref": "#/components/schemas/OriginalSourceLink"
          },
          "availability": {
            "type": "string",
            "enum": [
              "unknown",
              "not_applicable",
              "closed"
            ]
          },
          "sourceOwnerConsentedToSparkGuildMatching": {
            "type": "boolean",
            "const": false
          },
          "claimableOnSparkGuild": {
            "type": "boolean",
            "const": false
          },
          "payoutVerified": {
            "type": "boolean",
            "const": false
          },
          "officialSparkGuildTask": {
            "type": "boolean",
            "const": false
          },
          "detailUrl": {
            "type": "string",
            "format": "uri",
            "description": "Stable API JSON detail URL for this reference; not the original publisher or a human claim page."
          },
          "topicSlug": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 100,
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
            "description": "Reviewed editorial topic: software-automation, design-video, research-data, local-assistance, proxy-shopping-sourcing or engineering-consulting; null when missing. Routing metadata does not verify current availability or eligibility.",
            "examples": [
              "design-video",
              "research-data",
              null
            ]
          },
          "humanUrl": {
            "type": "string",
            "format": "uri",
            "description": "English SparkGuild summary URL with a stable source ID query. Uses /resources/{topicSlug}?source={id}#{id}, or /buying-requests?source={id}#source-{id} when topicSlug is null. The server redirects to the currently containing page; it is a reading link, not a task-claim or payment URL."
          },
          "humanUrls": {
            "$ref": "#/components/schemas/BilingualHumanLinks"
          },
          "opportunityKind": {
            "type": [
              "string",
              "null"
            ],
            "description": "Reviewed source category; institutional_procurement is distinct from public_tender. Null does not prove a small task."
          },
          "procurement": {
            "$ref": "#/components/schemas/ProcurementFacts"
          },
          "recordedDeadlineStatus": {
            "type": "string",
            "enum": [
              "future_deadline",
              "past_deadline",
              "unknown_deadline"
            ],
            "description": "Computed from application/quotation deadline, with legacy procurement fallback. Delivery dates are excluded. Not an open/closed status."
          },
          "deadline": {
            "type": [
              "object",
              "null"
            ],
            "description": "Original application/quotation deadline; time-zone ambiguity retained. Never substitute delivery or board expiry.",
            "properties": {
              "value": {
                "type": "string"
              },
              "precision": {
                "type": "string"
              },
              "kind": {
                "type": "string"
              },
              "timezone": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "utc": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "timezoneAmbiguous": {
                "type": "boolean"
              },
              "sourceLiteral": {
                "type": "string"
              }
            }
          },
          "deliveryDeadline": {
            "type": [
              "object",
              "null"
            ],
            "description": "Delivery date only; does not determine application status.",
            "properties": {
              "value": {
                "type": "string"
              },
              "precision": {
                "type": "string"
              },
              "kind": {
                "type": "string"
              },
              "timezone": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "utc": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "timezoneAmbiguous": {
                "type": "boolean"
              },
              "sourceLiteral": {
                "type": "string"
              }
            }
          },
          "discoveryStatus": {
            "type": "string",
            "enum": [
              "closed",
              "quoting_closed",
              "future_deadline",
              "past_deadline",
              "unknown_deadline"
            ],
            "description": "Explicit closure takes precedence over application deadline. Neither future nor unknown implies open availability."
          },
          "sourceApplicationStatus": {
            "type": [
              "string",
              "null"
            ]
          },
          "sourceClosedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "discoveryPriority": {
            "type": [
              "string",
              "null"
            ]
          },
          "eligibilitySummary": {
            "type": [
              "string",
              "null"
            ]
          },
          "freshnessReview": {
            "type": [
              "string",
              "null"
            ]
          },
          "activeDiscoveryEligible": {
            "type": "boolean",
            "const": false,
            "description": "No external listing is certified as an active/claimable small task. Sources remain discoverable in the directory."
          },
          "smallTaskDiscoveryEligible": {
            "type": "boolean",
            "const": false,
            "description": "No external listing is certified as an active/claimable small task. Sources remain discoverable in the directory."
          }
        }
      },
      "OriginalSourceLink": {
        "type": "object",
        "required": [
          "platform",
          "url"
        ],
        "additionalProperties": false,
        "properties": {
          "platform": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "MarketCounts": {
        "type": "object",
        "required": [
          "externalSources",
          "REQUEST",
          "OFFER",
          "GUIDE",
          "nativePublicTasks"
        ],
        "properties": {
          "externalSources": {
            "type": "integer",
            "minimum": 0
          },
          "REQUEST": {
            "type": "integer",
            "minimum": 0
          },
          "OFFER": {
            "type": "integer",
            "minimum": 0
          },
          "GUIDE": {
            "type": "integer",
            "minimum": 0
          },
          "nativePublicTasks": {
            "type": "integer",
            "minimum": 0
          },
          "publicTenders": {
            "type": "integer",
            "minimum": 0,
            "description": "External source references explicitly classified as institutional procurement."
          }
        }
      },
      "PublicCapabilities": {
        "type": "object",
        "required": [
          "schemaVersion",
          "readPublicSourceInformation",
          "readFirstPartyPublicTasks",
          "searchAndFilterPublicInformation",
          "publicReadRequiresLogin",
          "publicReadIsFree",
          "externalSourceIsClaimableOnSparkGuild",
          "directTaskClaiming",
          "automatedTaskAcceptance",
          "agentIdentityVerification",
          "paymentOrEscrow",
          "automatedExecutionOrDelivery"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "readPublicSourceInformation": {
            "type": "boolean"
          },
          "readFirstPartyPublicTasks": {
            "type": "boolean"
          },
          "searchAndFilterPublicInformation": {
            "type": "boolean"
          },
          "publicReadRequiresLogin": {
            "type": "boolean"
          },
          "publicReadIsFree": {
            "type": "boolean"
          },
          "externalSourceIsClaimableOnSparkGuild": {
            "type": "boolean"
          },
          "directTaskClaiming": {
            "type": "boolean"
          },
          "automatedTaskAcceptance": {
            "type": "boolean"
          },
          "agentIdentityVerification": {
            "type": "boolean"
          },
          "paymentOrEscrow": {
            "type": "boolean"
          },
          "automatedExecutionOrDelivery": {
            "type": "boolean"
          }
        }
      },
      "ReadOnlyLinks": {
        "type": "object",
        "required": [
          "website",
          "directory",
          "originalGuide",
          "documentation",
          "market",
          "nativeTasks",
          "capabilities",
          "openapi",
          "discovery",
          "llms",
          "websiteZh",
          "directoryZh",
          "resources",
          "resourcesZh",
          "guides",
          "guidesZh",
          "documentationZh"
        ],
        "properties": {
          "website": {
            "type": "string",
            "format": "uri"
          },
          "directory": {
            "type": "string",
            "format": "uri"
          },
          "originalGuide": {
            "type": "string",
            "format": "uri"
          },
          "documentation": {
            "type": "string",
            "format": "uri"
          },
          "market": {
            "type": "string",
            "format": "uri"
          },
          "nativeTasks": {
            "type": "string",
            "format": "uri"
          },
          "capabilities": {
            "type": "string",
            "format": "uri"
          },
          "openapi": {
            "type": "string",
            "format": "uri"
          },
          "discovery": {
            "type": "string",
            "format": "uri"
          },
          "llms": {
            "type": "string",
            "format": "uri"
          },
          "websiteZh": {
            "type": "string",
            "format": "uri",
            "examples": [
              "https://sparkguild.si/zh/"
            ]
          },
          "directoryZh": {
            "type": "string",
            "format": "uri",
            "examples": [
              "https://sparkguild.si/zh/buying-requests"
            ]
          },
          "resources": {
            "type": "string",
            "format": "uri",
            "examples": [
              "https://sparkguild.si/resources"
            ]
          },
          "resourcesZh": {
            "type": "string",
            "format": "uri",
            "examples": [
              "https://sparkguild.si/zh/resources"
            ]
          },
          "guides": {
            "type": "string",
            "format": "uri",
            "examples": [
              "https://sparkguild.si/guides"
            ]
          },
          "guidesZh": {
            "type": "string",
            "format": "uri",
            "examples": [
              "https://sparkguild.si/zh/guides"
            ]
          },
          "documentationZh": {
            "type": "string",
            "format": "uri",
            "examples": [
              "https://sparkguild.si/zh/developers"
            ]
          }
        },
        "description": "Public human-reading and machine-reading links. Resource hubs and original buyer guides are separate from third-party source records."
      },
      "MarketFilters": {
        "type": "object",
        "required": [
          "type",
          "q",
          "limit",
          "offset"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "ALL",
              "REQUEST",
              "OFFER",
              "GUIDE"
            ]
          },
          "q": {
            "type": "string",
            "maxLength": 100
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000
          },
          "topic": {
            "type": "string",
            "enum": [
              "all",
              "software-automation",
              "design-video",
              "research-data",
              "local-assistance",
              "proxy-shopping-sourcing",
              "engineering-consulting"
            ]
          },
          "scope": {
            "type": "string",
            "enum": [
              "all",
              "project",
              "public_tender"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "all",
              "future_deadline",
              "past_deadline",
              "unknown_deadline",
              "closed",
              "quoting_closed"
            ],
            "description": "Discovery status: explicit source closure and quoting closure take priority over recorded application deadline. Unknown never proves availability."
          }
        }
      },
      "NativeTask": {
        "type": "object",
        "description": "A first-party public task record after publication/consent; it is not payment-guaranteed or directly claimable. Additional descriptive fields can vary by source.",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "title_zh": {
            "type": [
              "string",
              "null"
            ]
          },
          "title_en": {
            "type": [
              "string",
              "null"
            ]
          },
          "summary_zh": {
            "type": [
              "string",
              "null"
            ]
          },
          "summary_en": {
            "type": [
              "string",
              "null"
            ]
          },
          "budget_display": {
            "type": [
              "string",
              "null"
            ]
          },
          "claimUrl": {
            "type": "null"
          },
          "payoutHere": {
            "type": "boolean",
            "const": false
          },
          "payoutVerified": {
            "type": "boolean",
            "const": false
          }
        },
        "additionalProperties": true
      },
      "MarketResponse": {
        "type": "object",
        "required": [
          "ok",
          "schemaVersion",
          "service",
          "dataKind",
          "freeToRead",
          "updatedAt",
          "disclaimer",
          "capabilities",
          "counts",
          "filters",
          "totalMatching",
          "returned",
          "next",
          "items",
          "nativeTasks",
          "links"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "service": {
            "type": "string",
            "const": "SparkGuild"
          },
          "dataKind": {
            "type": "string",
            "const": "free_source_link_directory"
          },
          "freeToRead": {
            "type": "boolean",
            "const": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date"
          },
          "disclaimer": {
            "type": "string"
          },
          "capabilities": {
            "$ref": "#/components/schemas/PublicCapabilities"
          },
          "counts": {
            "$ref": "#/components/schemas/MarketCounts"
          },
          "filters": {
            "$ref": "#/components/schemas/MarketFilters"
          },
          "totalMatching": {
            "type": "integer",
            "minimum": 0
          },
          "returned": {
            "type": "integer",
            "minimum": 0
          },
          "next": {
            "type": [
              "string",
              "null"
            ],
            "description": "Absolute URL of the next results page, or null",
            "format": "uri"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalRecord"
            }
          },
          "nativeTasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NativeTask"
            }
          },
          "links": {
            "$ref": "#/components/schemas/ReadOnlyLinks"
          }
        }
      },
      "SourceDetailResponse": {
        "type": "object",
        "required": [
          "ok",
          "schemaVersion",
          "updatedAt",
          "item",
          "links"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "updatedAt": {
            "type": "string",
            "format": "date"
          },
          "item": {
            "$ref": "#/components/schemas/ExternalRecord"
          },
          "links": {
            "$ref": "#/components/schemas/ReadOnlyLinks"
          }
        }
      },
      "CapabilitiesResponse": {
        "type": "object",
        "required": [
          "ok",
          "service",
          "schemaVersion",
          "updatedAt",
          "capabilities",
          "inventory",
          "recordTypes",
          "readOnlyEndpoints",
          "disabledActions",
          "humanIntakeNote"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "service": {
            "type": "string",
            "const": "SparkGuild"
          },
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "updatedAt": {
            "type": "string",
            "format": "date"
          },
          "capabilities": {
            "$ref": "#/components/schemas/PublicCapabilities"
          },
          "inventory": {
            "$ref": "#/components/schemas/MarketCounts"
          },
          "recordTypes": {
            "type": "object",
            "required": [
              "REQUEST",
              "OFFER",
              "GUIDE"
            ],
            "properties": {
              "REQUEST": {
                "type": "string",
                "description": "External deliverable or practical-help requests across all current resource topics; neither native SparkGuild tasks nor independently verified availability."
              },
              "OFFER": {
                "type": "string"
              },
              "GUIDE": {
                "type": "string"
              }
            }
          },
          "readOnlyEndpoints": {
            "$ref": "#/components/schemas/ReadOnlyLinks"
          },
          "disabledActions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "humanIntakeNote": {
            "type": "string"
          }
        }
      },
      "NativeTaskFeedResponse": {
        "type": "object",
        "required": [
          "ok",
          "checkedAt",
          "tasks",
          "note"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time"
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NativeTask"
            }
          },
          "note": {
            "type": "string"
          }
        }
      },
      "ApiError": {
        "type": "object",
        "required": [
          "ok",
          "error"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false
          },
          "error": {
            "type": "string"
          }
        }
      },
      "BilingualHumanLinks": {
        "type": "object",
        "required": [
          "en",
          "zh"
        ],
        "additionalProperties": false,
        "description": "Language-specific SparkGuild summary URLs for the same external reference. Stable source queries resolve on the server to the current page, retaining #{id} on topic pages or #source-{id} in the directory. Page numbers may change when new records are added.",
        "properties": {
          "en": {
            "type": "string",
            "format": "uri",
            "description": "English summary; same value as humanUrl."
          },
          "zh": {
            "type": "string",
            "format": "uri",
            "description": "Chinese summary under /zh/, preserving the same record anchor as the English URL."
          }
        }
      },
      "ProcurementFacts": {
        "type": [
          "object",
          "null"
        ],
        "description": "Curated institutional procurement facts from a first-party published notice. Full original API evidence and attachments are not exposed here. Null for records without this classification.",
        "properties": {
          "noticeId": {
            "type": "string"
          },
          "procedureId": {
            "type": "string"
          },
          "buyer": {
            "type": "string"
          },
          "eligibilityZh": {
            "type": "string"
          },
          "eligibilityEn": {
            "type": "string"
          },
          "deadlineKind": {
            "type": "string",
            "enum": [
              "submission",
              "participation"
            ]
          },
          "deadlineEarliest": {
            "type": "string",
            "description": "Earliest recorded response deadline across relevant lots. Date-only stays YYYY-MM-DD. An exact time preserves the source offset; do not assume midnight or local time."
          },
          "deadlinePrecision": {
            "type": "string",
            "enum": [
              "date",
              "datetime"
            ]
          },
          "evidenceAccess": {
            "type": "string",
            "enum": [
              "official_search_api",
              "official_ocds_api"
            ],
            "description": "Source of reviewed original fields; does not imply individual source HTML or attachment access."
          },
          "attachmentsReviewed": {
            "type": "boolean",
            "const": false
          },
          "opportunityModel": {
            "type": "string",
            "enum": [
              "specific_procurement",
              "framework_agreement",
              "design_competition",
              "supplier_panel_admission"
            ],
            "description": "Published opportunity form when reviewed. Framework or panel admission does not guarantee an assignment; absence on legacy records is unknown."
          },
          "smeSuitabilityDeclared": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Source declaration of SME suitability when reviewed. Null or absence means no declaration was established; false does not independently determine ineligibility."
          },
          "individualParticipationExplicit": {
            "type": "boolean",
            "description": "True only for explicit source permission for individual applicants; not an independent eligibility determination."
          },
          "sourceLicense": {
            "type": "string",
            "format": "uri",
            "description": "Licence declared for the official publication data; does not cover personal data or automatically clear third-party attachments."
          },
          "publicInformationPublisher": {
            "type": "string"
          },
          "sourceAttribution": {
            "type": "string",
            "description": "Required source-data attribution where supplied; UK official data uses OGL v3.0."
          }
        }
      }
    }
  },
  "externalDocs": {
    "url": "https://sparkguild.si/developers"
  },
  "x-agent-discovery": "https://sparkguild.si/.well-known/sparkguild.json"
}
