{
  "suite_type": "contract_test_suite",
  "suite_version": "1.0",
  "name": "Przykładowy lifecycle eCMR",
  "provider": "Provider sandbox — przykład",
  "environment": "captured_fixture",
  "provider_api_version": "sandbox-2026-09",
  "adapter_version": "adapter-demo-1.0",
  "mapping_version": "mapping-demo-1.0",
  "schema_version": "schema-demo-1.0",
  "fixture_notice": "Dane demonstracyjne. Wynik nie potwierdza działania żadnego rzeczywistego providera.",
  "cases": [
    {
      "id": "lifecycle-create",
      "operation": "create",
      "depends_on": null,
      "request": {
        "method": "POST",
        "path": "/documents",
        "body": { "shipment_external_id": "DEMO-001" }
      },
      "response": {
        "status": 201,
        "body": { "document_id": "demo_doc_001", "lifecycle_status": "draft" }
      },
      "assertions": [
        { "target": "response.status", "operator": "equals", "expected": 201 },
        { "target": "response.body.document_id", "operator": "not_empty" },
        { "target": "response.body.lifecycle_status", "operator": "one_of", "expected": ["draft", "created"] }
      ]
    },
    {
      "id": "lifecycle-update",
      "operation": "update",
      "depends_on": "lifecycle-create",
      "request": {
        "method": "PATCH",
        "path": "/documents/demo_doc_001",
        "body": { "package_count": 12 }
      },
      "response": {
        "status": 200,
        "body": { "document_id": "demo_doc_001", "version": 2, "package_count": 12 }
      },
      "assertions": [
        { "target": "response.status", "operator": "equals", "expected": 200 },
        { "target": "response.body.version", "operator": "equals", "expected": 2 },
        { "target": "response.body.package_count", "operator": "equals", "expected": 12 }
      ]
    },
    {
      "id": "lifecycle-share",
      "operation": "share",
      "depends_on": "lifecycle-update",
      "request": {
        "method": "POST",
        "path": "/documents/demo_doc_001/share",
        "body": { "recipient_role": "consignee" }
      },
      "response": {
        "status": 200,
        "body": { "shared": true, "share_reference": "demo_share_001" }
      },
      "assertions": [
        { "target": "response.status", "operator": "equals", "expected": 200 },
        { "target": "response.body.shared", "operator": "equals", "expected": true },
        { "target": "response.body.share_reference", "operator": "not_empty" }
      ]
    },
    {
      "id": "lifecycle-status",
      "operation": "status",
      "depends_on": "lifecycle-share",
      "request": {
        "method": "GET",
        "path": "/documents/demo_doc_001/status"
      },
      "response": {
        "status": 200,
        "body": { "lifecycle_status": "signed" }
      },
      "assertions": [
        { "target": "response.status", "operator": "equals", "expected": 200 },
        { "target": "response.body.lifecycle_status", "operator": "one_of", "expected": ["in_transit", "signed", "completed"] }
      ]
    },
    {
      "id": "lifecycle-revoke",
      "operation": "revoke",
      "depends_on": "lifecycle-status",
      "request": {
        "method": "POST",
        "path": "/documents/demo_doc_001/revoke",
        "body": { "reason_code": "demo_correction" }
      },
      "response": {
        "status": 204,
        "body": null
      },
      "assertions": [
        { "target": "response.status", "operator": "equals", "expected": 204 }
      ]
    }
  ]
}
