{
  "product": "BLACKPROOF",
  "apiVersion": "blackproof-public-api-v0.1.0-alpha",
  "resource": "questionnaire-import-contract",
  "posture": {
    "publicSurface": true,
    "defaultMode": "lecture-seule",
    "noUploadByDefault": true,
    "sensitiveEvidenceAccepted": false
  },
  "disclaimer": "BLACKPROOF structure des registres de préparation cyber. L'API publique ne fournit ni certification, ni avis juridique, ni audit qualifié, ni garantie de conformité réglementaire.",
  "version": "blackproof-xlsx-import-v1",
  "questionnaireImportVersion": "blackproof-questionnaire-import-v0.2.0-alpha",
  "processing": {
    "location": "browser-local",
    "networkUpload": false,
    "isolatedParser": true,
    "terminationOnTimeout": true,
    "formulasExecuted": false
  },
  "accepted": {
    "extensions": [
      ".txt",
      ".md",
      ".csv",
      ".tsv",
      ".xlsx"
    ],
    "xlsx": {
      "extension": ".xlsx",
      "mimeTypes": [
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "",
        "application/octet-stream",
        "application/zip"
      ],
      "mimePolicy": "MIME is a compatibility hint only. The .xlsx extension, ZIP signature, bounded ZIP inventory and standard OOXML workbook structure remain mandatory.",
      "zipSignatureRequired": true
    }
  },
  "refused": {
    "spreadsheetExtensions": [
      ".xls",
      ".xlsm",
      ".xlsb",
      ".xlam",
      ".ods"
    ],
    "activeXlsxParts": [
      "VBA",
      "OLE embeddings",
      "ActiveX",
      "custom UI"
    ]
  },
  "zipPreflight": {
    "profile": "blackproof-xlsx-zip-v1",
    "maxCompressedBytes": 10000000,
    "maxExpandedBytes": 50000000,
    "maxEntries": 256,
    "maxCompressionRatio": 100,
    "maxSharedStringsBytes": 10000000,
    "maxWorksheetBytes": 8000000,
    "rejects": [
      "absolute paths",
      "parent traversal",
      "duplicate entries",
      "encrypted entries",
      "ZIP64",
      "overlapping entries"
    ],
    "acceptsWhenStructurallyValid": [
      "ZIP extra fields",
      "ZIP data descriptors"
    ]
  },
  "workbookLimits": {
    "maxSheets": 10,
    "maxRowsPerSheet": 10000,
    "maxColumnsPerSheet": 100,
    "maxNonEmptyCells": 50000,
    "maxCellCharacters": 10000,
    "maxQuestions": 250,
    "processingTimeoutMs": 12000
  },
  "extraction": {
    "imports": [
      "visible sheet names",
      "text cell values",
      "question column candidates",
      "cached formula values when present"
    ],
    "ignores": [
      "styles",
      "images",
      "charts",
      "comments",
      "external links",
      "data connections",
      "pivot tables",
      "hidden sheets"
    ],
    "formulaPolicy": "Never execute formulas. A parser may retain an already-cached value; formula cells without one are empty and reported.",
    "questionSourceLabels": [
      "literal-cell",
      "cached-formula-value"
    ],
    "externalSurfaceCounters": [
      "externalLink OOXML parts",
      "TargetMode=External relationships",
      "connections.xml parts",
      "queryTable parts"
    ],
    "requiresHumanSheetConfirmation": true
  },
  "provenance": {
    "originalFilenameRetained": true,
    "originalFileSha256Retained": true,
    "normalizedQuestionnaireSha256Retained": true,
    "localSourceImportRetained": true,
    "masterZipSourceImportSidecar": "source-import.json",
    "sourceImportProfile": "blackproof-xlsx-import-v1",
    "sourceImportSchema": "https://blackproof.fr/schemas/source-import/v1.schema.json",
    "sourceImportSchemaSha256": "b5889febaad8870d21cc2b74b11ab2d59401ca5318abf94e6f5d969207fbd7f8",
    "verificationScope": "Internal sidecar consistency only unless the original XLSX is also supplied and replayed by a compatible verifier."
  }
}