{
  "info": {
    "name": "Mobile-ID Sign Offline Reference",
    "description": "Offline integration reference, not a production contract. New schema details are proposals for this simulator only. Production servers, authentication, scopes, webhook names, algorithms and retry schedules remain unconfirmed.",
    "version": "8.0-reference",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [
          "if (pm.variables.get(\"allow_live_requests\") !== \"APPROVED_BY_OWNER\") { throw new Error(\"Reference collection: live requests disabled. Configure only after contract approval.\"); }"
        ]
      }
    }
  ],
  "item": [
    {
      "name": "Create a signing transaction",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{base_url}}/v1/signing-transactions",
        "description": "Prepare an approved document and signer context in the source system. Store transaction_id on 202; continue following state or agreed events. A lost response is an uncertain outcome, so reconcile before resubmitting. Authentication, authority, idempotency transport and live routing require an approved deployment contract.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"document_ref\": \"doc_demo_001\",\n  \"signer_ref\": \"subject_demo_001\",\n  \"purpose\": \"contract-approval\",\n  \"route\": \"AUTO\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      },
      "response": [
        {
          "name": "Reference 202",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signing-transactions",
            "description": "Prepare an approved document and signer context in the source system. Store transaction_id on 202; continue following state or agreed events. A lost response is an uncertain outcome, so reconcile before resubmitting. Authentication, authority, idempotency transport and live routing require an approved deployment contract.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"document_ref\": \"doc_demo_001\",\n  \"signer_ref\": \"subject_demo_001\",\n  \"purpose\": \"contract-approval\",\n  \"route\": \"AUTO\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "status": "Accepted for the reference user-action flow; signing is not complete.",
          "code": 202,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"transaction_id\": \"sig_txn_demo_001\",\n  \"state\": \"WAITING_USER_ACTION\",\n  \"model_status\": \"SIMULATED_ONLY\"\n}"
        },
        {
          "name": "Reference 400",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signing-transactions",
            "description": "Prepare an approved document and signer context in the source system. Store transaction_id on 202; continue following state or agreed events. A lost response is an uncertain outcome, so reconcile before resubmitting. Authentication, authority, idempotency transport and live routing require an approved deployment contract.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"document_ref\": \"doc_demo_001\",\n  \"signer_ref\": \"subject_demo_001\",\n  \"purpose\": \"contract-approval\",\n  \"route\": \"AUTO\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "status": "REFERENCE ONLY: Malformed request.",
          "code": 400,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"code\": \"INVALID_REQUEST\",\n  \"message\": \"Malformed request.\",\n  \"model_status\": \"SIMULATED_ONLY\"\n}"
        },
        {
          "name": "Reference 401",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signing-transactions",
            "description": "Prepare an approved document and signer context in the source system. Store transaction_id on 202; continue following state or agreed events. A lost response is an uncertain outcome, so reconcile before resubmitting. Authentication, authority, idempotency transport and live routing require an approved deployment contract.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"document_ref\": \"doc_demo_001\",\n  \"signer_ref\": \"subject_demo_001\",\n  \"purpose\": \"contract-approval\",\n  \"route\": \"AUTO\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "status": "REFERENCE ONLY: Production authentication requires an approved contract.",
          "code": 401,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"code\": \"AUTHENTICATION_REQUIRED\",\n  \"message\": \"Production authentication requires an approved contract.\",\n  \"model_status\": \"SIMULATED_ONLY\"\n}"
        },
        {
          "name": "Reference 409",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signing-transactions",
            "description": "Prepare an approved document and signer context in the source system. Store transaction_id on 202; continue following state or agreed events. A lost response is an uncertain outcome, so reconcile before resubmitting. Authentication, authority, idempotency transport and live routing require an approved deployment contract.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"document_ref\": \"doc_demo_001\",\n  \"signer_ref\": \"subject_demo_001\",\n  \"purpose\": \"contract-approval\",\n  \"route\": \"AUTO\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "status": "REFERENCE ONLY: Conflicting submission; reconcile with the stored transaction.",
          "code": 409,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"code\": \"IDEMPOTENCY_CONFLICT\",\n  \"message\": \"Conflicting submission; reconcile with the stored transaction.\",\n  \"model_status\": \"SIMULATED_ONLY\"\n}"
        },
        {
          "name": "Reference 422",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signing-transactions",
            "description": "Prepare an approved document and signer context in the source system. Store transaction_id on 202; continue following state or agreed events. A lost response is an uncertain outcome, so reconcile before resubmitting. Authentication, authority, idempotency transport and live routing require an approved deployment contract.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"document_ref\": \"doc_demo_001\",\n  \"signer_ref\": \"subject_demo_001\",\n  \"purpose\": \"contract-approval\",\n  \"route\": \"AUTO\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "status": "REFERENCE ONLY: Reference input failed validation.",
          "code": 422,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"code\": \"VALIDATION_ERROR\",\n  \"message\": \"Reference input failed validation.\",\n  \"model_status\": \"SIMULATED_ONLY\"\n}"
        },
        {
          "name": "Reference 503",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signing-transactions",
            "description": "Prepare an approved document and signer context in the source system. Store transaction_id on 202; continue following state or agreed events. A lost response is an uncertain outcome, so reconcile before resubmitting. Authentication, authority, idempotency transport and live routing require an approved deployment contract.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"document_ref\": \"doc_demo_001\",\n  \"signer_ref\": \"subject_demo_001\",\n  \"purpose\": \"contract-approval\",\n  \"route\": \"AUTO\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "status": "REFERENCE ONLY: Provider outcome requires reconciliation before retry.",
          "code": 503,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"code\": \"PROVIDER_TEMPORARY_FAILURE\",\n  \"message\": \"Provider outcome requires reconciliation before retry.\",\n  \"model_status\": \"SIMULATED_ONLY\"\n}"
        }
      ]
    },
    {
      "name": "Read transaction state",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{base_url}}/v1/signing-transactions/{{transaction_id}}",
        "description": "Correlate the stored reference with the latest authoritative transaction state. COMPLETED is an illustrative simulator state, not a production state guarantee. A missing transaction requires investigation; it is not permission to create a replacement automatically."
      },
      "response": [
        {
          "name": "Reference 200",
          "originalRequest": {
            "method": "GET",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signing-transactions/{{transaction_id}}",
            "description": "Correlate the stored reference with the latest authoritative transaction state. COMPLETED is an illustrative simulator state, not a production state guarantee. A missing transaction requires investigation; it is not permission to create a replacement automatically."
          },
          "status": "Illustrative transaction state.",
          "code": 200,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"transaction_id\": \"sig_txn_demo_001\",\n  \"state\": \"COMPLETED\",\n  \"model_status\": \"SIMULATED_ONLY\"\n}"
        },
        {
          "name": "Reference 401",
          "originalRequest": {
            "method": "GET",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signing-transactions/{{transaction_id}}",
            "description": "Correlate the stored reference with the latest authoritative transaction state. COMPLETED is an illustrative simulator state, not a production state guarantee. A missing transaction requires investigation; it is not permission to create a replacement automatically."
          },
          "status": "REFERENCE ONLY: Production authentication requires an approved contract.",
          "code": 401,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"code\": \"AUTHENTICATION_REQUIRED\",\n  \"message\": \"Production authentication requires an approved contract.\",\n  \"model_status\": \"SIMULATED_ONLY\"\n}"
        },
        {
          "name": "Reference 404",
          "originalRequest": {
            "method": "GET",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signing-transactions/{{transaction_id}}",
            "description": "Correlate the stored reference with the latest authoritative transaction state. COMPLETED is an illustrative simulator state, not a production state guarantee. A missing transaction requires investigation; it is not permission to create a replacement automatically."
          },
          "status": "REFERENCE ONLY: Reference transaction not found.",
          "code": 404,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"code\": \"NOT_FOUND\",\n  \"message\": \"Reference transaction not found.\",\n  \"model_status\": \"SIMULATED_ONLY\"\n}"
        },
        {
          "name": "Reference 503",
          "originalRequest": {
            "method": "GET",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signing-transactions/{{transaction_id}}",
            "description": "Correlate the stored reference with the latest authoritative transaction state. COMPLETED is an illustrative simulator state, not a production state guarantee. A missing transaction requires investigation; it is not permission to create a replacement automatically."
          },
          "status": "REFERENCE ONLY: Provider outcome requires reconciliation before retry.",
          "code": 503,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"code\": \"PROVIDER_TEMPORARY_FAILURE\",\n  \"message\": \"Provider outcome requires reconciliation before retry.\",\n  \"model_status\": \"SIMULATED_ONLY\"\n}"
        }
      ]
    },
    {
      "name": "Demonstrate verification handoff",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{base_url}}/v1/signatures/verify",
        "description": "Proposed reference-only verification model. This offline explorer returns a demonstration result without inspecting signatures, certificates or revocation. Live verification requires an approved document/signature profile and provider contract.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"document_ref\": \"doc_demo_001\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      },
      "response": [
        {
          "name": "Reference 200",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signatures/verify",
            "description": "Proposed reference-only verification model. This offline explorer returns a demonstration result without inspecting signatures, certificates or revocation. Live verification requires an approved document/signature profile and provider contract.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"document_ref\": \"doc_demo_001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "status": "Simulated handoff result; not signature-validity evidence.",
          "code": 200,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"model_status\": \"SIMULATED_ONLY\",\n  \"verification_result\": \"SIMULATED_PASS\"\n}"
        },
        {
          "name": "Reference 400",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signatures/verify",
            "description": "Proposed reference-only verification model. This offline explorer returns a demonstration result without inspecting signatures, certificates or revocation. Live verification requires an approved document/signature profile and provider contract.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"document_ref\": \"doc_demo_001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "status": "REFERENCE ONLY: Malformed request.",
          "code": 400,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"code\": \"INVALID_REQUEST\",\n  \"message\": \"Malformed request.\",\n  \"model_status\": \"SIMULATED_ONLY\"\n}"
        },
        {
          "name": "Reference 401",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signatures/verify",
            "description": "Proposed reference-only verification model. This offline explorer returns a demonstration result without inspecting signatures, certificates or revocation. Live verification requires an approved document/signature profile and provider contract.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"document_ref\": \"doc_demo_001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "status": "REFERENCE ONLY: Production authentication requires an approved contract.",
          "code": 401,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"code\": \"AUTHENTICATION_REQUIRED\",\n  \"message\": \"Production authentication requires an approved contract.\",\n  \"model_status\": \"SIMULATED_ONLY\"\n}"
        },
        {
          "name": "Reference 422",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signatures/verify",
            "description": "Proposed reference-only verification model. This offline explorer returns a demonstration result without inspecting signatures, certificates or revocation. Live verification requires an approved document/signature profile and provider contract.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"document_ref\": \"doc_demo_001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "status": "REFERENCE ONLY: Reference input failed validation.",
          "code": 422,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"code\": \"VALIDATION_ERROR\",\n  \"message\": \"Reference input failed validation.\",\n  \"model_status\": \"SIMULATED_ONLY\"\n}"
        },
        {
          "name": "Reference 503",
          "originalRequest": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{base_url}}/v1/signatures/verify",
            "description": "Proposed reference-only verification model. This offline explorer returns a demonstration result without inspecting signatures, certificates or revocation. Live verification requires an approved document/signature profile and provider contract.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"document_ref\": \"doc_demo_001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "status": "REFERENCE ONLY: Provider outcome requires reconciliation before retry.",
          "code": 503,
          "header": [
            {
              "key": "Content-Type",
              "value": "application/json"
            }
          ],
          "body": "{\n  \"code\": \"PROVIDER_TEMPORARY_FAILURE\",\n  \"message\": \"Provider outcome requires reconciliation before retry.\",\n  \"model_status\": \"SIMULATED_ONLY\"\n}"
        }
      ]
    }
  ]
}