@sourcey/catalog-verifier 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/SBOM.cdx.json +3 -3
- package/SOURCEY-CLOSURE.json +697 -217
- package/SOURCEY-LICENSE-POLICY.json +19 -1
- package/SOURCEY-TOOLCHAIN.json +1 -1
- package/THIRD_PARTY_NOTICES.json +1 -1
- package/dist/contracts/agent-readiness/src/declaration.d.ts +30 -30
- package/dist/contracts/agent-readiness/src/index.d.ts +82 -74
- package/dist/contracts/agent-readiness/src/index.d.ts.map +1 -1
- package/dist/contracts/agent-readiness/src/index.js +29 -8
- package/dist/contracts/agent-readiness/src/index.js.map +1 -1
- package/dist/contracts/agent-readiness/src/method-pack.d.ts +1 -0
- package/dist/contracts/agent-readiness/src/method-pack.d.ts.map +1 -1
- package/dist/contracts/agent-readiness/src/method-pack.js.map +1 -1
- package/dist/contracts/api/src/index.d.ts +11602 -6013
- package/dist/contracts/api/src/index.d.ts.map +1 -1
- package/dist/contracts/api/src/index.js +156 -16
- package/dist/contracts/api/src/index.js.map +1 -1
- package/dist/contracts/artifact/src/index.d.ts +114 -64
- package/dist/contracts/artifact/src/index.d.ts.map +1 -1
- package/dist/contracts/artifact/src/index.js +15 -4
- package/dist/contracts/artifact/src/index.js.map +1 -1
- package/dist/contracts/assets/src/index.d.ts +30 -0
- package/dist/contracts/assets/src/index.d.ts.map +1 -1
- package/dist/contracts/assets/src/index.js +16 -0
- package/dist/contracts/assets/src/index.js.map +1 -1
- package/dist/contracts/assurance/src/index.d.ts +149 -0
- package/dist/contracts/assurance/src/index.d.ts.map +1 -0
- package/dist/contracts/assurance/src/index.js +146 -0
- package/dist/contracts/assurance/src/index.js.map +1 -0
- package/dist/contracts/authoring/src/index.d.ts.map +1 -1
- package/dist/contracts/authoring/src/index.js +9 -1
- package/dist/contracts/authoring/src/index.js.map +1 -1
- package/dist/contracts/billing/src/index.d.ts +54 -0
- package/dist/contracts/billing/src/index.d.ts.map +1 -1
- package/dist/contracts/billing/src/index.js +77 -11
- package/dist/contracts/billing/src/index.js.map +1 -1
- package/dist/contracts/catalog-verifier/src/index.d.ts +49 -0
- package/dist/contracts/catalog-verifier/src/index.d.ts.map +1 -1
- package/dist/contracts/catalog-verifier/src/index.js +31 -3
- package/dist/contracts/catalog-verifier/src/index.js.map +1 -1
- package/dist/contracts/commercial-work/src/index.d.ts +1330 -392
- package/dist/contracts/commercial-work/src/index.d.ts.map +1 -1
- package/dist/contracts/commercial-work/src/index.js +554 -111
- package/dist/contracts/commercial-work/src/index.js.map +1 -1
- package/dist/contracts/datasets/src/index.d.ts +762 -0
- package/dist/contracts/datasets/src/index.d.ts.map +1 -0
- package/dist/contracts/datasets/src/index.js +80 -0
- package/dist/contracts/datasets/src/index.js.map +1 -0
- package/dist/contracts/events/src/index.d.ts +67 -56
- package/dist/contracts/events/src/index.d.ts.map +1 -1
- package/dist/contracts/events/src/index.js +100 -53
- package/dist/contracts/events/src/index.js.map +1 -1
- package/dist/contracts/evidence/src/index.d.ts +4 -0
- package/dist/contracts/evidence/src/index.d.ts.map +1 -1
- package/dist/contracts/evidence/src/index.js +1 -0
- package/dist/contracts/evidence/src/index.js.map +1 -1
- package/dist/contracts/funded-work/src/index.d.ts +2 -2
- package/dist/contracts/funded-work/src/index.js +1 -1
- package/dist/contracts/funded-work/src/index.js.map +1 -1
- package/dist/contracts/observations/src/index.d.ts +2 -2
- package/dist/contracts/observations/src/index.d.ts.map +1 -1
- package/dist/contracts/observations/src/index.js +2 -2
- package/dist/contracts/observations/src/index.js.map +1 -1
- package/dist/contracts/policies/src/index.d.ts.map +1 -1
- package/dist/contracts/policies/src/index.js +3 -0
- package/dist/contracts/policies/src/index.js.map +1 -1
- package/dist/contracts/publication/src/index.d.ts +2472 -7
- package/dist/contracts/publication/src/index.d.ts.map +1 -1
- package/dist/contracts/publication/src/index.js +73 -5
- package/dist/contracts/publication/src/index.js.map +1 -1
- package/dist/contracts/release/src/index.d.ts +109 -42
- package/dist/contracts/release/src/index.d.ts.map +1 -1
- package/dist/contracts/release/src/index.js +49 -1
- package/dist/contracts/release/src/index.js.map +1 -1
- package/dist/contracts/revisions/src/index.d.ts +16 -0
- package/dist/contracts/revisions/src/index.d.ts.map +1 -1
- package/dist/contracts/revisions/src/index.js +49 -1
- package/dist/contracts/revisions/src/index.js.map +1 -1
- package/dist/contracts/routes/src/index.d.ts +66 -0
- package/dist/contracts/routes/src/index.d.ts.map +1 -1
- package/dist/contracts/routes/src/index.js +102 -4
- package/dist/contracts/routes/src/index.js.map +1 -1
- package/dist/contracts/routes/src/public-route-allocations.generated.d.ts +1 -1
- package/dist/contracts/routes/src/public-route-allocations.generated.d.ts.map +1 -1
- package/dist/contracts/routes/src/public-route-allocations.generated.js +3 -0
- package/dist/contracts/routes/src/public-route-allocations.generated.js.map +1 -1
- package/dist/modules/agent-readiness-policy/src/current-policy-metrics.js +2 -2
- package/dist/modules/agent-readiness-policy/src/current-policy-metrics.js.map +1 -1
- package/dist/modules/agent-readiness-policy/src/current-policy-validation.d.ts +4 -0
- package/dist/modules/agent-readiness-policy/src/current-policy-validation.d.ts.map +1 -0
- package/dist/modules/agent-readiness-policy/src/current-policy-validation.js +11 -0
- package/dist/modules/agent-readiness-policy/src/current-policy-validation.js.map +1 -0
- package/dist/modules/agent-readiness-policy/src/current-policy.d.ts.map +1 -1
- package/dist/modules/agent-readiness-policy/src/current-policy.js +10 -15
- package/dist/modules/agent-readiness-policy/src/current-policy.js.map +1 -1
- package/dist/modules/agent-readiness-policy/src/grading.js +1 -1
- package/dist/modules/agent-readiness-policy/src/impact.d.ts +4 -3
- package/dist/modules/agent-readiness-policy/src/impact.d.ts.map +1 -1
- package/dist/modules/agent-readiness-policy/src/impact.js +5 -6
- package/dist/modules/agent-readiness-policy/src/impact.js.map +1 -1
- package/dist/modules/agent-readiness-policy/src/index.d.ts +3 -0
- package/dist/modules/agent-readiness-policy/src/index.d.ts.map +1 -1
- package/dist/modules/agent-readiness-policy/src/index.js +14 -4
- package/dist/modules/agent-readiness-policy/src/index.js.map +1 -1
- package/dist/modules/agent-readiness-policy/src/offer-relations.d.ts +6 -0
- package/dist/modules/agent-readiness-policy/src/offer-relations.d.ts.map +1 -1
- package/dist/modules/agent-readiness-policy/src/offer-relations.js +6 -0
- package/dist/modules/agent-readiness-policy/src/offer-relations.js.map +1 -1
- package/dist/modules/agent-readiness-policy/src/policy-validation.d.ts +0 -1
- package/dist/modules/agent-readiness-policy/src/policy-validation.d.ts.map +1 -1
- package/dist/modules/agent-readiness-policy/src/policy-validation.js +3 -23
- package/dist/modules/agent-readiness-policy/src/policy-validation.js.map +1 -1
- package/dist/modules/agent-readiness-policy/src/standard-mapping.d.ts.map +1 -1
- package/dist/modules/agent-readiness-policy/src/standard-mapping.js +2 -1
- package/dist/modules/agent-readiness-policy/src/standard-mapping.js.map +1 -1
- package/dist/modules/agent-readiness-repository/src/change.js +2 -2
- package/dist/modules/agent-readiness-repository/src/change.js.map +1 -1
- package/dist/modules/artifact/src/index.d.ts +9 -3
- package/dist/modules/artifact/src/index.d.ts.map +1 -1
- package/dist/modules/artifact/src/index.js +50 -65
- package/dist/modules/artifact/src/index.js.map +1 -1
- package/dist/modules/artifact/src/policy-closure.d.ts +12 -0
- package/dist/modules/artifact/src/policy-closure.d.ts.map +1 -0
- package/dist/modules/artifact/src/policy-closure.js +52 -0
- package/dist/modules/artifact/src/policy-closure.js.map +1 -0
- package/dist/modules/{release → artifact}/src/release-directory-files.d.ts +2 -0
- package/dist/modules/artifact/src/release-directory-files.d.ts.map +1 -0
- package/dist/modules/artifact/src/release-directory-files.js +38 -0
- package/dist/modules/artifact/src/release-directory-files.js.map +1 -0
- package/dist/modules/assets/src/authority-bundle.d.ts +13 -0
- package/dist/modules/assets/src/authority-bundle.d.ts.map +1 -1
- package/dist/modules/assets/src/authority-bundle.js +38 -9
- package/dist/modules/assets/src/authority-bundle.js.map +1 -1
- package/dist/modules/assets/src/index.d.ts.map +1 -1
- package/dist/modules/assets/src/index.js +13 -4
- package/dist/modules/assets/src/index.js.map +1 -1
- package/dist/modules/assurance/src/index.d.ts +22 -0
- package/dist/modules/assurance/src/index.d.ts.map +1 -0
- package/dist/modules/assurance/src/index.js +73 -0
- package/dist/modules/assurance/src/index.js.map +1 -0
- package/dist/modules/authority/src/index.d.ts +9 -2
- package/dist/modules/authority/src/index.d.ts.map +1 -1
- package/dist/modules/authority/src/index.js +32 -2
- package/dist/modules/authority/src/index.js.map +1 -1
- package/dist/modules/authority/src/retained-capture-receipt.d.ts +95 -0
- package/dist/modules/authority/src/retained-capture-receipt.d.ts.map +1 -0
- package/dist/modules/authority/src/retained-capture-receipt.js +76 -0
- package/dist/modules/authority/src/retained-capture-receipt.js.map +1 -0
- package/dist/modules/authority-state/src/index.d.ts +1 -1
- package/dist/modules/authority-state/src/index.d.ts.map +1 -1
- package/dist/modules/authority-state/src/index.js +5 -9
- package/dist/modules/authority-state/src/index.js.map +1 -1
- package/dist/modules/catalog-admission/src/admission-conflicts.d.ts +60 -16
- package/dist/modules/catalog-admission/src/admission-conflicts.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/admission-conflicts.js +95 -40
- package/dist/modules/catalog-admission/src/admission-conflicts.js.map +1 -1
- package/dist/modules/catalog-admission/src/change-analysis.d.ts +50 -0
- package/dist/modules/catalog-admission/src/change-analysis.d.ts.map +1 -0
- package/dist/modules/catalog-admission/src/change-analysis.js +113 -0
- package/dist/modules/catalog-admission/src/change-analysis.js.map +1 -0
- package/dist/modules/catalog-admission/src/index.d.ts +11 -37
- package/dist/modules/catalog-admission/src/index.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/index.js +20 -56
- package/dist/modules/catalog-admission/src/index.js.map +1 -1
- package/dist/modules/catalog-admission/src/machine-admission.d.ts +1215 -0
- package/dist/modules/catalog-admission/src/machine-admission.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/machine-admission.js +156 -12
- package/dist/modules/catalog-admission/src/machine-admission.js.map +1 -1
- package/dist/modules/catalog-admission/src/publication-authorities.d.ts +6 -0
- package/dist/modules/catalog-admission/src/publication-authorities.d.ts.map +1 -0
- package/dist/modules/catalog-admission/src/publication-authorities.js +28 -0
- package/dist/modules/catalog-admission/src/publication-authorities.js.map +1 -0
- package/dist/modules/catalog-admission/src/publication-composition.d.ts +421 -0
- package/dist/modules/catalog-admission/src/publication-composition.d.ts.map +1 -0
- package/dist/modules/catalog-admission/src/publication-composition.js +290 -0
- package/dist/modules/catalog-admission/src/publication-composition.js.map +1 -0
- package/dist/modules/catalog-admission/src/publication-dependencies.d.ts +25 -1
- package/dist/modules/catalog-admission/src/publication-dependencies.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/publication-dependencies.js +31 -1
- package/dist/modules/catalog-admission/src/publication-dependencies.js.map +1 -1
- package/dist/modules/catalog-admission/src/publication-recomposition.d.ts +2 -2
- package/dist/modules/catalog-admission/src/publication-state.d.ts +19 -0
- package/dist/modules/catalog-admission/src/publication-state.d.ts.map +1 -0
- package/dist/modules/catalog-admission/src/publication-state.js +97 -0
- package/dist/modules/catalog-admission/src/publication-state.js.map +1 -0
- package/dist/modules/catalog-admission/src/publication.d.ts +26 -24
- package/dist/modules/catalog-admission/src/publication.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/publication.js +47 -106
- package/dist/modules/catalog-admission/src/publication.js.map +1 -1
- package/dist/modules/catalog-admission/src/submission-input.d.ts +44 -0
- package/dist/modules/catalog-admission/src/submission-input.d.ts.map +1 -0
- package/dist/modules/catalog-admission/src/submission-input.js +174 -0
- package/dist/modules/catalog-admission/src/submission-input.js.map +1 -0
- package/dist/modules/catalog-admission/src/submission-state.d.ts +9 -0
- package/dist/modules/catalog-admission/src/submission-state.d.ts.map +1 -0
- package/dist/modules/catalog-admission/src/submission-state.js +24 -0
- package/dist/modules/catalog-admission/src/submission-state.js.map +1 -0
- package/dist/modules/catalog-admission/src/submission.d.ts +99 -19
- package/dist/modules/catalog-admission/src/submission.d.ts.map +1 -1
- package/dist/modules/catalog-admission/src/submission.js +160 -111
- package/dist/modules/catalog-admission/src/submission.js.map +1 -1
- package/dist/modules/catalog-model/src/index.d.ts +10 -0
- package/dist/modules/catalog-model/src/index.d.ts.map +1 -1
- package/dist/modules/catalog-model/src/index.js +11 -3
- package/dist/modules/catalog-model/src/index.js.map +1 -1
- package/dist/modules/catalog-query/src/contracts.d.ts +13 -0
- package/dist/modules/catalog-query/src/contracts.d.ts.map +1 -0
- package/dist/modules/catalog-query/src/contracts.js +13 -0
- package/dist/modules/catalog-query/src/contracts.js.map +1 -0
- package/dist/modules/catalog-read-port/src/index.d.ts +34 -0
- package/dist/modules/catalog-read-port/src/index.d.ts.map +1 -0
- package/dist/modules/catalog-read-port/src/index.js +2 -0
- package/dist/modules/catalog-read-port/src/index.js.map +1 -0
- package/dist/modules/deterministic-release-archive/src/files.d.ts +8 -0
- package/dist/modules/deterministic-release-archive/src/files.d.ts.map +1 -0
- package/dist/modules/deterministic-release-archive/src/files.js +23 -0
- package/dist/modules/deterministic-release-archive/src/files.js.map +1 -0
- package/dist/modules/evidence-operations/src/configuration.d.ts +283 -0
- package/dist/modules/evidence-operations/src/configuration.d.ts.map +1 -0
- package/dist/modules/evidence-operations/src/configuration.js +213 -0
- package/dist/modules/evidence-operations/src/configuration.js.map +1 -0
- package/dist/modules/evidence-operations/src/evidence-authority.d.ts +2552 -0
- package/dist/modules/evidence-operations/src/evidence-authority.d.ts.map +1 -0
- package/dist/modules/evidence-operations/src/evidence-authority.js +545 -0
- package/dist/modules/evidence-operations/src/evidence-authority.js.map +1 -0
- package/dist/modules/evidence-operations/src/evidence-normalization.d.ts +5 -0
- package/dist/modules/evidence-operations/src/evidence-normalization.d.ts.map +1 -1
- package/dist/modules/evidence-operations/src/evidence-normalization.js +11 -2
- package/dist/modules/evidence-operations/src/evidence-normalization.js.map +1 -1
- package/dist/modules/evidence-operations/src/proof-graph.d.ts +4 -7
- package/dist/modules/evidence-operations/src/proof-graph.d.ts.map +1 -1
- package/dist/modules/evidence-operations/src/proof-graph.js +6 -7
- package/dist/modules/evidence-operations/src/proof-graph.js.map +1 -1
- package/dist/modules/evidence-operations/src/retained-revision.d.ts +6 -0
- package/dist/modules/evidence-operations/src/retained-revision.d.ts.map +1 -0
- package/dist/modules/evidence-operations/src/retained-revision.js +29 -0
- package/dist/modules/evidence-operations/src/retained-revision.js.map +1 -0
- package/dist/modules/evidence-operations/src/submission-verifier.d.ts +5 -2
- package/dist/modules/evidence-operations/src/submission-verifier.d.ts.map +1 -1
- package/dist/modules/evidence-operations/src/submission-verifier.js.map +1 -1
- package/dist/modules/git-input/src/index.d.ts +31 -0
- package/dist/modules/git-input/src/index.d.ts.map +1 -0
- package/dist/modules/git-input/src/index.js +158 -0
- package/dist/modules/git-input/src/index.js.map +1 -0
- package/dist/modules/policy-identity/src/index.d.ts +7 -0
- package/dist/modules/policy-identity/src/index.d.ts.map +1 -0
- package/dist/modules/policy-identity/src/index.js +23 -0
- package/dist/modules/policy-identity/src/index.js.map +1 -0
- package/dist/modules/primitives/src/index.d.ts +2 -0
- package/dist/modules/primitives/src/index.d.ts.map +1 -1
- package/dist/modules/primitives/src/index.js +20 -2
- package/dist/modules/primitives/src/index.js.map +1 -1
- package/dist/modules/projection-identity/src/index.d.ts +14 -0
- package/dist/modules/projection-identity/src/index.d.ts.map +1 -0
- package/dist/modules/projection-identity/src/index.js +23 -0
- package/dist/modules/projection-identity/src/index.js.map +1 -0
- package/dist/modules/provenance/src/index.d.ts +7 -3
- package/dist/modules/provenance/src/index.d.ts.map +1 -1
- package/dist/modules/provenance/src/index.js +52 -68
- package/dist/modules/provenance/src/index.js.map +1 -1
- package/dist/modules/release/src/agent-readiness-publication-inputs.d.ts +12 -0
- package/dist/modules/release/src/agent-readiness-publication-inputs.d.ts.map +1 -0
- package/dist/modules/release/src/agent-readiness-publication-inputs.js +48 -0
- package/dist/modules/release/src/agent-readiness-publication-inputs.js.map +1 -0
- package/dist/modules/release/src/agent-readiness-regrade-evidence.d.ts +223 -0
- package/dist/modules/release/src/agent-readiness-regrade-evidence.d.ts.map +1 -0
- package/dist/modules/release/src/agent-readiness-regrade-evidence.js +192 -0
- package/dist/modules/release/src/agent-readiness-regrade-evidence.js.map +1 -0
- package/dist/modules/release/src/changes.d.ts.map +1 -1
- package/dist/modules/release/src/changes.js +21 -25
- package/dist/modules/release/src/changes.js.map +1 -1
- package/dist/modules/release/src/evidence-admission.d.ts +59 -0
- package/dist/modules/release/src/evidence-admission.d.ts.map +1 -0
- package/dist/modules/release/src/evidence-admission.js +539 -0
- package/dist/modules/release/src/evidence-admission.js.map +1 -0
- package/dist/modules/release/src/evidence-bundle-tree.d.ts +14 -0
- package/dist/modules/release/src/evidence-bundle-tree.d.ts.map +1 -0
- package/dist/modules/release/src/evidence-bundle-tree.js +58 -0
- package/dist/modules/release/src/evidence-bundle-tree.js.map +1 -0
- package/dist/modules/release/src/identity.d.ts +4 -4
- package/dist/modules/release/src/identity.d.ts.map +1 -1
- package/dist/modules/release/src/identity.js +43 -1
- package/dist/modules/release/src/identity.js.map +1 -1
- package/dist/modules/release/src/inputs.d.ts +15 -7
- package/dist/modules/release/src/inputs.d.ts.map +1 -1
- package/dist/modules/release/src/inputs.js +15 -21
- package/dist/modules/release/src/inputs.js.map +1 -1
- package/dist/modules/release/src/publication-authorities.d.ts +267 -0
- package/dist/modules/release/src/publication-authorities.d.ts.map +1 -0
- package/dist/modules/release/src/publication-authorities.js +56 -0
- package/dist/modules/release/src/publication-authorities.js.map +1 -0
- package/dist/modules/release/src/publication-inputs.d.ts +2 -6
- package/dist/modules/release/src/publication-inputs.d.ts.map +1 -1
- package/dist/modules/release/src/publication-inputs.js +29 -15
- package/dist/modules/release/src/publication-inputs.js.map +1 -1
- package/dist/modules/release/src/publication-parent-guard.d.ts +17 -0
- package/dist/modules/release/src/publication-parent-guard.d.ts.map +1 -0
- package/dist/modules/release/src/publication-parent-guard.js +18 -0
- package/dist/modules/release/src/publication-parent-guard.js.map +1 -0
- package/dist/modules/release/src/publication-parent-relations.d.ts +24 -0
- package/dist/modules/release/src/publication-parent-relations.d.ts.map +1 -0
- package/dist/modules/release/src/publication-parent-relations.js +104 -0
- package/dist/modules/release/src/publication-parent-relations.js.map +1 -0
- package/dist/modules/release/src/submission-verification.d.ts +20 -0
- package/dist/modules/release/src/submission-verification.d.ts.map +1 -0
- package/dist/modules/release/src/submission-verification.js +39 -0
- package/dist/modules/release/src/submission-verification.js.map +1 -0
- package/dist/modules/release/src/transition.d.ts.map +1 -1
- package/dist/modules/release/src/transition.js +17 -10
- package/dist/modules/release/src/transition.js.map +1 -1
- package/dist/modules/release/src/verification-changes.d.ts +6 -0
- package/dist/modules/release/src/verification-changes.d.ts.map +1 -0
- package/dist/modules/release/src/verification-changes.js +56 -0
- package/dist/modules/release/src/verification-changes.js.map +1 -0
- package/dist/modules/release/src/verification-policies.d.ts +22 -0
- package/dist/modules/release/src/verification-policies.d.ts.map +1 -1
- package/dist/modules/release/src/verification-policies.js +6 -0
- package/dist/modules/release/src/verification-policies.js.map +1 -1
- package/dist/modules/release/src/verification-transitions.d.ts +14 -1
- package/dist/modules/release/src/verification-transitions.d.ts.map +1 -1
- package/dist/modules/release/src/verification-transitions.js +55 -1
- package/dist/modules/release/src/verification-transitions.js.map +1 -1
- package/dist/modules/release/src/verifier.d.ts +5 -3
- package/dist/modules/release/src/verifier.d.ts.map +1 -1
- package/dist/modules/release/src/verifier.js +71 -80
- package/dist/modules/release/src/verifier.js.map +1 -1
- package/dist/packages/catalog-verifier/src/application.d.ts +2 -0
- package/dist/packages/catalog-verifier/src/application.d.ts.map +1 -1
- package/dist/packages/catalog-verifier/src/application.js +10 -9
- package/dist/packages/catalog-verifier/src/application.js.map +1 -1
- package/dist/packages/catalog-verifier/src/index.d.ts +3 -0
- package/dist/packages/catalog-verifier/src/index.d.ts.map +1 -1
- package/dist/packages/catalog-verifier/src/index.js +3 -0
- package/dist/packages/catalog-verifier/src/index.js.map +1 -1
- package/dist/packages/catalog-verifier/src/program.d.ts.map +1 -1
- package/dist/packages/catalog-verifier/src/program.js +13 -10
- package/dist/packages/catalog-verifier/src/program.js.map +1 -1
- package/package.json +1 -1
- package/dist/modules/release/src/release-directory-files.d.ts.map +0 -1
- package/dist/modules/release/src/release-directory-files.js +0 -49
- package/dist/modules/release/src/release-directory-files.js.map +0 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { DIGEST_PATTERN, ENTITY_ID_PATTERN, OFFER_ID_PATTERN, PROGRAM_ID_PATTERN, } from "../../../modules/primitives/src/index.js";
|
|
3
|
-
import {
|
|
2
|
+
import { DIGEST_PATTERN, digest, ENTITY_ID_PATTERN, OFFER_ID_PATTERN, PROGRAM_ID_PATTERN, } from "../../../modules/primitives/src/index.js";
|
|
3
|
+
import { entityAssetSubmissionSourceSchema } from "../../assets/src/index.js";
|
|
4
|
+
import { entityIdentityAssuranceSchema, offerTermsAssuranceSchema, } from "../../assurance/src/index.js";
|
|
4
5
|
import { fundedWorkIntentEnvelopeSchema } from "../../funded-work/src/index.js";
|
|
6
|
+
import { expectedPublicationEntitySchema } from "../../publication/src/index.js";
|
|
5
7
|
import { catalogAuthoringUrlSchema } from "../../revisions/src/index.js";
|
|
6
8
|
export * from "../../funded-work/src/index.js";
|
|
7
9
|
const digestSchema = z.string().regex(DIGEST_PATTERN);
|
|
@@ -15,13 +17,21 @@ export const domainNameSchema = z
|
|
|
15
17
|
.toLowerCase()
|
|
16
18
|
.regex(/^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/u);
|
|
17
19
|
export const startupCreditsProductCode = "startup-offer-human-verification";
|
|
18
|
-
export const
|
|
20
|
+
export const startupCreditsPrice = { currency: "usd", minor_units: 4_900 };
|
|
21
|
+
export const startupCreditsPriceLookupKey = "startup-offer-human-verification-usd-49";
|
|
22
|
+
export const startupCreditsPurchaseDisclosureStatement = "Human verification includes publication of a supportable company record with verified status for a legitimate company. Sourcey cannot publish false, unsafe, conflicting, duplicate, or non-existent company or offer claims. Refunds apply when Sourcey cannot deliver the purchased service or misses the review deadline.";
|
|
23
|
+
const startupCreditsPriceSchema = z
|
|
24
|
+
.object({
|
|
25
|
+
currency: z.literal(startupCreditsPrice.currency),
|
|
26
|
+
minor_units: z.literal(startupCreditsPrice.minor_units),
|
|
27
|
+
})
|
|
28
|
+
.strict();
|
|
19
29
|
export const startupCreditsServicePolicySchema = z
|
|
20
30
|
.object({
|
|
21
31
|
policy_contract: z.literal("sourcey.startup-credits-verification-service-policy/v1alpha1"),
|
|
22
32
|
product_code: z.literal(startupCreditsProductCode),
|
|
23
33
|
price_lookup_key: z.literal(startupCreditsPriceLookupKey),
|
|
24
|
-
price:
|
|
34
|
+
price: startupCreditsPriceSchema,
|
|
25
35
|
service_calendar: z
|
|
26
36
|
.object({
|
|
27
37
|
time_zone: z.literal("Australia/Sydney"),
|
|
@@ -42,26 +52,39 @@ export const startupCreditsServicePolicySchema = z
|
|
|
42
52
|
context.addIssue({ code: "custom", message: "Service holidays must be sorted." });
|
|
43
53
|
}
|
|
44
54
|
}),
|
|
45
|
-
|
|
55
|
+
material_misrepresentation_refundable: z.literal(false),
|
|
46
56
|
sla_miss_refundable: z.literal(true),
|
|
47
57
|
sourcey_error_refundable: z.literal(true),
|
|
48
|
-
|
|
58
|
+
payment_authorizes_human_verification: z.literal(true),
|
|
59
|
+
payment_changes_truth: z.literal(false),
|
|
49
60
|
})
|
|
50
61
|
.strict();
|
|
51
|
-
export const
|
|
62
|
+
export const startupCreditsReviewWorkDefinitionSchema = z
|
|
52
63
|
.object({
|
|
53
|
-
|
|
64
|
+
work_contract: z.literal("sourcey.startup-credits-review-work-definition/v1alpha1"),
|
|
54
65
|
scope: z.literal("one-entity-one-offer"),
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
66
|
+
passing_results: z
|
|
67
|
+
.object({
|
|
68
|
+
entity_identity: z
|
|
69
|
+
.object({
|
|
70
|
+
status: z.literal("verified"),
|
|
71
|
+
binding: z.literal("identity-epoch"),
|
|
72
|
+
})
|
|
73
|
+
.strict(),
|
|
74
|
+
offer_terms: z
|
|
75
|
+
.object({
|
|
76
|
+
status: z.literal("checked"),
|
|
77
|
+
binding: z.literal("exact-offer-revision"),
|
|
78
|
+
})
|
|
79
|
+
.strict(),
|
|
80
|
+
})
|
|
81
|
+
.strict(),
|
|
59
82
|
})
|
|
60
83
|
.strict();
|
|
61
84
|
export const startupCreditsPurchaseDisclosureSchema = z
|
|
62
85
|
.object({
|
|
63
86
|
disclosure_contract: z.literal("sourcey.startup-credits-purchase-disclosure/v1alpha1"),
|
|
64
|
-
statement: z.literal(
|
|
87
|
+
statement: z.literal(startupCreditsPurchaseDisclosureStatement),
|
|
65
88
|
})
|
|
66
89
|
.strict();
|
|
67
90
|
const startupCreditsPurchasePreviewCoreSchema = z
|
|
@@ -70,8 +93,9 @@ const startupCreditsPurchasePreviewCoreSchema = z
|
|
|
70
93
|
product_code: z.literal(startupCreditsProductCode),
|
|
71
94
|
purchase_kind: z.literal("one_off"),
|
|
72
95
|
price_lookup_key: z.literal(startupCreditsPriceLookupKey),
|
|
73
|
-
price:
|
|
96
|
+
price: startupCreditsPriceSchema,
|
|
74
97
|
work_scope: z.literal("one-entity-one-offer"),
|
|
98
|
+
passing_results: startupCreditsReviewWorkDefinitionSchema.shape.passing_results,
|
|
75
99
|
service_level: z
|
|
76
100
|
.object({
|
|
77
101
|
starts_after: z.literal("settled-payment"),
|
|
@@ -81,7 +105,7 @@ const startupCreditsPurchasePreviewCoreSchema = z
|
|
|
81
105
|
.strict(),
|
|
82
106
|
refunds: z
|
|
83
107
|
.object({
|
|
84
|
-
|
|
108
|
+
material_misrepresentation_refundable: z.literal(false),
|
|
85
109
|
service_level_missed_refundable: z.literal(true),
|
|
86
110
|
sourcey_error_refundable: z.literal(true),
|
|
87
111
|
})
|
|
@@ -89,9 +113,9 @@ const startupCreditsPurchasePreviewCoreSchema = z
|
|
|
89
113
|
disclosure: startupCreditsPurchaseDisclosureSchema.shape.statement,
|
|
90
114
|
policy_bindings: z
|
|
91
115
|
.object({
|
|
116
|
+
assurance_method: digestSchema,
|
|
92
117
|
purchase_disclosure: digestSchema,
|
|
93
118
|
service: digestSchema,
|
|
94
|
-
verification_method: digestSchema,
|
|
95
119
|
})
|
|
96
120
|
.strict(),
|
|
97
121
|
})
|
|
@@ -104,7 +128,7 @@ export const standingRouteSchema = z.enum([
|
|
|
104
128
|
"repair_required",
|
|
105
129
|
"temporarily_unavailable",
|
|
106
130
|
"free_machine_review",
|
|
107
|
-
"
|
|
131
|
+
"human_verification_required",
|
|
108
132
|
]);
|
|
109
133
|
export const standingPolicySchema = z
|
|
110
134
|
.object({
|
|
@@ -195,9 +219,16 @@ export const standingResultCoreSchema = z
|
|
|
195
219
|
export const standingResultSchema = standingResultCoreSchema
|
|
196
220
|
.safeExtend({ result_digest: digestSchema })
|
|
197
221
|
.strict();
|
|
222
|
+
export const startupCreditsExistingEntityDraftBaseSchema = z
|
|
223
|
+
.object({
|
|
224
|
+
entity_id: entityIdSchema,
|
|
225
|
+
entity_revision_digest: digestSchema,
|
|
226
|
+
})
|
|
227
|
+
.strict();
|
|
198
228
|
export const startupCreditsDraftRequestSchema = z
|
|
199
229
|
.object({
|
|
200
230
|
standing_result: standingResultSchema,
|
|
231
|
+
existing_entity: startupCreditsExistingEntityDraftBaseSchema.optional(),
|
|
201
232
|
company: z
|
|
202
233
|
.object({
|
|
203
234
|
name: z.string().trim().min(1).max(160),
|
|
@@ -234,7 +265,17 @@ export const startupCreditsDraftRequestSchema = z
|
|
|
234
265
|
}
|
|
235
266
|
}),
|
|
236
267
|
})
|
|
237
|
-
.strict()
|
|
268
|
+
.strict()
|
|
269
|
+
.superRefine((request, context) => {
|
|
270
|
+
const existingRoute = request.standing_result.route === "correction_required";
|
|
271
|
+
if (existingRoute !== (request.existing_entity !== undefined)) {
|
|
272
|
+
context.addIssue({
|
|
273
|
+
code: "custom",
|
|
274
|
+
path: ["existing_entity"],
|
|
275
|
+
message: "An existing Entity reference is required only for an exact existing-record draft.",
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
});
|
|
238
279
|
const diagnosticSchema = z
|
|
239
280
|
.object({
|
|
240
281
|
code: z.enum(["required", "invalid", "conflict", "ineligible"]),
|
|
@@ -257,6 +298,7 @@ export const startupCreditsDraftResultSchema = z.discriminatedUnion("status", [
|
|
|
257
298
|
program_id: programIdSchema.optional(),
|
|
258
299
|
offer_id: offerIdSchema,
|
|
259
300
|
purchase_preview: startupCreditsPurchasePreviewSchema,
|
|
301
|
+
expected_current_entities: z.array(expectedPublicationEntitySchema).max(1),
|
|
260
302
|
authoring_file: z
|
|
261
303
|
.object({
|
|
262
304
|
path: z.string().regex(/^entities\/[a-z0-9]{1,2}\/[a-z0-9-]+\.yaml$/u),
|
|
@@ -268,10 +310,14 @@ export const startupCreditsDraftResultSchema = z.discriminatedUnion("status", [
|
|
|
268
310
|
})
|
|
269
311
|
.strict(),
|
|
270
312
|
]);
|
|
271
|
-
export const
|
|
313
|
+
export const startupCreditsVerificationCaseIdSchema = z.string().regex(/^hvc_[a-f0-9]{64}$/u);
|
|
314
|
+
const startupCreditsNewListingIntentTargetSchema = z
|
|
272
315
|
.object({
|
|
273
|
-
|
|
274
|
-
|
|
316
|
+
kind: z.literal("new_listing"),
|
|
317
|
+
base_release_id: digestSchema,
|
|
318
|
+
entity_id: entityIdSchema,
|
|
319
|
+
program_id: programIdSchema.optional(),
|
|
320
|
+
offer_id: offerIdSchema,
|
|
275
321
|
submission: z
|
|
276
322
|
.object({
|
|
277
323
|
submission_id: z.string().regex(/^sub_[a-f0-9]{64}$/u),
|
|
@@ -281,6 +327,39 @@ export const startupCreditsFundedWorkIntentSchema = z
|
|
|
281
327
|
.strict(),
|
|
282
328
|
standing_result: standingResultSchema,
|
|
283
329
|
authoring_file_digest: digestSchema,
|
|
330
|
+
})
|
|
331
|
+
.strict();
|
|
332
|
+
export const startupCreditsExistingRecordTargetSchema = z
|
|
333
|
+
.object({
|
|
334
|
+
kind: z.literal("existing_record"),
|
|
335
|
+
base_release_id: digestSchema,
|
|
336
|
+
entity_id: entityIdSchema,
|
|
337
|
+
program_id: programIdSchema.optional(),
|
|
338
|
+
entity_revision_digest: digestSchema,
|
|
339
|
+
offer_id: offerIdSchema,
|
|
340
|
+
offer_revision_digest: digestSchema,
|
|
341
|
+
})
|
|
342
|
+
.strict();
|
|
343
|
+
/**
|
|
344
|
+
* Stable customer reference to one admitted Entity and Offer revision.
|
|
345
|
+
*
|
|
346
|
+
* The current Catalog head is deliberately absent: an unrelated release must
|
|
347
|
+
* not invalidate checkout for this exact record. The product resolver adds the
|
|
348
|
+
* current base release only after proving both revision digests still match.
|
|
349
|
+
*/
|
|
350
|
+
export const startupCreditsExistingRecordReferenceSchema = startupCreditsExistingRecordTargetSchema
|
|
351
|
+
.omit({ base_release_id: true })
|
|
352
|
+
.strict();
|
|
353
|
+
export const startupCreditsVerificationIntentTargetSchema = z.discriminatedUnion("kind", [
|
|
354
|
+
startupCreditsNewListingIntentTargetSchema,
|
|
355
|
+
startupCreditsExistingRecordTargetSchema,
|
|
356
|
+
]);
|
|
357
|
+
export const startupCreditsFundedWorkIntentSchema = z
|
|
358
|
+
.object({
|
|
359
|
+
product_intent_contract: z.literal("sourcey.startup-offer-human-verification-intent/v1alpha1"),
|
|
360
|
+
verification_case_id: startupCreditsVerificationCaseIdSchema,
|
|
361
|
+
billing: fundedWorkIntentEnvelopeSchema,
|
|
362
|
+
target: startupCreditsVerificationIntentTargetSchema,
|
|
284
363
|
purchase_preview_digest: digestSchema,
|
|
285
364
|
disclosure_digest: digestSchema,
|
|
286
365
|
product_intent_digest: digestSchema,
|
|
@@ -308,21 +387,32 @@ export const startupCreditsFundedWorkIntentSchema = z
|
|
|
308
387
|
message: "Startup Credits funded work must remain human verification.",
|
|
309
388
|
});
|
|
310
389
|
}
|
|
311
|
-
|
|
390
|
+
const eligibilityDigest = intent.target.kind === "new_listing"
|
|
391
|
+
? intent.target.standing_result.result_digest
|
|
392
|
+
: digest(intent.target);
|
|
393
|
+
if (intent.billing.eligibility_digest !== eligibilityDigest) {
|
|
312
394
|
context.addIssue({
|
|
313
395
|
code: "custom",
|
|
314
396
|
path: ["billing", "eligibility_digest"],
|
|
315
|
-
message: "The billing eligibility binding must be the exact
|
|
397
|
+
message: "The billing eligibility binding must be the exact verification target.",
|
|
316
398
|
});
|
|
317
399
|
}
|
|
318
400
|
const bindings = new Map(intent.billing.policy_bindings.map((binding) => [binding.role, binding.policy_digest]));
|
|
319
|
-
if (
|
|
401
|
+
if (intent.target.kind === "new_listing" &&
|
|
402
|
+
bindings.get("standing") !== intent.target.standing_result.policy_digest) {
|
|
320
403
|
context.addIssue({
|
|
321
404
|
code: "custom",
|
|
322
405
|
path: ["billing", "policy_bindings"],
|
|
323
406
|
message: "The standing policy binding must match the exact standing result.",
|
|
324
407
|
});
|
|
325
408
|
}
|
|
409
|
+
if (intent.target.kind === "existing_record" && bindings.has("standing")) {
|
|
410
|
+
context.addIssue({
|
|
411
|
+
code: "custom",
|
|
412
|
+
path: ["billing", "policy_bindings"],
|
|
413
|
+
message: "Existing-record verification must not invent a standing-policy binding.",
|
|
414
|
+
});
|
|
415
|
+
}
|
|
326
416
|
if (bindings.get("purchase-disclosure") !== intent.disclosure_digest) {
|
|
327
417
|
context.addIssue({
|
|
328
418
|
code: "custom",
|
|
@@ -330,7 +420,7 @@ export const startupCreditsFundedWorkIntentSchema = z
|
|
|
330
420
|
message: "The purchase disclosure binding must match the exact product disclosure.",
|
|
331
421
|
});
|
|
332
422
|
}
|
|
333
|
-
for (const role of ["
|
|
423
|
+
for (const role of ["assurance-method", "service"]) {
|
|
334
424
|
if (bindings.has(role))
|
|
335
425
|
continue;
|
|
336
426
|
context.addIssue({
|
|
@@ -339,25 +429,412 @@ export const startupCreditsFundedWorkIntentSchema = z
|
|
|
339
429
|
message: `The ${role} policy binding is required.`,
|
|
340
430
|
});
|
|
341
431
|
}
|
|
432
|
+
if (intent.billing.owner_work_ref !== intent.verification_case_id ||
|
|
433
|
+
intent.billing.base_release_id !== intent.target.base_release_id ||
|
|
434
|
+
intent.billing.subject.entity_id !== intent.target.entity_id ||
|
|
435
|
+
intent.billing.subject.program_id !== intent.target.program_id ||
|
|
436
|
+
intent.billing.subject.offer_id !== intent.target.offer_id) {
|
|
437
|
+
context.addIssue({
|
|
438
|
+
code: "custom",
|
|
439
|
+
path: ["billing"],
|
|
440
|
+
message: "Billing must bind this exact Human Verification case and target.",
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
});
|
|
444
|
+
export const startupCreditsCompletedReviewBasisSchema = z
|
|
445
|
+
.object({
|
|
446
|
+
evidence_event_ids: z.array(digestSchema),
|
|
447
|
+
observation_ids: z.array(digestSchema),
|
|
448
|
+
retained_artifact_digests: z.array(digestSchema).default([]),
|
|
449
|
+
})
|
|
450
|
+
.strict()
|
|
451
|
+
.superRefine((basis, context) => {
|
|
452
|
+
if (basis.evidence_event_ids.length +
|
|
453
|
+
basis.observation_ids.length +
|
|
454
|
+
basis.retained_artifact_digests.length ===
|
|
455
|
+
0) {
|
|
456
|
+
context.addIssue({
|
|
457
|
+
code: "custom",
|
|
458
|
+
message: "A review outcome requires at least one retained evidence or observation ID.",
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
for (const [field, values] of Object.entries(basis)) {
|
|
462
|
+
if (new Set(values).size !== values.length ||
|
|
463
|
+
[...values].sort().some((v, i) => v !== values[i])) {
|
|
464
|
+
context.addIssue({
|
|
465
|
+
code: "custom",
|
|
466
|
+
path: [field],
|
|
467
|
+
message: "Review basis IDs must be unique and canonically sorted.",
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
export const startupCreditsEntityIdentityFailureReasonSchema = z.enum([
|
|
473
|
+
"identity_mismatch",
|
|
474
|
+
"identity_unresolved",
|
|
475
|
+
"insufficient_evidence",
|
|
476
|
+
]);
|
|
477
|
+
export const startupCreditsOfferTermsFailureReasonSchema = z.enum([
|
|
478
|
+
"terms_mismatch",
|
|
479
|
+
"source_unavailable",
|
|
480
|
+
"insufficient_evidence",
|
|
481
|
+
]);
|
|
482
|
+
export const startupCreditsEntityIdentityReviewDecisionSchema = z.discriminatedUnion("status", [
|
|
483
|
+
z
|
|
484
|
+
.object({
|
|
485
|
+
status: z.literal("passed"),
|
|
486
|
+
rationale: z.string().trim().min(1).max(2_000),
|
|
487
|
+
})
|
|
488
|
+
.strict(),
|
|
489
|
+
z
|
|
490
|
+
.object({
|
|
491
|
+
status: z.literal("failed"),
|
|
492
|
+
reason_code: startupCreditsEntityIdentityFailureReasonSchema,
|
|
493
|
+
rationale: z.string().trim().min(1).max(2_000),
|
|
494
|
+
basis: startupCreditsCompletedReviewBasisSchema,
|
|
495
|
+
})
|
|
496
|
+
.strict(),
|
|
497
|
+
]);
|
|
498
|
+
export const startupCreditsOfferTermsReviewDecisionSchema = z.discriminatedUnion("status", [
|
|
499
|
+
z
|
|
500
|
+
.object({
|
|
501
|
+
status: z.literal("passed"),
|
|
502
|
+
rationale: z.string().trim().min(1).max(2_000),
|
|
503
|
+
})
|
|
504
|
+
.strict(),
|
|
505
|
+
z
|
|
506
|
+
.object({
|
|
507
|
+
status: z.literal("failed"),
|
|
508
|
+
reason_code: startupCreditsOfferTermsFailureReasonSchema,
|
|
509
|
+
rationale: z.string().trim().min(1).max(2_000),
|
|
510
|
+
basis: startupCreditsCompletedReviewBasisSchema,
|
|
511
|
+
})
|
|
512
|
+
.strict(),
|
|
513
|
+
z
|
|
514
|
+
.object({
|
|
515
|
+
status: z.literal("not_evaluated"),
|
|
516
|
+
reason_code: z.literal("identity_unresolved"),
|
|
517
|
+
})
|
|
518
|
+
.strict(),
|
|
519
|
+
]);
|
|
520
|
+
/** The reviewer records two factual decisions. Their dependency is explicit:
|
|
521
|
+
* Offer terms are skipped exactly when company identity cannot be established. */
|
|
522
|
+
export const startupCreditsReviewDecisionSchema = z
|
|
523
|
+
.object({
|
|
524
|
+
entity_identity: startupCreditsEntityIdentityReviewDecisionSchema,
|
|
525
|
+
offer_terms: startupCreditsOfferTermsReviewDecisionSchema,
|
|
526
|
+
})
|
|
527
|
+
.strict()
|
|
528
|
+
.superRefine((decision, context) => {
|
|
529
|
+
const identityFailed = decision.entity_identity.status === "failed";
|
|
530
|
+
const termsNotEvaluated = decision.offer_terms.status === "not_evaluated";
|
|
531
|
+
if (identityFailed !== termsNotEvaluated) {
|
|
532
|
+
context.addIssue({
|
|
533
|
+
code: "custom",
|
|
534
|
+
path: ["offer_terms", "status"],
|
|
535
|
+
message: "Offer terms may be not evaluated only when Entity identity failed, and identity failure cannot carry an Offer terms decision.",
|
|
536
|
+
});
|
|
537
|
+
}
|
|
538
|
+
});
|
|
539
|
+
const entityIdentityReviewOutcomeSchema = z.discriminatedUnion("status", [
|
|
540
|
+
z
|
|
541
|
+
.object({
|
|
542
|
+
status: z.literal("passed"),
|
|
543
|
+
entity_id: entityIdSchema,
|
|
544
|
+
assurance: entityIdentityAssuranceSchema,
|
|
545
|
+
})
|
|
546
|
+
.strict(),
|
|
547
|
+
z
|
|
548
|
+
.object({
|
|
549
|
+
status: z.literal("reused"),
|
|
550
|
+
entity_id: entityIdSchema,
|
|
551
|
+
assurance: entityIdentityAssuranceSchema,
|
|
552
|
+
})
|
|
553
|
+
.strict(),
|
|
554
|
+
z
|
|
555
|
+
.object({
|
|
556
|
+
status: z.literal("failed"),
|
|
557
|
+
entity_id: entityIdSchema,
|
|
558
|
+
reason_code: startupCreditsEntityIdentityFailureReasonSchema,
|
|
559
|
+
rationale: z.string().trim().min(1).max(2_000),
|
|
560
|
+
basis: startupCreditsCompletedReviewBasisSchema,
|
|
561
|
+
})
|
|
562
|
+
.strict(),
|
|
563
|
+
]);
|
|
564
|
+
const offerTermsReviewOutcomeSchema = z.discriminatedUnion("status", [
|
|
565
|
+
z
|
|
566
|
+
.object({
|
|
567
|
+
status: z.literal("passed"),
|
|
568
|
+
entity_id: entityIdSchema,
|
|
569
|
+
offer_id: offerIdSchema,
|
|
570
|
+
assurance: offerTermsAssuranceSchema,
|
|
571
|
+
})
|
|
572
|
+
.strict(),
|
|
573
|
+
z
|
|
574
|
+
.object({
|
|
575
|
+
status: z.literal("reused"),
|
|
576
|
+
entity_id: entityIdSchema,
|
|
577
|
+
offer_id: offerIdSchema,
|
|
578
|
+
assurance: offerTermsAssuranceSchema,
|
|
579
|
+
})
|
|
580
|
+
.strict(),
|
|
581
|
+
z
|
|
582
|
+
.object({
|
|
583
|
+
status: z.literal("failed"),
|
|
584
|
+
entity_id: entityIdSchema,
|
|
585
|
+
offer_id: offerIdSchema,
|
|
586
|
+
revision_digest: digestSchema,
|
|
587
|
+
reason_code: startupCreditsOfferTermsFailureReasonSchema,
|
|
588
|
+
rationale: z.string().trim().min(1).max(2_000),
|
|
589
|
+
basis: startupCreditsCompletedReviewBasisSchema,
|
|
590
|
+
})
|
|
591
|
+
.strict(),
|
|
592
|
+
z
|
|
593
|
+
.object({
|
|
594
|
+
status: z.literal("not_evaluated"),
|
|
595
|
+
entity_id: entityIdSchema,
|
|
596
|
+
offer_id: offerIdSchema,
|
|
597
|
+
reason_code: z.literal("identity_unresolved"),
|
|
598
|
+
})
|
|
599
|
+
.strict(),
|
|
600
|
+
]);
|
|
601
|
+
export const startupCreditsReviewCompletionTargetSchema = z.discriminatedUnion("kind", [
|
|
602
|
+
z
|
|
603
|
+
.object({
|
|
604
|
+
kind: z.literal("new_listing"),
|
|
605
|
+
base_release_id: digestSchema,
|
|
606
|
+
entity_id: entityIdSchema,
|
|
607
|
+
program_id: programIdSchema.optional(),
|
|
608
|
+
offer_id: offerIdSchema,
|
|
609
|
+
submission_id: z.string().regex(/^sub_[a-f0-9]{64}$/u),
|
|
610
|
+
submission_payload_digest: digestSchema,
|
|
611
|
+
})
|
|
612
|
+
.strict(),
|
|
613
|
+
startupCreditsExistingRecordTargetSchema,
|
|
614
|
+
]);
|
|
615
|
+
export const startupCreditsReviewCompletionReceiptCoreSchema = z
|
|
616
|
+
.object({
|
|
617
|
+
receipt_contract: z.literal("sourcey.startup-credits-review-completion/v1alpha1"),
|
|
618
|
+
order_id: z.string().regex(/^ord_[a-f0-9]{64}$/u),
|
|
619
|
+
funded_work_intent_id: fundedWorkIntentEnvelopeSchema.shape.intent_id,
|
|
620
|
+
funded_work_intent_digest: digestSchema,
|
|
621
|
+
verification_case_id: startupCreditsVerificationCaseIdSchema,
|
|
622
|
+
target: startupCreditsReviewCompletionTargetSchema,
|
|
623
|
+
method_policy_digest: digestSchema,
|
|
624
|
+
reviewer_id: z.string().trim().min(1).max(256),
|
|
625
|
+
reviewed_at: instantSchema,
|
|
626
|
+
readback_release_id: digestSchema,
|
|
627
|
+
work_outcome: z.literal("review_delivered"),
|
|
628
|
+
entity_identity: entityIdentityReviewOutcomeSchema,
|
|
629
|
+
offer_terms: offerTermsReviewOutcomeSchema,
|
|
630
|
+
})
|
|
631
|
+
.strict()
|
|
632
|
+
.superRefine((receipt, context) => {
|
|
633
|
+
if (receipt.entity_identity.entity_id !== receipt.target.entity_id ||
|
|
634
|
+
receipt.offer_terms.entity_id !== receipt.target.entity_id ||
|
|
635
|
+
receipt.offer_terms.offer_id !== receipt.target.offer_id) {
|
|
636
|
+
context.addIssue({
|
|
637
|
+
code: "custom",
|
|
638
|
+
path: ["target"],
|
|
639
|
+
message: "Review outcomes must bind the exact Human Verification target.",
|
|
640
|
+
});
|
|
641
|
+
}
|
|
642
|
+
const identityFailed = receipt.entity_identity.status === "failed";
|
|
643
|
+
const termsNotEvaluated = receipt.offer_terms.status === "not_evaluated";
|
|
644
|
+
if (identityFailed !== termsNotEvaluated) {
|
|
645
|
+
context.addIssue({
|
|
646
|
+
code: "custom",
|
|
647
|
+
path: ["offer_terms", "status"],
|
|
648
|
+
message: "Offer terms may be not evaluated only when Entity identity failed, and identity failure cannot carry an Offer terms decision.",
|
|
649
|
+
});
|
|
650
|
+
}
|
|
651
|
+
if (receipt.entity_identity.status === "passed") {
|
|
652
|
+
if (receipt.entity_identity.assurance.method_policy_digest !== receipt.method_policy_digest ||
|
|
653
|
+
receipt.entity_identity.assurance.verified_at !== receipt.reviewed_at) {
|
|
654
|
+
context.addIssue({
|
|
655
|
+
code: "custom",
|
|
656
|
+
path: ["entity_identity", "assurance"],
|
|
657
|
+
message: "A newly passed Entity identity assurance must use this review method and timestamp.",
|
|
658
|
+
});
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
if (receipt.entity_identity.status === "reused" &&
|
|
662
|
+
(receipt.entity_identity.assurance.method_policy_digest !== receipt.method_policy_digest ||
|
|
663
|
+
Date.parse(receipt.entity_identity.assurance.verified_at) > Date.parse(receipt.reviewed_at))) {
|
|
664
|
+
context.addIssue({
|
|
665
|
+
code: "custom",
|
|
666
|
+
path: ["entity_identity", "assurance"],
|
|
667
|
+
message: "A reused Entity identity assurance must use this review method and cannot postdate this review.",
|
|
668
|
+
});
|
|
669
|
+
}
|
|
670
|
+
if (receipt.offer_terms.status === "passed" &&
|
|
671
|
+
(receipt.offer_terms.assurance.method_policy_digest !== receipt.method_policy_digest ||
|
|
672
|
+
receipt.offer_terms.assurance.checked_at !== receipt.reviewed_at)) {
|
|
673
|
+
context.addIssue({
|
|
674
|
+
code: "custom",
|
|
675
|
+
path: ["offer_terms", "assurance"],
|
|
676
|
+
message: "A passed Offer terms assurance must use this review method and timestamp.",
|
|
677
|
+
});
|
|
678
|
+
}
|
|
679
|
+
if (receipt.offer_terms.status === "reused" &&
|
|
680
|
+
(receipt.offer_terms.assurance.method_policy_digest !== receipt.method_policy_digest ||
|
|
681
|
+
Date.parse(receipt.offer_terms.assurance.checked_at) > Date.parse(receipt.reviewed_at))) {
|
|
682
|
+
context.addIssue({
|
|
683
|
+
code: "custom",
|
|
684
|
+
path: ["offer_terms", "assurance"],
|
|
685
|
+
message: "A reused Offer terms assurance must use this review method and cannot postdate this review.",
|
|
686
|
+
});
|
|
687
|
+
}
|
|
342
688
|
});
|
|
689
|
+
export const startupCreditsReviewCompletionReceiptSchema = startupCreditsReviewCompletionReceiptCoreSchema
|
|
690
|
+
.safeExtend({ receipt_digest: digestSchema })
|
|
691
|
+
.strict();
|
|
343
692
|
export const startupCreditsReviewRequestIdSchema = z
|
|
344
693
|
.string()
|
|
345
694
|
.trim()
|
|
346
695
|
.regex(/^[A-Za-z0-9_-]{32,128}$/u);
|
|
347
|
-
export const
|
|
696
|
+
export const startupCreditsEntityIconInputSchema = z
|
|
348
697
|
.object({
|
|
349
|
-
|
|
698
|
+
source: entityAssetSubmissionSourceSchema,
|
|
699
|
+
trademark_owner: z.string().trim().min(1).max(240),
|
|
700
|
+
relationship: z.enum(["vendor-representative", "community-contributor"]),
|
|
701
|
+
})
|
|
702
|
+
.strict();
|
|
703
|
+
export const startupCreditsExpectedDraftSchema = z
|
|
704
|
+
.object({
|
|
705
|
+
base_release_id: digestSchema,
|
|
706
|
+
content_digest: digestSchema,
|
|
707
|
+
purchase_preview_digest: digestSchema,
|
|
708
|
+
})
|
|
709
|
+
.strict();
|
|
710
|
+
const startupCreditsNewListingReviewTargetCoreSchema = z
|
|
711
|
+
.object({
|
|
712
|
+
kind: z.literal("new_listing"),
|
|
350
713
|
draft: startupCreditsDraftRequestSchema,
|
|
714
|
+
entity_icon: startupCreditsEntityIconInputSchema.optional(),
|
|
351
715
|
})
|
|
352
716
|
.strict();
|
|
717
|
+
export const startupCreditsExistingRecordReviewTargetSchema = startupCreditsExistingRecordReferenceSchema
|
|
718
|
+
.extend({ expected_purchase_preview_digest: digestSchema })
|
|
719
|
+
.strict();
|
|
720
|
+
export const startupCreditsExistingRecordReviewPreparationRequestSchema = z
|
|
721
|
+
.object({ target: startupCreditsExistingRecordReferenceSchema })
|
|
722
|
+
.strict();
|
|
723
|
+
export const startupCreditsExistingRecordReviewPreparationSchema = z
|
|
724
|
+
.object({
|
|
725
|
+
target: startupCreditsExistingRecordReviewTargetSchema,
|
|
726
|
+
purchase_preview: startupCreditsPurchasePreviewSchema,
|
|
727
|
+
assurance_requirements: z
|
|
728
|
+
.object({
|
|
729
|
+
entity_identity: z.enum(["required", "already_verified"]),
|
|
730
|
+
offer_terms: z.enum(["required", "already_checked"]),
|
|
731
|
+
})
|
|
732
|
+
.strict(),
|
|
733
|
+
})
|
|
734
|
+
.strict();
|
|
735
|
+
export const startupCreditsExistingRecordReviewPreparationResponseSchema = z
|
|
736
|
+
.object({ data: startupCreditsExistingRecordReviewPreparationSchema })
|
|
737
|
+
.strict();
|
|
738
|
+
const startupCreditsX402ReviewTargetSchema = z.discriminatedUnion("kind", [
|
|
739
|
+
startupCreditsNewListingReviewTargetCoreSchema,
|
|
740
|
+
startupCreditsExistingRecordReviewTargetSchema,
|
|
741
|
+
]);
|
|
742
|
+
const startupCreditsStripeReviewTargetSchema = z.discriminatedUnion("kind", [
|
|
743
|
+
startupCreditsNewListingReviewTargetCoreSchema
|
|
744
|
+
.extend({ expected_draft: startupCreditsExpectedDraftSchema })
|
|
745
|
+
.strict(),
|
|
746
|
+
startupCreditsExistingRecordReviewTargetSchema,
|
|
747
|
+
]);
|
|
748
|
+
export const startupCreditsReviewTargetSchema = startupCreditsX402ReviewTargetSchema;
|
|
749
|
+
const startupCreditsReviewRequestCoreSchema = z.object({
|
|
750
|
+
request_id: startupCreditsReviewRequestIdSchema,
|
|
751
|
+
});
|
|
752
|
+
export const startupCreditsReviewRequestSchema = z.discriminatedUnion("payment_rail", [
|
|
753
|
+
startupCreditsReviewRequestCoreSchema
|
|
754
|
+
.extend({
|
|
755
|
+
payment_rail: z.literal("x402"),
|
|
756
|
+
target: startupCreditsX402ReviewTargetSchema,
|
|
757
|
+
})
|
|
758
|
+
.strict(),
|
|
759
|
+
startupCreditsReviewRequestCoreSchema
|
|
760
|
+
.extend({
|
|
761
|
+
payment_rail: z.literal("stripe"),
|
|
762
|
+
target: startupCreditsStripeReviewTargetSchema,
|
|
763
|
+
replaces_intent: fundedWorkIntentEnvelopeSchema
|
|
764
|
+
.pick({ intent_id: true, intent_digest: true })
|
|
765
|
+
.optional(),
|
|
766
|
+
})
|
|
767
|
+
.strict(),
|
|
768
|
+
]);
|
|
769
|
+
export const startupCreditsVerificationPublicStateSchema = z.enum([
|
|
770
|
+
"awaiting_payment",
|
|
771
|
+
"verifying",
|
|
772
|
+
"input_needed",
|
|
773
|
+
"publishing",
|
|
774
|
+
"live",
|
|
775
|
+
"refused",
|
|
776
|
+
]);
|
|
777
|
+
export const startupCreditsVerificationRequiredInputSchema = z
|
|
778
|
+
.object({
|
|
779
|
+
code: z.enum([
|
|
780
|
+
"domain_control",
|
|
781
|
+
"official_offer_page",
|
|
782
|
+
"company_identity",
|
|
783
|
+
"offer_existence",
|
|
784
|
+
"current_terms",
|
|
785
|
+
"pricing_or_consideration",
|
|
786
|
+
"access_instructions",
|
|
787
|
+
"conflicting_identity",
|
|
788
|
+
"unsupported_material_claim",
|
|
789
|
+
]),
|
|
790
|
+
path: z.string().startsWith("/"),
|
|
791
|
+
message: z.string().trim().min(1).max(500),
|
|
792
|
+
})
|
|
793
|
+
.strict();
|
|
794
|
+
export const startupCreditsVerificationStatusSchema = z
|
|
795
|
+
.object({
|
|
796
|
+
verification_case_id: startupCreditsVerificationCaseIdSchema,
|
|
797
|
+
state: startupCreditsVerificationPublicStateSchema,
|
|
798
|
+
required_input: z.array(startupCreditsVerificationRequiredInputSchema).max(20),
|
|
799
|
+
decision_ref: digestSchema.nullable(),
|
|
800
|
+
publication_release_id: digestSchema.nullable(),
|
|
801
|
+
public_record_url: z.url({ protocol: /^https$/u }).nullable(),
|
|
802
|
+
updated_at: instantSchema,
|
|
803
|
+
})
|
|
804
|
+
.strict()
|
|
805
|
+
.superRefine((status, context) => {
|
|
806
|
+
if ((status.state === "input_needed") !== status.required_input.length > 0) {
|
|
807
|
+
context.addIssue({
|
|
808
|
+
code: "custom",
|
|
809
|
+
path: ["required_input"],
|
|
810
|
+
message: "Only an input-needed verification may carry required input.",
|
|
811
|
+
});
|
|
812
|
+
}
|
|
813
|
+
if (status.state === "live" &&
|
|
814
|
+
(!status.decision_ref || !status.publication_release_id || !status.public_record_url)) {
|
|
815
|
+
context.addIssue({
|
|
816
|
+
code: "custom",
|
|
817
|
+
path: ["state"],
|
|
818
|
+
message: "A live verification requires its decision and public readback.",
|
|
819
|
+
});
|
|
820
|
+
}
|
|
821
|
+
if (status.publication_release_id && status.state !== "live") {
|
|
822
|
+
context.addIssue({
|
|
823
|
+
code: "custom",
|
|
824
|
+
path: ["publication_release_id"],
|
|
825
|
+
message: "Only a live verification may retain its publication release.",
|
|
826
|
+
});
|
|
827
|
+
}
|
|
828
|
+
});
|
|
353
829
|
export const startupCreditsReviewResponseSchema = z
|
|
354
830
|
.object({
|
|
355
831
|
data: z
|
|
356
832
|
.object({
|
|
357
833
|
request_id: startupCreditsReviewRequestIdSchema,
|
|
358
|
-
|
|
359
|
-
|
|
834
|
+
verification: startupCreditsVerificationStatusSchema,
|
|
835
|
+
order_id: z.string().regex(/^ord_[a-f0-9]{64}$/u),
|
|
360
836
|
status_url: z.url({ protocol: /^https$/u }),
|
|
837
|
+
checkout_url: z.url({ protocol: /^https$/u }).nullable(),
|
|
361
838
|
})
|
|
362
839
|
.strict(),
|
|
363
840
|
})
|
|
@@ -380,7 +857,7 @@ export const payableProductDescriptorSchema = z
|
|
|
380
857
|
z.string().trim().min(1).max(48),
|
|
381
858
|
z.string().trim().min(1).max(48),
|
|
382
859
|
]),
|
|
383
|
-
floor_price:
|
|
860
|
+
floor_price: startupCreditsPriceSchema,
|
|
384
861
|
service_policy_url: z.url({ protocol: /^https$/u }),
|
|
385
862
|
refund_policy_url: z.url({ protocol: /^https$/u }),
|
|
386
863
|
input_example: startupCreditsReviewRequestSchema,
|
|
@@ -398,8 +875,7 @@ export const payableProductDescriptorSchema = z
|
|
|
398
875
|
});
|
|
399
876
|
const exampleDigest = `sha256:${"0".repeat(64)}`;
|
|
400
877
|
const exampleOrderId = `ord_${"0".repeat(64)}`;
|
|
401
|
-
const
|
|
402
|
-
const exampleSubmissionId = `sub_${"0".repeat(64)}`;
|
|
878
|
+
const exampleVerificationCaseId = `hvc_${"0".repeat(64)}`;
|
|
403
879
|
const exampleRequestId = `sourcey_example_${"0".repeat(32)}`;
|
|
404
880
|
export const startupCreditsReviewProductDescriptor = payableProductDescriptorSchema.parse({
|
|
405
881
|
descriptor_contract: "sourcey.payable-product-descriptor/v1alpha1",
|
|
@@ -409,96 +885,63 @@ export const startupCreditsReviewProductDescriptor = payableProductDescriptorSch
|
|
|
409
885
|
method: "POST",
|
|
410
886
|
path: "/v1/startup-credits/reviews",
|
|
411
887
|
success_status: 202,
|
|
412
|
-
service_name: "Sourcey
|
|
413
|
-
description: "
|
|
414
|
-
tags: ["startup-credits", "startup-programs", "
|
|
415
|
-
floor_price:
|
|
888
|
+
service_name: "Sourcey Human Verification",
|
|
889
|
+
description: "Human verification and publication for a startup credit or program with Verified status.",
|
|
890
|
+
tags: ["startup-credits", "startup-programs", "listing", "human-review", "sourcey"],
|
|
891
|
+
floor_price: startupCreditsPrice,
|
|
416
892
|
service_policy_url: "https://sourcey.com/startup-credits",
|
|
417
893
|
refund_policy_url: "https://sourcey.com/terms",
|
|
418
894
|
input_example: {
|
|
895
|
+
payment_rail: "x402",
|
|
419
896
|
request_id: exampleRequestId,
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
897
|
+
target: {
|
|
898
|
+
kind: "new_listing",
|
|
899
|
+
draft: {
|
|
900
|
+
standing_result: {
|
|
901
|
+
result_contract: "sourcey.standing-result/v1alpha1",
|
|
902
|
+
policy_digest: exampleDigest,
|
|
903
|
+
evidence_digest: exampleDigest,
|
|
904
|
+
registrable_domain: "example.invalid",
|
|
905
|
+
official_source_url: "https://example.invalid/startups",
|
|
906
|
+
route: "human_verification_required",
|
|
907
|
+
reasons: ["Inert discovery example."],
|
|
908
|
+
evaluated_at: "2026-01-01T00:00:00.000Z",
|
|
909
|
+
expires_at: "2026-01-01T01:00:00.000Z",
|
|
910
|
+
result_digest: exampleDigest,
|
|
911
|
+
},
|
|
912
|
+
company: {
|
|
913
|
+
name: "Example Company",
|
|
914
|
+
domain: "example.invalid",
|
|
915
|
+
category: "devtools-other",
|
|
916
|
+
summary: "An inert company used only to describe the request contract.",
|
|
917
|
+
site_url: "https://example.invalid",
|
|
918
|
+
},
|
|
919
|
+
offer: {
|
|
920
|
+
title: "Example startup program",
|
|
921
|
+
summary: "An inert offer used only to describe the request contract.",
|
|
922
|
+
benefit: "An inert example benefit.",
|
|
923
|
+
eligibility: "An inert example eligibility statement.",
|
|
924
|
+
access_method: "form",
|
|
925
|
+
access_url: "https://example.invalid/apply",
|
|
926
|
+
},
|
|
447
927
|
},
|
|
448
928
|
},
|
|
449
929
|
},
|
|
450
930
|
output_example: {
|
|
451
931
|
data: {
|
|
452
932
|
request_id: exampleRequestId,
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
product_definition_digest: exampleDigest,
|
|
462
|
-
funded_work_intent_id: `fwi_${"0".repeat(64)}`,
|
|
463
|
-
funded_work_intent_digest: exampleDigest,
|
|
464
|
-
owner_work_ref: exampleSubmissionId,
|
|
465
|
-
amount: { currency: "usd", minor_units: 2_500 },
|
|
466
|
-
payment_state: "paid",
|
|
467
|
-
payment_attempt_id: exampleAttemptId,
|
|
468
|
-
work_state: "queued",
|
|
469
|
-
paid_at: "2026-01-01T00:00:01.000Z",
|
|
470
|
-
sla_due_at: "2026-01-06T23:59:59.000+11:00",
|
|
471
|
-
refund_reason: null,
|
|
472
|
-
refund_requested_at: null,
|
|
473
|
-
refunded_at: null,
|
|
474
|
-
fulfilment_receipt_digest: null,
|
|
475
|
-
failure_receipt_digest: null,
|
|
476
|
-
created_at: "2026-01-01T00:00:00.000Z",
|
|
477
|
-
updated_at: "2026-01-01T00:00:01.000Z",
|
|
478
|
-
},
|
|
479
|
-
payment_attempt: {
|
|
480
|
-
attempt_contract: "sourcey.payment-attempt/v1alpha1",
|
|
481
|
-
attempt_id: exampleAttemptId,
|
|
482
|
-
order_id: exampleOrderId,
|
|
483
|
-
request_binding_digest: exampleDigest,
|
|
484
|
-
amount: { currency: "usd", minor_units: 2_500 },
|
|
485
|
-
rail: "x402",
|
|
486
|
-
state: "settled",
|
|
487
|
-
resource: "https://sourcey.invalid/v1/startup-credits/reviews",
|
|
488
|
-
challenge_digest: exampleDigest,
|
|
489
|
-
payment_payload_digest: exampleDigest,
|
|
490
|
-
payment_requirements_digest: exampleDigest,
|
|
491
|
-
payment_ref: "runx:x402-payment:example",
|
|
492
|
-
verification_ref: "runx:payment-verification:example",
|
|
493
|
-
settlement_ref: "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
494
|
-
payer_ref: "eip155:8453:0x0000000000000000000000000000000000000000",
|
|
495
|
-
refund_ref: null,
|
|
496
|
-
expires_at: "2026-01-01T01:00:00.000Z",
|
|
497
|
-
created_at: "2026-01-01T00:00:00.000Z",
|
|
498
|
-
updated_at: "2026-01-01T00:00:01.000Z",
|
|
499
|
-
},
|
|
933
|
+
verification: {
|
|
934
|
+
verification_case_id: exampleVerificationCaseId,
|
|
935
|
+
state: "verifying",
|
|
936
|
+
required_input: [],
|
|
937
|
+
decision_ref: null,
|
|
938
|
+
publication_release_id: null,
|
|
939
|
+
public_record_url: null,
|
|
940
|
+
updated_at: "2026-01-01T00:00:01.000Z",
|
|
500
941
|
},
|
|
501
|
-
|
|
942
|
+
order_id: exampleOrderId,
|
|
943
|
+
status_url: `https://sourcey.invalid/v1/startup-credits/reviews/${exampleRequestId}`,
|
|
944
|
+
checkout_url: null,
|
|
502
945
|
},
|
|
503
946
|
},
|
|
504
947
|
});
|