{"title":"API Migration Impact Pack","description":"Compare two OpenAPI versions against the API operations you actually use. Return breaking changes, affected calls, prioritized migration actions and regression-test vectors with specification evidence. POST baseline/candidate/consumer JSON; optional policy. Idempotency-Key required for paid requests. Unknown/unsupported => REVIEW. 202: reuse original authorization/key/input; never pay again. Schema: https://api.pay-forge.online/v2/api-migration-pack/schema Free example: https://api.pay-forge.online/v2/api-migration-pack/example","tags":["OpenAPI","API migration","breaking changes","compatibility","regression tests","API agents","dependency update"],"input":{"$defs":{"ConsumerManifest":{"additionalProperties":false,"properties":{"operations":{"items":{"$ref":"#/$defs/ConsumerOperation"},"maxItems":20,"minItems":1,"title":"Operations","type":"array"}},"required":["operations"],"title":"ConsumerManifest","type":"object"},"ConsumerOperation":{"additionalProperties":false,"properties":{"method":{"enum":["GET","PUT","POST","DELETE","OPTIONS","HEAD","PATCH","TRACE"],"title":"Method","type":"string"},"path":{"maxLength":512,"pattern":"^/","title":"Path","type":"string"},"parameters":{"anyOf":[{"items":{"$ref":"#/$defs/ParameterUse"},"maxItems":100,"type":"array"},{"type":"null"}],"default":null,"description":"Omitted means inherit documented baseline parameters; [] means no parameters used.","title":"Parameters"},"request_fields":{"anyOf":[{"items":{"$ref":"#/$defs/FieldUse"},"maxItems":100,"type":"array"},{"type":"null"}],"default":null,"description":"Omitted inherits the baseline request schema. Explicit fields narrow the declared usage.","title":"Request Fields"},"expected_response_fields":{"anyOf":[{"items":{"$ref":"#/$defs/FieldUse"},"maxItems":100,"type":"array"},{"type":"null"}],"default":null,"description":"Omitted inherits baseline response guarantees; explicit assertions define fields actually read.","title":"Expected Response Fields"},"response_statuses":{"anyOf":[{"items":{"type":"string"},"maxItems":30,"type":"array"},{"type":"null"}],"default":null,"title":"Response Statuses"},"request_content_types":{"anyOf":[{"items":{"type":"string"},"maxItems":20,"type":"array"},{"type":"null"}],"default":null,"title":"Request Content Types"},"response_content_types":{"anyOf":[{"items":{"type":"string"},"maxItems":20,"type":"array"},{"type":"null"}],"default":null,"title":"Response Content Types"},"sends_request_body":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Sends Request Body"}},"required":["method","path"],"title":"ConsumerOperation","type":"object"},"FieldUse":{"additionalProperties":false,"properties":{"pointer":{"description":"RFC 6901 instance pointer, e.g. /id or /user/email. Numeric array indices supported.","maxLength":512,"pattern":"^(?:/(?:[^~]|~[01])*)*$","title":"Pointer","type":"string"},"type":{"anyOf":[{"enum":["string","integer","number","boolean","object","array","null"],"type":"string"},{"type":"null"}],"default":null,"title":"Type"},"required":{"default":true,"title":"Required","type":"boolean"},"allows_null":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"title":"Allows Null"},"values":{"anyOf":[{"items":{},"maxItems":30,"minItems":1,"type":"array"},{"type":"null"}],"default":null,"description":"Known request values; response values are not interpreted as required output events.","title":"Values"}},"required":["pointer"],"title":"FieldUse","type":"object"},"ParameterUse":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"title":"Name","type":"string"},"location":{"enum":["query","header","path","cookie"],"title":"Location","type":"string"},"values":{"anyOf":[{"items":{},"maxItems":30,"minItems":1,"type":"array"},{"type":"null"}],"default":null,"title":"Values"}},"required":["name","location"],"title":"ParameterUse","type":"object"},"Policy":{"additionalProperties":false,"properties":{"ruleset_version":{"default":"consumer-migration/0.1.0","title":"Ruleset Version","type":"string"},"response_scope":{"default":"success","enum":["success","all"],"title":"Response Scope","type":"string"}},"title":"Policy","type":"object"}},"additionalProperties":false,"properties":{"baseline":{"additionalProperties":true,"description":"Old/baseline OpenAPI 3.0.x or 3.1.x object in JSON; not YAML, a URL, or a file. Combined body <= 2097152 bytes; <= 500 operations per spec. Never fetched or executed.","title":"Baseline","type":"object"},"candidate":{"additionalProperties":true,"description":"New/candidate OpenAPI 3.0.x or 3.1.x JSON object; local references only. External references are not fetched; unsupported semantics produce review evidence.","title":"Candidate","type":"object"},"consumer":{"$ref":"#/$defs/ConsumerManifest","description":"Required usage manifest: 1-20 unique method/path operations actually used. Omitted usage facets inherit baseline; explicit [] declares no usage."},"policy":{"$ref":"#/$defs/Policy","description":"Optional; defaults to consumer-migration/0.1.0 and success response scope. Unknown ruleset produces review evidence."}},"required":["baseline","candidate","consumer"],"title":"MigrationInput","type":"object"},"output":{"$defs":{"ContractTestVector":{"additionalProperties":false,"properties":{"test_id":{"title":"Test Id","type":"string"},"finding_id":{"title":"Finding Id","type":"string"},"method":{"enum":["GET","PUT","POST","DELETE","OPTIONS","HEAD","PATCH","TRACE"],"title":"Method","type":"string"},"path":{"title":"Path","type":"string"},"purpose":{"title":"Purpose","type":"string"},"execution":{"const":"OFFLINE_ONLY","default":"OFFLINE_ONLY","title":"Execution","type":"string"},"predicate":{"enum":["baseline_contract_unchanged","instance_accepted","consumer_field_guaranteed","effective_security_unchanged","request_parameter_presence","request_body_presence","required_property_presence","response_required_guarantee"],"title":"Predicate","type":"string"},"baseline_pointer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Baseline Pointer"},"candidate_pointer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Pointer"},"fixture":{"title":"Fixture"},"expected_baseline":{"enum":["PASS","FAIL","REVIEW"],"title":"Expected Baseline","type":"string"},"expected_candidate":{"enum":["PASS","FAIL","REVIEW"],"title":"Expected Candidate","type":"string"},"requires_network":{"const":false,"default":false,"title":"Requires Network","type":"boolean"},"limitation":{"title":"Limitation","type":"string"}},"required":["test_id","finding_id","method","path","purpose","predicate","baseline_pointer","candidate_pointer","fixture","expected_baseline","expected_candidate","limitation"],"title":"ContractTestVector","type":"object"},"Coverage":{"additionalProperties":false,"properties":{"scope":{"const":"DECLARED_CONSUMER_DOCUMENTED_CONTRACTS","title":"Scope","type":"string"},"complete":{"title":"Complete","type":"boolean"},"baseline_operations":{"title":"Baseline Operations","type":"integer"},"candidate_operations":{"title":"Candidate Operations","type":"integer"},"consumer_operations":{"title":"Consumer Operations","type":"integer"},"analyzed_operations":{"title":"Analyzed Operations","type":"integer"},"ignored_baseline_operations":{"title":"Ignored Baseline Operations","type":"integer"},"supported_rule_ids":{"items":{"type":"string"},"title":"Supported Rule Ids","type":"array"},"unsupported_count":{"title":"Unsupported Count","type":"integer"},"unknown_count":{"title":"Unknown Count","type":"integer"},"limits":{"additionalProperties":{"type":"integer"},"title":"Limits","type":"object"},"assumptions":{"items":{"type":"string"},"title":"Assumptions","type":"array"}},"required":["scope","complete","baseline_operations","candidate_operations","consumer_operations","analyzed_operations","ignored_baseline_operations","supported_rule_ids","unsupported_count","unknown_count","limits","assumptions"],"title":"Coverage","type":"object"},"EvidenceIssue":{"additionalProperties":false,"properties":{"code":{"title":"Code","type":"string"},"source":{"enum":["baseline","candidate","consumer","policy"],"title":"Source","type":"string"},"pointer":{"title":"Pointer","type":"string"},"reason":{"title":"Reason","type":"string"},"method":{"anyOf":[{"enum":["GET","PUT","POST","DELETE","OPTIONS","HEAD","PATCH","TRACE"],"type":"string"},{"type":"null"}],"default":null,"title":"Method"},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Path"}},"required":["code","source","pointer","reason"],"title":"EvidenceIssue","type":"object"},"Finding":{"additionalProperties":false,"properties":{"finding_id":{"title":"Finding Id","type":"string"},"rule_id":{"title":"Rule Id","type":"string"},"severity":{"enum":["CRITICAL","HIGH","MEDIUM"],"title":"Severity","type":"string"},"method":{"enum":["GET","PUT","POST","DELETE","OPTIONS","HEAD","PATCH","TRACE"],"title":"Method","type":"string"},"path":{"title":"Path","type":"string"},"baseline_pointer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Baseline Pointer"},"candidate_pointer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Pointer"},"baseline_present":{"title":"Baseline Present","type":"boolean"},"candidate_present":{"title":"Candidate Present","type":"boolean"},"before":{"title":"Before"},"after":{"title":"After"},"why_this_breaks_this_consumer":{"title":"Why This Breaks This Consumer","type":"string"},"recommended_migration_action":{"title":"Recommended Migration Action","type":"string"},"confidence":{"enum":["HIGH","LIMITED"],"title":"Confidence","type":"string"},"evidence_status":{"enum":["DOCUMENTED_CONTRACT","REQUIRES_REVIEW"],"title":"Evidence Status","type":"string"},"impact_basis":{"enum":["EXPLICIT_CONSUMER","INHERITED_BASELINE","UNAVOIDABLE_NEW_REQUIREMENT"],"title":"Impact Basis","type":"string"}},"required":["finding_id","rule_id","severity","method","path","baseline_pointer","candidate_pointer","baseline_present","candidate_present","before","after","why_this_breaks_this_consumer","recommended_migration_action","confidence","evidence_status","impact_basis"],"title":"Finding","type":"object"},"ImpactSummary":{"additionalProperties":false,"properties":{"findings":{"title":"Findings","type":"integer"},"affected_operations":{"title":"Affected Operations","type":"integer"},"blocking_findings":{"title":"Blocking Findings","type":"integer"},"review_findings":{"title":"Review Findings","type":"integer"},"critical_findings":{"title":"Critical Findings","type":"integer"}},"required":["findings","affected_operations","blocking_findings","review_findings","critical_findings"],"title":"ImpactSummary","type":"object"},"InputHashes":{"additionalProperties":false,"properties":{"baseline":{"pattern":"^[0-9a-f]{64}$","title":"Baseline","type":"string"},"candidate":{"pattern":"^[0-9a-f]{64}$","title":"Candidate","type":"string"},"consumer":{"pattern":"^[0-9a-f]{64}$","title":"Consumer","type":"string"},"policy":{"pattern":"^[0-9a-f]{64}$","title":"Policy","type":"string"}},"required":["baseline","candidate","consumer","policy"],"title":"InputHashes","type":"object"},"MigrationTask":{"additionalProperties":false,"properties":{"task_id":{"title":"Task Id","type":"string"},"priority":{"title":"Priority","type":"integer"},"finding_id":{"title":"Finding Id","type":"string"},"method":{"enum":["GET","PUT","POST","DELETE","OPTIONS","HEAD","PATCH","TRACE"],"title":"Method","type":"string"},"path":{"title":"Path","type":"string"},"action":{"title":"Action","type":"string"},"acceptance_check":{"title":"Acceptance Check","type":"string"}},"required":["task_id","priority","finding_id","method","path","action","acceptance_check"],"title":"MigrationTask","type":"object"}},"additionalProperties":false,"properties":{"decision":{"description":"REVIEW takes precedence for unsupported/unknown evidence or medium findings; otherwise blocking findings yield BLOCK_RELEASE. NO_KNOWN_BREAK covers declared documented contracts only.","enum":["BLOCK_RELEASE","REVIEW","NO_KNOWN_BREAK"],"title":"Decision","type":"string"},"severity_score":{"description":"Maximum deterministic rule severity: 0 none, 40 medium or incomplete coverage, 80 high, 100 critical; not a probability.","maximum":100,"minimum":0,"title":"Severity Score","type":"integer"},"severity_score_meaning":{"title":"Severity Score Meaning","type":"string"},"consumer_impact_summary":{"$ref":"#/$defs/ImpactSummary"},"affected_operations":{"description":"Breaking-change findings for consumed method/path operations. baseline_pointer and candidate_pointer are RFC 6901 pointers into the respective input specifications; *_present distinguishes absent values from null.","items":{"$ref":"#/$defs/Finding"},"title":"Affected Operations","type":"array"},"prioritized_migration_tasks":{"items":{"$ref":"#/$defs/MigrationTask"},"title":"Prioritized Migration Tasks","type":"array"},"contract_test_vectors":{"items":{"$ref":"#/$defs/ContractTestVector"},"title":"Contract Test Vectors","type":"array"},"unsupported_constructs":{"items":{"$ref":"#/$defs/EvidenceIssue"},"title":"Unsupported Constructs","type":"array"},"explicit_unknowns":{"items":{"$ref":"#/$defs/EvidenceIssue"},"title":"Explicit Unknowns","type":"array"},"coverage":{"$ref":"#/$defs/Coverage"},"input_hashes":{"$ref":"#/$defs/InputHashes"},"ruleset_version":{"title":"Ruleset Version","type":"string"}},"required":["decision","severity_score","severity_score_meaning","consumer_impact_summary","affected_operations","prioritized_migration_tasks","contract_test_vectors","unsupported_constructs","explicit_unknowns","coverage","input_hashes","ruleset_version"],"title":"PackOutput","type":"object"},"errors":{"additionalProperties":false,"properties":{"error":{"title":"Error","type":"string"},"new_payment_authorized":{"anyOf":[{"const":false,"type":"boolean"},{"type":"null"}],"default":null,"title":"New Payment Authorized"}},"required":["error"],"title":"ErrorResponse","type":"object"},"pending":{"additionalProperties":false,"properties":{"status":{"const":"pending","title":"Status","type":"string"},"purchase_id":{"title":"Purchase Id","type":"string"},"new_payment_authorized":{"const":false,"title":"New Payment Authorized","type":"boolean"}},"required":["status","purchase_id","new_payment_authorized"],"title":"PendingResponse","type":"object"},"failed":{"additionalProperties":false,"properties":{"status":{"const":"failed","title":"Status","type":"string"},"purchase_id":{"title":"Purchase Id","type":"string"},"new_payment_authorized":{"const":false,"title":"New Payment Authorized","type":"boolean"}},"required":["status","purchase_id","new_payment_authorized"],"title":"FailedResponse","type":"object"},"challenge":{"$defs":{"ChallengeResource":{"additionalProperties":false,"properties":{"url":{"const":"https://api.pay-forge.online/v2/api-migration-pack","title":"Url","type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Description"},"mimeType":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Mimetype"},"serviceName":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Servicename"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"title":"Tags"},"iconUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Iconurl"}},"required":["url"],"title":"ChallengeResource","type":"object"},"ChallengeTerms":{"additionalProperties":false,"properties":{"scheme":{"const":"exact","title":"Scheme","type":"string"},"network":{"const":"eip155:8453","title":"Network","type":"string"},"amount":{"const":"20000","title":"Amount","type":"string"},"asset":{"title":"Asset","type":"string"},"payTo":{"title":"Payto","type":"string"},"maxTimeoutSeconds":{"title":"Maxtimeoutseconds","type":"integer"},"extra":{"additionalProperties":true,"title":"Extra","type":"object"}},"required":["scheme","network","amount","asset","payTo","maxTimeoutSeconds","extra"],"title":"ChallengeTerms","type":"object"}},"additionalProperties":false,"properties":{"x402Version":{"const":2,"title":"X402Version","type":"integer"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Error"},"resource":{"$ref":"#/$defs/ChallengeResource"},"accepts":{"items":{"$ref":"#/$defs/ChallengeTerms"},"maxItems":1,"minItems":1,"title":"Accepts","type":"array"},"extensions":{"additionalProperties":true,"title":"Extensions","type":"object"}},"required":["x402Version","resource","accepts","extensions"],"title":"ChallengeResponse","type":"object"},"idempotency_key_required":true,"formats":["application/json; OpenAPI 3.0.x / 3.1.x objects"],"limits":{"combined_bytes":2097152,"operations_per_spec":500,"consumer_operations":20,"json_depth":48,"json_nodes":60000,"work_units":30000,"findings":500,"evidence_bytes":1048576,"reference_chain":24,"concurrent_requests_per_worker":2,"body_deadline_seconds":5,"analysis_deadline_seconds":5},"ruleset_version":"consumer-migration/0.1.0","unsupported_cases":["YAML, URL and file inputs","Remote references (never fetched)","Callbacks","Reference cycles, semantic $ref siblings and chains beyond 24","Unsupported schema keywords, custom dialects, dictionary value schemas and media encodings"],"partial_behavior":"Unsupported constructs, unknowns or exhausted analysis budgets set coverage.complete=false. Decision is REVIEW when coverage is incomplete, even if blocking findings were detected; inspect the findings. NO_KNOWN_BREAK is scoped to declared operations and documented contracts, never a safety certification.","error_behavior":{"400":"Malformed payment/header or credentials unsupported","408":"Body/analysis deadline exceeded","409":"Purchase conflict or failed purchase; never create replacement payment","413":"Body/tree/operation limit","415":"JSON required; compression unsupported","422":"Malformed input/OpenAPI","429":"Worker capacity","431":"Header limit","503":"Storage/ledger unavailable; reconcile original purchase"},"pending_behavior":"202: reuse original authorization, Idempotency-Key and inputs. Never create a new payment.","payment":{"price_usdc":"0.020000","amount":"20000","network":"eip155:8453","asset":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","payTo":"0xd8dd9fc8c143207ddbe84e1e9237f11a69814cb5"},"example_url":"https://api.pay-forge.online/v2/api-migration-pack/example"}