{
  "components": {
    "schemas": {
      "ActorIn": {
        "additionalProperties": false,
        "description": "Who is recording this. An unattributed record is not evidence.",
        "properties": {
          "identifier": {
            "maxLength": 200,
            "minLength": 1,
            "title": "Identifier",
            "type": "string"
          },
          "kind": {
            "default": "person",
            "enum": [
              "person",
              "service",
              "automation"
            ],
            "title": "Kind",
            "type": "string"
          },
          "role": {
            "default": "",
            "maxLength": 200,
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "identifier"
        ],
        "title": "ActorIn",
        "type": "object"
      },
      "AdvisoryCheckIn": {
        "additionalProperties": false,
        "properties": {
          "advisory": {
            "additionalProperties": true,
            "title": "Advisory",
            "type": "object"
          },
          "manifest": {
            "additionalProperties": true,
            "title": "Manifest",
            "type": "object"
          }
        },
        "required": [
          "advisory",
          "manifest"
        ],
        "title": "AdvisoryCheckIn",
        "type": "object"
      },
      "AttestIn": {
        "additionalProperties": false,
        "description": "Three numbers the customer reads out of their own ledger.\n\nNothing else is accepted, and nothing else is wanted. The point of this\nendpoint is that the records stay where they are.",
        "properties": {
          "head_link_hash": {
            "description": "link hash of the last record, hex SHA-256",
            "maxLength": 64,
            "minLength": 64,
            "title": "Head Link Hash",
            "type": "string"
          },
          "head_seq": {
            "description": "sequence number of the last record",
            "minimum": 0.0,
            "title": "Head Seq",
            "type": "integer"
          },
          "ledger_length": {
            "description": "how many records the chain holds",
            "minimum": 0.0,
            "title": "Ledger Length",
            "type": "integer"
          },
          "note": {
            "default": "",
            "maxLength": 500,
            "title": "Note",
            "type": "string"
          },
          "rotating": {
            "default": false,
            "description": "acknowledge that this service is signing with a different key than it did last time. Only set this if you were told to.",
            "title": "Rotating",
            "type": "boolean"
          }
        },
        "required": [
          "ledger_length",
          "head_seq",
          "head_link_hash"
        ],
        "title": "AttestIn",
        "type": "object"
      },
      "AvailabilityIn": {
        "additionalProperties": false,
        "description": "Product, versions, and the Member States where it was made available.",
        "properties": {
          "actor": {
            "$ref": "#/components/schemas/ActorIn"
          },
          "annex_category": {
            "default": "",
            "title": "Annex Category",
            "type": "string"
          },
          "components": {
            "items": {
              "type": "string"
            },
            "title": "Components",
            "type": "array"
          },
          "end_of_support": {
            "default": false,
            "title": "End Of Support",
            "type": "boolean"
          },
          "evidence_source": {
            "default": "",
            "title": "Evidence Source",
            "type": "string"
          },
          "member_states": {
            "items": {
              "type": "string"
            },
            "title": "Member States",
            "type": "array"
          },
          "other_markets": {
            "items": {
              "type": "string"
            },
            "title": "Other Markets",
            "type": "array"
          },
          "owner": {
            "default": "",
            "title": "Owner",
            "type": "string"
          },
          "placed_on_market_from": {
            "default": "",
            "title": "Placed On Market From",
            "type": "string"
          },
          "placed_on_market_to": {
            "default": "",
            "title": "Placed On Market To",
            "type": "string"
          },
          "product_name": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Product Name",
            "type": "string"
          },
          "product_type": {
            "default": "",
            "title": "Product Type",
            "type": "string"
          },
          "units_in_field": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Units In Field"
          },
          "version_range": {
            "default": "",
            "title": "Version Range",
            "type": "string"
          }
        },
        "required": [
          "product_name",
          "actor"
        ],
        "title": "AvailabilityIn",
        "type": "object"
      },
      "AwarenessIn": {
        "additionalProperties": false,
        "description": "The moment every deadline runs from.\n\n``reasoning`` is required. Commission guidance C(2026) 5252 \u00a7213 makes this\na judgement about reasonable certainty after an initial assessment; a\ntimestamp with no judgement behind it cannot be defended.",
        "properties": {
          "actor": {
            "$ref": "#/components/schemas/ActorIn"
          },
          "assessment_completed_at": {
            "format": "date-time",
            "title": "Assessment Completed At",
            "type": "string"
          },
          "assessment_started_at": {
            "format": "date-time",
            "title": "Assessment Started At",
            "type": "string"
          },
          "determined_by": {
            "default": "",
            "title": "Determined By",
            "type": "string"
          },
          "established_at": {
            "format": "date-time",
            "title": "Established At",
            "type": "string"
          },
          "reasoning": {
            "maxLength": 4000,
            "minLength": 1,
            "title": "Reasoning",
            "type": "string"
          },
          "track": {
            "enum": [
              "actively_exploited_vulnerability",
              "severe_incident"
            ],
            "title": "Track",
            "type": "string"
          }
        },
        "required": [
          "established_at",
          "assessment_started_at",
          "assessment_completed_at",
          "track",
          "reasoning",
          "actor"
        ],
        "title": "AwarenessIn",
        "type": "object"
      },
      "BundleCheckIn": {
        "additionalProperties": false,
        "properties": {
          "bundle": {
            "additionalProperties": true,
            "title": "Bundle",
            "type": "object"
          },
          "envelope": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Envelope"
          },
          "trace": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trace"
          }
        },
        "required": [
          "bundle"
        ],
        "title": "BundleCheckIn",
        "type": "object"
      },
      "CaseOut": {
        "additionalProperties": true,
        "description": "The full case view, including deadlines and what is still owed.",
        "properties": {
          "case_id": {
            "title": "Case Id",
            "type": "string"
          },
          "state": {
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "case_id",
          "state"
        ],
        "title": "CaseOut",
        "type": "object"
      },
      "CheckoutIn": {
        "additionalProperties": false,
        "properties": {
          "company": {
            "default": "",
            "maxLength": 200,
            "title": "Company",
            "type": "string"
          },
          "email": {
            "maxLength": 320,
            "pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$",
            "title": "Email",
            "type": "string"
          },
          "tier": {
            "pattern": "^(register|cell)$",
            "title": "Tier",
            "type": "string"
          }
        },
        "required": [
          "tier",
          "email"
        ],
        "title": "CheckoutIn",
        "type": "object"
      },
      "CheckoutOut": {
        "properties": {
          "checkout_url": {
            "title": "Checkout Url",
            "type": "string"
          },
          "price": {
            "title": "Price",
            "type": "string"
          },
          "tier": {
            "title": "Tier",
            "type": "string"
          }
        },
        "required": [
          "checkout_url",
          "tier",
          "price"
        ],
        "title": "CheckoutOut",
        "type": "object"
      },
      "CoverageIn": {
        "additionalProperties": false,
        "properties": {
          "manifest": {
            "additionalProperties": true,
            "title": "Manifest",
            "type": "object"
          }
        },
        "required": [
          "manifest"
        ],
        "title": "CoverageIn",
        "type": "object"
      },
      "DeclarationCheckIn": {
        "additionalProperties": false,
        "properties": {
          "declaration": {
            "additionalProperties": true,
            "title": "Declaration",
            "type": "object"
          },
          "manifest": {
            "additionalProperties": true,
            "title": "Manifest",
            "type": "object"
          },
          "with_coverage": {
            "default": false,
            "title": "With Coverage",
            "type": "boolean"
          }
        },
        "required": [
          "declaration",
          "manifest"
        ],
        "title": "DeclarationCheckIn",
        "type": "object"
      },
      "DeclareIn": {
        "additionalProperties": false,
        "properties": {
          "doc_id": {
            "maxLength": 200,
            "minLength": 1,
            "title": "Doc Id",
            "type": "string"
          },
          "issued_by": {
            "maxLength": 200,
            "minLength": 1,
            "title": "Issued By",
            "type": "string"
          },
          "legislation": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "title": "Legislation",
            "type": "array"
          },
          "manifest": {
            "additionalProperties": true,
            "title": "Manifest",
            "type": "object"
          },
          "notified_body": {
            "default": "",
            "title": "Notified Body",
            "type": "string"
          },
          "notified_body_number": {
            "default": "",
            "title": "Notified Body Number",
            "type": "string"
          },
          "place": {
            "default": "",
            "title": "Place",
            "type": "string"
          },
          "signatory": {
            "default": "",
            "title": "Signatory",
            "type": "string"
          },
          "standards": {
            "default": [],
            "items": {
              "type": "string"
            },
            "title": "Standards",
            "type": "array"
          }
        },
        "required": [
          "manifest",
          "doc_id",
          "issued_by",
          "legislation"
        ],
        "title": "DeclareIn",
        "type": "object"
      },
      "DiffIn": {
        "additionalProperties": false,
        "properties": {
          "baseline": {
            "additionalProperties": true,
            "title": "Baseline",
            "type": "object"
          },
          "observed": {
            "additionalProperties": true,
            "title": "Observed",
            "type": "object"
          }
        },
        "required": [
          "baseline",
          "observed"
        ],
        "title": "DiffIn",
        "type": "object"
      },
      "FilingIn": {
        "additionalProperties": false,
        "description": "A submission to the reporting platform.\n\n``payload`` is keyed by platform field *name*. ``GET /v1/spec/fields``\nreturns the names, the stage at which each is required, and the length\nlimits.",
        "properties": {
          "actor": {
            "$ref": "#/components/schemas/ActorIn"
          },
          "payload": {
            "additionalProperties": true,
            "title": "Payload",
            "type": "object"
          },
          "platform_reference": {
            "default": "",
            "title": "Platform Reference",
            "type": "string"
          },
          "stage": {
            "enum": [
              "early_warning",
              "notification",
              "final",
              "intermediate"
            ],
            "title": "Stage",
            "type": "string"
          },
          "submitted_at": {
            "format": "date-time",
            "title": "Submitted At",
            "type": "string"
          }
        },
        "required": [
          "stage",
          "submitted_at",
          "payload",
          "actor"
        ],
        "title": "FilingIn",
        "type": "object"
      },
      "FilingOut": {
        "properties": {
          "case_id": {
            "title": "Case Id",
            "type": "string"
          },
          "content_hash": {
            "title": "Content Hash",
            "type": "string"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "ledger_seq": {
            "title": "Ledger Seq",
            "type": "integer"
          },
          "outstanding": {
            "items": {
              "type": "string"
            },
            "title": "Outstanding",
            "type": "array"
          },
          "validation": {
            "$ref": "#/components/schemas/ValidationOut"
          }
        },
        "required": [
          "case_id",
          "content_hash",
          "kind",
          "ledger_seq",
          "outstanding",
          "validation"
        ],
        "title": "FilingOut",
        "type": "object"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "title": "Detail",
            "type": "array"
          }
        },
        "title": "HTTPValidationError",
        "type": "object"
      },
      "InterventionIn": {
        "additionalProperties": false,
        "properties": {
          "actor": {
            "default": "",
            "maxLength": 200,
            "title": "Actor",
            "type": "string"
          },
          "intervention": {
            "additionalProperties": true,
            "title": "Intervention",
            "type": "object"
          },
          "role": {
            "default": "",
            "maxLength": 200,
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "intervention"
        ],
        "title": "InterventionIn",
        "type": "object"
      },
      "ManifestIn": {
        "additionalProperties": false,
        "properties": {
          "actor": {
            "default": "",
            "maxLength": 200,
            "title": "Actor",
            "type": "string"
          },
          "manifest": {
            "additionalProperties": true,
            "title": "Manifest",
            "type": "object"
          },
          "role": {
            "default": "",
            "maxLength": 200,
            "title": "Role",
            "type": "string"
          }
        },
        "required": [
          "manifest"
        ],
        "title": "ManifestIn",
        "type": "object"
      },
      "MeasureIn": {
        "additionalProperties": false,
        "description": "The moment a corrective **or mitigating** measure became available.\n\nThis starts the 14-day final-report clock for a vulnerability. A documented\nworkaround starts it exactly as a patch does.",
        "properties": {
          "actor": {
            "$ref": "#/components/schemas/ActorIn"
          },
          "available_at": {
            "format": "date-time",
            "title": "Available At",
            "type": "string"
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "title": "Description",
            "type": "string"
          }
        },
        "required": [
          "available_at",
          "description",
          "actor"
        ],
        "title": "MeasureIn",
        "type": "object"
      },
      "PassportCheckIn": {
        "additionalProperties": false,
        "properties": {
          "passport": {
            "additionalProperties": true,
            "title": "Passport",
            "type": "object"
          }
        },
        "required": [
          "passport"
        ],
        "title": "PassportCheckIn",
        "type": "object"
      },
      "PassportIn": {
        "additionalProperties": false,
        "properties": {
          "actor": {
            "maxLength": 200,
            "minLength": 1,
            "title": "Actor",
            "type": "string"
          },
          "manifest": {
            "additionalProperties": true,
            "title": "Manifest",
            "type": "object"
          },
          "role": {
            "default": "verification engineer",
            "maxLength": 200,
            "title": "Role",
            "type": "string"
          },
          "seal": {
            "default": true,
            "title": "Seal",
            "type": "boolean"
          }
        },
        "required": [
          "manifest",
          "actor"
        ],
        "title": "PassportIn",
        "type": "object"
      },
      "RecordedOut": {
        "description": "What was written, and what is now outstanding.",
        "properties": {
          "case_id": {
            "title": "Case Id",
            "type": "string"
          },
          "content_hash": {
            "title": "Content Hash",
            "type": "string"
          },
          "kind": {
            "title": "Kind",
            "type": "string"
          },
          "ledger_seq": {
            "title": "Ledger Seq",
            "type": "integer"
          },
          "outstanding": {
            "items": {
              "type": "string"
            },
            "title": "Outstanding",
            "type": "array"
          }
        },
        "required": [
          "case_id",
          "content_hash",
          "kind",
          "ledger_seq",
          "outstanding"
        ],
        "title": "RecordedOut",
        "type": "object"
      },
      "SeparationIn": {
        "additionalProperties": false,
        "description": "The six inputs an integrator already has written down somewhere.",
        "properties": {
          "human_position_uncertainty_mm": {
            "default": 0.0,
            "description": "Zd",
            "minimum": 0.0,
            "title": "Human Position Uncertainty Mm",
            "type": "number"
          },
          "human_speed_mm_s": {
            "anyOf": [
              {
                "minimum": 0.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "closing speed if the sensing system reports it; omit for the ISO 13855 walking figure",
            "title": "Human Speed Mm S"
          },
          "intrusion_distance_mm": {
            "description": "C, per ISO 13855, for the body part that can reach in",
            "minimum": 0.0,
            "title": "Intrusion Distance Mm",
            "type": "number"
          },
          "measured_at_speed_mm_s": {
            "description": "the speed the stop distance was actually measured at",
            "exclusiveMinimum": 0.0,
            "title": "Measured At Speed Mm S",
            "type": "number"
          },
          "reaction_time_s": {
            "description": "Tr: detection to stop command",
            "minimum": 0.0,
            "title": "Reaction Time S",
            "type": "number"
          },
          "robot_position_uncertainty_mm": {
            "default": 0.0,
            "description": "Zr",
            "minimum": 0.0,
            "title": "Robot Position Uncertainty Mm",
            "type": "number"
          },
          "robot_speed_mm_s": {
            "description": "TCP speed under SSM, mm/s",
            "minimum": 0.0,
            "title": "Robot Speed Mm S",
            "type": "number"
          },
          "stop_distance_mm": {
            "description": "travel during Ts",
            "minimum": 0.0,
            "title": "Stop Distance Mm",
            "type": "number"
          },
          "stop_time_s": {
            "description": "Ts: stop command to standstill",
            "minimum": 0.0,
            "title": "Stop Time S",
            "type": "number"
          }
        },
        "required": [
          "robot_speed_mm_s",
          "reaction_time_s",
          "stop_time_s",
          "stop_distance_mm",
          "measured_at_speed_mm_s",
          "intrusion_distance_mm"
        ],
        "title": "SeparationIn",
        "type": "object"
      },
      "SignalIn": {
        "additionalProperties": false,
        "description": "A report or observation that might turn out to be reportable.",
        "properties": {
          "actor": {
            "$ref": "#/components/schemas/ActorIn"
          },
          "channel": {
            "default": "other",
            "title": "Channel",
            "type": "string"
          },
          "description": {
            "maxLength": 4000,
            "minLength": 1,
            "title": "Description",
            "type": "string"
          },
          "product_name": {
            "default": "",
            "title": "Product Name",
            "type": "string"
          },
          "received_at": {
            "format": "date-time",
            "title": "Received At",
            "type": "string"
          },
          "received_by": {
            "default": "",
            "title": "Received By",
            "type": "string"
          },
          "reference": {
            "default": "",
            "title": "Reference",
            "type": "string"
          },
          "version": {
            "default": "",
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "received_at",
          "description",
          "actor"
        ],
        "title": "SignalIn",
        "type": "object"
      },
      "TriageIn": {
        "additionalProperties": false,
        "description": "Answers to the reportability decision path.\n\nUnanswered questions default to *undetermined*; an undetermined answer is\nnever treated as a negative.",
        "properties": {
          "actor": {
            "$ref": "#/components/schemas/ActorIn"
          },
          "answers": {
            "additionalProperties": {
              "enum": [
                "yes",
                "no",
                "undetermined"
              ],
              "type": "string"
            },
            "title": "Answers",
            "type": "object"
          },
          "reasoning": {
            "default": "",
            "title": "Reasoning",
            "type": "string"
          },
          "reopen_trigger": {
            "default": "",
            "title": "Reopen Trigger",
            "type": "string"
          }
        },
        "required": [
          "answers",
          "actor"
        ],
        "title": "TriageIn",
        "type": "object"
      },
      "UserNotificationIn": {
        "additionalProperties": false,
        "description": "The Article 14(8) notification to users.\n\nThe trigger is becoming aware, not the availability of a fix. Guidance\n\u00a7\u00a7219-221: this is not an obligation to publish.",
        "properties": {
          "actor": {
            "$ref": "#/components/schemas/ActorIn"
          },
          "at": {
            "format": "date-time",
            "title": "At",
            "type": "string"
          },
          "content": {
            "maxLength": 8000,
            "minLength": 1,
            "title": "Content",
            "type": "string"
          },
          "public_disclosure": {
            "default": false,
            "title": "Public Disclosure",
            "type": "boolean"
          },
          "scope": {
            "maxLength": 500,
            "minLength": 1,
            "title": "Scope",
            "type": "string"
          }
        },
        "required": [
          "at",
          "scope",
          "content",
          "actor"
        ],
        "title": "UserNotificationIn",
        "type": "object"
      },
      "ValidateIn": {
        "additionalProperties": false,
        "description": "Check a draft submission without recording anything.",
        "properties": {
          "payload": {
            "additionalProperties": true,
            "title": "Payload",
            "type": "object"
          },
          "stage": {
            "enum": [
              "early_warning",
              "notification",
              "final",
              "intermediate"
            ],
            "title": "Stage",
            "type": "string"
          },
          "track": {
            "enum": [
              "actively_exploited_vulnerability",
              "severe_incident"
            ],
            "title": "Track",
            "type": "string"
          }
        },
        "required": [
          "track",
          "stage",
          "payload"
        ],
        "title": "ValidateIn",
        "type": "object"
      },
      "ValidationError": {
        "properties": {
          "ctx": {
            "title": "Context",
            "type": "object"
          },
          "input": {
            "title": "Input"
          },
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "title": "Location",
            "type": "array"
          },
          "msg": {
            "title": "Message",
            "type": "string"
          },
          "type": {
            "title": "Error Type",
            "type": "string"
          }
        },
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError",
        "type": "object"
      },
      "ValidationOut": {
        "properties": {
          "checks_skipped": {
            "items": {
              "type": "string"
            },
            "title": "Checks Skipped",
            "type": "array"
          },
          "glossary_date": {
            "title": "Glossary Date",
            "type": "string"
          },
          "glossary_version": {
            "title": "Glossary Version",
            "type": "string"
          },
          "issues": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Issues",
            "type": "array"
          },
          "stage": {
            "title": "Stage",
            "type": "string"
          },
          "submittable": {
            "title": "Submittable",
            "type": "boolean"
          },
          "track": {
            "title": "Track",
            "type": "string"
          }
        },
        "required": [
          "submittable",
          "track",
          "stage",
          "glossary_version",
          "glossary_date",
          "issues",
          "checks_skipped"
        ],
        "title": "ValidationOut",
        "type": "object"
      },
      "assurance__api__attest_routes__VerifyIn": {
        "additionalProperties": false,
        "properties": {
          "attestations": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "minItems": 1,
            "title": "Attestations",
            "type": "array"
          },
          "public_key_pem": {
            "default": "",
            "description": "the key to check against. Omit to use this service's key \u2014 but obtaining it from GET /v1/ledger/attest/key over the same connection proves less than obtaining it elsewhere.",
            "title": "Public Key Pem",
            "type": "string"
          }
        },
        "required": [
          "attestations"
        ],
        "title": "VerifyIn",
        "type": "object"
      },
      "assurance__api__fleet_routes__AdvisoryIn": {
        "additionalProperties": false,
        "properties": {
          "advisory": {
            "additionalProperties": true,
            "title": "Advisory",
            "type": "object"
          }
        },
        "required": [
          "advisory"
        ],
        "title": "AdvisoryIn",
        "type": "object"
      },
      "assurance__api__machine_routes__VerifyIn": {
        "additionalProperties": false,
        "properties": {
          "actor": {
            "description": "who is signing this verification",
            "maxLength": 200,
            "minLength": 1,
            "title": "Actor",
            "type": "string"
          },
          "envelope": {
            "additionalProperties": true,
            "title": "Envelope",
            "type": "object"
          },
          "limits": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Limits"
          },
          "role": {
            "default": "verification engineer",
            "maxLength": 200,
            "title": "Role",
            "type": "string"
          },
          "seal": {
            "default": true,
            "description": "append the sealed bundle to the evidence ledger",
            "title": "Seal",
            "type": "boolean"
          },
          "trace": {
            "additionalProperties": true,
            "title": "Trace",
            "type": "object"
          }
        },
        "required": [
          "envelope",
          "trace",
          "actor"
        ],
        "title": "VerifyIn",
        "type": "object"
      },
      "assurance__api__supplier_routes__AdvisoryIn": {
        "additionalProperties": true,
        "description": "A pre-signed advisory record, exactly as `SignedAdvisory.to_dict()` emits it.\n\nThis service never sees a private key: the caller signs locally (the same\nmachinery `assurance supplier publish` uses) and hands over the already-\nsigned, already-chained record. Structural validation happens on load via\n`SignedAdvisory.from_dict`; this model only proves the body is a JSON\nobject before it gets there.",
        "properties": {},
        "title": "AdvisoryIn",
        "type": "object"
      }
    }
  },
  "info": {
    "description": "\nRegister for **Regulation (EU) 2024/2847, Article 14** \u2014 reporting of actively\nexploited vulnerabilities and severe incidents.\n\nArticle 14 has applied since **11 September 2026**, and by Article 69(3) it\napplies to every in-scope product placed on the market **before 11 December\n2027**. There is no grandfathering for reporting, and the Commission's guidance\nconfirms the duty outlives a product's support period.\n\n**What this service does that a spreadsheet cannot**\n\n* Records the awareness timestamp independently. The reporting platform does\n  not yet capture it for vulnerabilities and records *detection* for incidents,\n  and awareness is the fact every deadline runs from.\n* Computes both final-report clocks correctly: 14 days from a corrective **or\n  mitigating** measure for a vulnerability, one calendar month from\n  **submission** of the 72-hour notification for an incident.\n* Validates a draft submission against the platform's 39-field specification\n  before anyone opens the platform.\n* Keeps every record in a hash-chained ledger, and refuses to export one that\n  does not verify.\n\nIt does not give legal advice, and it does not decide a judgement for you:\ntriage returns *undetermined* until a human answers.\n",
    "title": "Industrial Assurance \u2014 CRA Article 14 register",
    "version": "0.1.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/": {
      "get": {
        "description": "The front door.\n\nSomeone who reaches the bare URL should learn what this is, and what they\ncan try without an account, in one response.",
        "operationId": "root__get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Root  Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "What this service is",
        "tags": [
          "service"
        ]
      }
    },
    "/healthz": {
      "get": {
        "description": "Reports what is actually true, including an unauthenticated deployment.",
        "operationId": "healthz_healthz_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Healthz Healthz Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Liveness and configuration",
        "tags": [
          "service"
        ]
      }
    },
    "/v1/billing/portal": {
      "post": {
        "description": "A self-service portal, so cancelling never requires emailing a human.",
        "operationId": "post_portal_v1_billing_portal_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Post Portal V1 Billing Portal Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Manage your subscription",
        "tags": [
          "billing"
        ]
      }
    },
    "/v1/billing/webhook": {
      "post": {
        "description": "Grant, downgrade and cancel entitlements from signed Stripe events.\n\nUnverified payloads are refused. Without that, this endpoint is a way for\nanyone on the internet to grant themselves a paid subscription.",
        "operationId": "post_webhook_v1_billing_webhook_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Post Webhook V1 Billing Webhook Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Stripe webhook (signature verified)",
        "tags": [
          "billing"
        ]
      }
    },
    "/v1/cases": {
      "get": {
        "operationId": "get_cases_v1_cases_get",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "type": "string"
                  },
                  "title": "Response Get Cases V1 Cases Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List case ids",
        "tags": [
          "article 14"
        ]
      }
    },
    "/v1/cases/{case_id}": {
      "get": {
        "operationId": "get_case_v1_cases__case_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "case_id",
            "required": true,
            "schema": {
              "title": "Case Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "One case, with deadlines",
        "tags": [
          "article 14"
        ]
      }
    },
    "/v1/cases/{case_id}/availability": {
      "post": {
        "operationId": "post_availability_v1_cases__case_id__availability_post",
        "parameters": [
          {
            "in": "path",
            "name": "case_id",
            "required": true,
            "schema": {
              "title": "Case Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AvailabilityIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordedOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Attach the product and Member State record the filing needs",
        "tags": [
          "article 14"
        ]
      }
    },
    "/v1/cases/{case_id}/awareness": {
      "post": {
        "operationId": "post_awareness_v1_cases__case_id__awareness_post",
        "parameters": [
          {
            "in": "path",
            "name": "case_id",
            "required": true,
            "schema": {
              "title": "Case Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AwarenessIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordedOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Establish the moment every deadline runs from",
        "tags": [
          "article 14"
        ]
      }
    },
    "/v1/cases/{case_id}/export": {
      "get": {
        "description": "Refuses if the chain does not verify.\n\nAn export is the moment records leave the system and start being relied on.",
        "operationId": "get_case_export_v1_cases__case_id__export_get",
        "parameters": [
          {
            "in": "path",
            "name": "case_id",
            "required": true,
            "schema": {
              "title": "Case Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Case Export V1 Cases  Case Id  Export Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "A verifiable evidence bundle for one case",
        "tags": [
          "article 14"
        ]
      }
    },
    "/v1/cases/{case_id}/filings": {
      "post": {
        "description": "Recording a filing that is not submittable is allowed and flagged.\n\nA manufacturer who has already submitted something incomplete needs that\nfact in the record, not a refusal. ``validation.submittable`` is false and\nthe response carries ``X-Assurance-Submittable: false``.",
        "operationId": "post_filing_v1_cases__case_id__filings_post",
        "parameters": [
          {
            "in": "path",
            "name": "case_id",
            "required": true,
            "schema": {
              "title": "Case Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilingIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FilingOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Record a submission, validated against the platform field spec",
        "tags": [
          "article 14"
        ]
      }
    },
    "/v1/cases/{case_id}/measure": {
      "post": {
        "description": "Starts the 14-day final-report clock for a vulnerability, Art. 14(2)(c).\n\nA documented workaround starts it as surely as a patch does.",
        "operationId": "post_measure_v1_cases__case_id__measure_post",
        "parameters": [
          {
            "in": "path",
            "name": "case_id",
            "required": true,
            "schema": {
              "title": "Case Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MeasureIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordedOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Record a corrective or mitigating measure becoming available",
        "tags": [
          "article 14"
        ]
      }
    },
    "/v1/cases/{case_id}/signal": {
      "post": {
        "description": "No deadline starts here.\n\nThe clock starts at awareness, which is a separate, reasoned record. The\ninterval between the two is what a market surveillance authority asks\nabout, and it cannot be reconstructed if the signal was never recorded.",
        "operationId": "post_signal_v1_cases__case_id__signal_post",
        "parameters": [
          {
            "in": "path",
            "name": "case_id",
            "required": true,
            "schema": {
              "title": "Case Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SignalIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordedOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Open a case with the first thing anyone heard",
        "tags": [
          "article 14"
        ]
      }
    },
    "/v1/cases/{case_id}/triage": {
      "post": {
        "operationId": "post_triage_v1_cases__case_id__triage_post",
        "parameters": [
          {
            "in": "path",
            "name": "case_id",
            "required": true,
            "schema": {
              "title": "Case Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TriageIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Post Triage V1 Cases  Case Id  Triage Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Work the reportability decision path",
        "tags": [
          "article 14"
        ]
      }
    },
    "/v1/cases/{case_id}/user-notification": {
      "post": {
        "operationId": "post_user_notification_v1_cases__case_id__user_notification_post",
        "parameters": [
          {
            "in": "path",
            "name": "case_id",
            "required": true,
            "schema": {
              "title": "Case Id",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserNotificationIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordedOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Record the Article 14(8) notification to users",
        "tags": [
          "article 14"
        ]
      }
    },
    "/v1/checkout": {
      "post": {
        "operationId": "post_checkout_v1_checkout_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckoutIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CheckoutOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Start a subscription",
        "tags": [
          "billing"
        ]
      }
    },
    "/v1/checkout/complete": {
      "get": {
        "description": "Hand over the key the webhook minted for this checkout session.\n\nReturns 202 while the webhook is still in flight. It does not mint a key\nhere: landing on this URL proves only that a browser followed a redirect.",
        "operationId": "get_checkout_complete_v1_checkout_complete_get",
        "parameters": [
          {
            "in": "query",
            "name": "session_id",
            "required": true,
            "schema": {
              "title": "Session Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Checkout Complete V1 Checkout Complete Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Collect the key after paying",
        "tags": [
          "billing"
        ]
      }
    },
    "/v1/fleet/advisory": {
      "post": {
        "description": "The fan-out: one advisory, every enrolled machine, down to safety functions.\n\nA machine whose coverage was already stale is reported, and is not counted\nas newly in question \u2014 an advisory does not make it worse, and mixing the two\nhides the machines that were fine until this morning.",
        "operationId": "advisory_impact_v1_fleet_advisory_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/assurance__api__fleet_routes__AdvisoryIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Advisory Impact V1 Fleet Advisory Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Which of your machines does this advisory touch?",
        "tags": [
          "fleet"
        ]
      }
    },
    "/v1/fleet/advisory/check": {
      "post": {
        "description": "One advisory, one manifest, no account.\n\nThe match basis is always reported. ``hash`` settles it; ``version`` rests on\na label, and this system has already shown a label can be wrong;\n``hash_mismatch`` means the machine's own label and artefact disagree against\nthe supplier's published figures, which is neither affected nor clear.",
        "operationId": "advisory_check_v1_fleet_advisory_check_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdvisoryCheckIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Advisory Check V1 Fleet Advisory Check Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Is this one machine affected by this advisory?",
        "tags": [
          "fleet"
        ]
      }
    },
    "/v1/fleet/declaration/check": {
      "post": {
        "description": "Free, because the person who most needs this is the buyer, not the seller.\n\nWhether a changed configuration amounts to a substantial modification is a\nquestion for the manufacturer and their notified body. What this settles is\nthe fact that question rests on.",
        "operationId": "declaration_check_v1_fleet_declaration_check_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeclarationCheckIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Declaration Check V1 Fleet Declaration Check Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Does this declaration still describe the machine? Free for anyone.",
        "tags": [
          "fleet"
        ]
      }
    },
    "/v1/fleet/declare": {
      "post": {
        "operationId": "declare_v1_fleet_declare_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeclareIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Declare V1 Fleet Declare Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Bind a declaration to a configuration",
        "tags": [
          "fleet"
        ]
      }
    },
    "/v1/fleet/machines": {
      "get": {
        "operationId": "machines_v1_fleet_machines_get",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Machines V1 Fleet Machines Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Every enrolled machine, worst coverage first",
        "tags": [
          "fleet"
        ]
      }
    },
    "/v1/fleet/report": {
      "get": {
        "description": "One self-contained HTML page: no network, no scripts, and it prints.\n\nEvery other output here is JSON or terminal text, which means the only\npeople who ever see it are engineers. This is the surface for everyone who\nsigns the cheque \u2014 and it carries every ``checks_skipped`` line verbatim,\nbecause a report that hides its own limits is worth less than no report.",
        "operationId": "report_v1_fleet_report_get",
        "parameters": [
          {
            "in": "query",
            "name": "organisation",
            "required": false,
            "schema": {
              "default": "",
              "title": "Organisation",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "prepared_by",
            "required": false,
            "schema": {
              "default": "",
              "title": "Prepared By",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "The whole fleet on one page a plant manager can read",
        "tags": [
          "fleet"
        ]
      }
    },
    "/v1/ledger/attest": {
      "post": {
        "description": "Sign three numbers, refuse the three cases that would be a lie.\n\nThe refusals return 409, not 422: a shorter ledger is not a malformed\nrequest, it is the finding. The body of the refusal is the sentence to put\nin front of whoever runs the database.",
        "operationId": "counter_sign_v1_ledger_attest_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttestIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Counter Sign V1 Ledger Attest Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Counter-sign the head of your ledger, without sending us the ledger",
        "tags": [
          "attestation"
        ]
      }
    },
    "/v1/ledger/attest/key": {
      "get": {
        "description": "Fetch the verifying key and its fingerprint.\n\nRead the fingerprint against one published somewhere this service does not\ncontrol. A signature checked against a key that arrived over the same\nconnection as the signature proves only that one party was consistent.",
        "operationId": "service_key_v1_ledger_attest_key_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Service Key V1 Ledger Attest Key Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "The public key this service counter-signs with. Free, forever.",
        "tags": [
          "attestation"
        ]
      }
    },
    "/v1/ledger/attest/log": {
      "get": {
        "operationId": "account_log_v1_ledger_attest_log_get",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Account Log V1 Ledger Attest Log Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Every attestation this service has made for your account",
        "tags": [
          "attestation"
        ]
      }
    },
    "/v1/ledger/attest/verify": {
      "post": {
        "description": "Verify signatures and internal consistency. No account, no quota.\n\nDeliberately free: the audience for an attestation is a regulator, an\ninsurer, or a customer's customer \u2014 none of whom will ever hold an API key\nhere, and all of whom must be able to check the thing without asking us.\n\nThis endpoint cannot see the caller's ledger, so it cannot answer the\nquestion that matters most \u2014 whether the ledger still holds what was signed\nfor. That join happens locally, with ``assurance attest verify --ledger``,\nand its absence here is named rather than glossed.",
        "operationId": "verify_v1_ledger_attest_verify_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/assurance__api__attest_routes__VerifyIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Verify V1 Ledger Attest Verify Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Check an attestation log. Free and unmetered, for anyone.",
        "tags": [
          "attestation"
        ]
      }
    },
    "/v1/ledger/verify": {
      "get": {
        "operationId": "get_ledger_verify_v1_ledger_verify_get",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Ledger Verify V1 Ledger Verify Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Verify the evidence chain",
        "tags": [
          "article 14"
        ]
      }
    },
    "/v1/machine/bundle/check": {
      "post": {
        "description": "Check somebody else's bundle without trusting them or us.\n\nDeliberately outside every paywall. If a bundle can only be checked by\nsomeone with a subscription, it is a vendor certificate rather than\nevidence, and the customer's auditor is right to ignore it.",
        "operationId": "check_bundle_v1_machine_bundle_check_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BundleCheckIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Check Bundle V1 Machine Bundle Check Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Re-verify an evidence bundle. Free, permanently, for anyone.",
        "tags": [
          "machine safety"
        ]
      }
    },
    "/v1/machine/separation": {
      "post": {
        "description": "S(t0) = Sh + Sr + Ss + C + Zd + Zr, term by term.\n\nTwo things this returns that a spreadsheet usually gets wrong: Sh runs over\nthe reaction time as well as the stop time, and Ss is flagged when the\nrequested speed is above the speed the stopping distance was measured at.",
        "operationId": "separation_v1_machine_separation_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SeparationIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Separation V1 Machine Separation Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "The protective separation distance your cell actually needs",
        "tags": [
          "machine safety"
        ]
      }
    },
    "/v1/machine/verify": {
      "post": {
        "description": "Compare what the machine did against what its manufacturer declared.",
        "operationId": "verify_run_v1_machine_verify_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/assurance__api__machine_routes__VerifyIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Verify Run V1 Machine Verify Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Verify a recorded run against a declared safety envelope",
        "tags": [
          "machine safety"
        ]
      }
    },
    "/v1/machinery/coverage": {
      "post": {
        "description": "The join: verification bundles against intervention records.\n\nA verification recorded before an intervention that touched an item\nimplementing the same safety function no longer describes the machine, and\nthis says so by name and by date.",
        "operationId": "coverage_v1_machinery_coverage_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CoverageIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Coverage V1 Machinery Coverage Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Which safety functions still have valid evidence",
        "tags": [
          "machinery"
        ]
      }
    },
    "/v1/machinery/diff": {
      "post": {
        "description": "Compare an as-declared baseline against what was found on the machine.\n\nA version string changing while the artefact stays byte-identical is graded\nadministrative; a hash changing on an item that implements a safety function\nis the finding. An item carrying no hash is reported as uncomparable \u2014 never\nas unchanged.",
        "operationId": "diff_v1_machinery_diff_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DiffIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Diff V1 Machinery Diff Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Is the machine still the configuration you signed off?",
        "tags": [
          "machinery"
        ]
      }
    },
    "/v1/machinery/intervention": {
      "post": {
        "description": "Record a change to safety-relevant software.\n\nA change with no authorisation and no re-validation is recorded, not\nrefused \u2014 and its findings travel with it. Refusing would push the change\nback to where it lives now, which is nowhere.",
        "operationId": "post_intervention_v1_machinery_intervention_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InterventionIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Post Intervention V1 Machinery Intervention Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Seal an intervention record",
        "tags": [
          "machinery"
        ]
      }
    },
    "/v1/machinery/manifest": {
      "post": {
        "operationId": "post_manifest_v1_machinery_manifest_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManifestIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Post Manifest V1 Machinery Manifest Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Seal a safety software manifest",
        "tags": [
          "machinery"
        ]
      }
    },
    "/v1/machinery/passport": {
      "post": {
        "operationId": "passport_v1_machinery_passport_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PassportIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Passport V1 Machinery Passport Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Seal the machine's evidence position",
        "tags": [
          "machinery"
        ]
      }
    },
    "/v1/machinery/passport/check": {
      "post": {
        "description": "Check somebody else's passport without trusting them or us.\n\nNo ledger is supplied over HTTP, so this confirms the seal and the passport's\ninternal consistency and says plainly that it confirmed nothing else. Use\n``assurance machinery check --ledger`` to check the records it names.",
        "operationId": "check_passport_v1_machinery_passport_check_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PassportCheckIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Check Passport V1 Machinery Passport Check Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Re-verify a machine passport. Free, permanently, for anyone.",
        "tags": [
          "machinery"
        ]
      }
    },
    "/v1/me": {
      "get": {
        "description": "What this key is entitled to, and what it has spent today.",
        "operationId": "get_me_v1_me_get",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Me V1 Me Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Your account, plan and usage",
        "tags": [
          "billing"
        ]
      }
    },
    "/v1/plans": {
      "get": {
        "description": "Every tier and exactly what it permits.\n\n``limits`` is generated from the same objects the service enforces, so the\npricing page cannot drift from the software.",
        "operationId": "get_plans_v1_plans_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {},
                  "title": "Response Get Plans V1 Plans Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "What is on sale",
        "tags": [
          "billing"
        ]
      }
    },
    "/v1/register": {
      "get": {
        "operationId": "get_register_report_v1_register_get",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Register Report V1 Register Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Readiness across every case",
        "tags": [
          "article 14"
        ]
      }
    },
    "/v1/register/breaches": {
      "get": {
        "operationId": "get_breaches_v1_register_breaches_get",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {},
                  "title": "Response Get Breaches V1 Register Breaches Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Deadlines missed or overdue",
        "tags": [
          "article 14"
        ]
      }
    },
    "/v1/spec/fields": {
      "get": {
        "description": "Free, and deliberately so. The specification is not the product.",
        "operationId": "get_fields_v1_spec_fields_get",
        "parameters": [
          {
            "in": "query",
            "name": "track",
            "required": true,
            "schema": {
              "pattern": "^(actively_exploited_vulnerability|severe_incident)$",
              "title": "Track",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "stage",
            "required": true,
            "schema": {
              "pattern": "^(early_warning|notification|final|intermediate)$",
              "title": "Stage",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {},
                  "title": "Response Get Fields V1 Spec Fields Get",
                  "type": "array"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "The platform field specification",
        "tags": [
          "free"
        ]
      }
    },
    "/v1/spec/validate": {
      "post": {
        "description": "The free tier, and the demo that sells the register behind it.\n\nNothing is recorded. A prospect can paste a draft filing and immediately\nsee which of the 39 fields are missing, which exceed a character limit,\nand which listed territories are not EU Member States.",
        "operationId": "post_validate_v1_spec_validate_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ValidateIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationOut"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Validate a draft submission without recording it",
        "tags": [
          "free"
        ]
      }
    },
    "/v1/supplier/advisory": {
      "post": {
        "operationId": "post_advisory_v1_supplier_advisory_post",
        "parameters": [
          {
            "in": "header",
            "name": "x-api-key",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Api-Key"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/assurance__api__supplier_routes__AdvisoryIn"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Post Advisory V1 Supplier Advisory Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Publish a signed advisory to your hosted feed (Supplier tier)",
        "tags": [
          "supplier"
        ]
      }
    },
    "/v1/supplier/feed/{supplier_account_id}": {
      "get": {
        "operationId": "get_feed_v1_supplier_feed__supplier_account_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "supplier_account_id",
            "required": true,
            "schema": {
              "title": "Supplier Account Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Read a hosted supplier feed (free, no account, forever)",
        "tags": [
          "supplier"
        ]
      }
    }
  },
  "tags": [
    {
      "description": "The field specification and the dry-run validator. No account needed.",
      "name": "free"
    },
    {
      "description": "The register. Needs a plan that includes it.",
      "name": "article 14"
    },
    {
      "description": "Verify a recorded machine run against its declared safety envelope. The separation calculator and the bundle re-checker need no account.",
      "name": "machine safety"
    },
    {
      "description": "Machinery Regulation Annex III 1.1.9: safety software identity, evidence of intervention, and which safety functions still have valid evidence.",
      "name": "machinery"
    },
    {
      "description": "Every enrolled machine at once: component advisories fanned out to serial numbers, and Declarations of Conformity bound to a configuration.",
      "name": "fleet"
    },
    {
      "description": "Publish a signed component advisory to a hosted feed (Supplier tier, sales-assigned). Reading any feed needs no account.",
      "name": "supplier"
    },
    {
      "description": "Plans, checkout, and your own account.",
      "name": "billing"
    },
    {
      "description": "Liveness and configuration.",
      "name": "service"
    }
  ]
}
