Download OpenAPI specification:
OpenAPI normative surface for GQTW wallet interoperability contracts.
This OpenAPI file is the normative endpoint contract for the GQTW profile.
Semantics:
Versioning strategy:
Returns machine-readable metadata for one GQTW profile, including supported proof profiles, supported upstream host-profile operations, and conformance dependencies.
| profileId required | string (Identifier) [ 1 .. 128 ] characters ^[A-Za-z0-9._:-]+$ |
{- "profileId": "string",
- "profileVersion": "string",
- "proofProfiles": [
- "bbs-profile"
], - "upstreamRequirements": [
- "string"
], - "gqtsOperations": [
- "getSchemeDescriptor"
], - "gqscdProfileRefs": [
- "string"
]
}Accepts a relying-party request that asks for one or more selectively disclosed claims. Wallet implementations MUST bind all accepted requests to explicit challenge and audience values.
| requestId required | string (Identifier) [ 1 .. 128 ] characters ^[A-Za-z0-9._:-]+$ |
| challenge required | string >= 16 characters |
| audience required | string non-empty |
required | object (RelyingPartyDescriptor) |
required | Array of objects (ClaimRequest) non-empty |
| selectiveDisclosureRequired | boolean Default: true |
| proofProfile | string Enum: "bbs-profile" "oprf-profile" "sd-profile" "profile-extension" |
| expiresAt required | string <date-time> (IsoDateTime) |
{- "requestId": "string",
- "challenge": "stringstringstri",
- "audience": "string",
- "relyingParty": {
- "relyingPartyId": "string",
- "registrationCertificate": "string",
- "registrationJurisdiction": "string"
}, - "requestedClaims": [
- {
- "claimId": "string",
- "purpose": "string",
- "required": true
}
], - "selectiveDisclosureRequired": true,
- "proofProfile": "bbs-profile",
- "expiresAt": "2019-08-24T14:15:22Z"
}{- "requestId": "string",
- "status": "accepted",
- "consentHandle": "string",
- "expiresAt": "2019-08-24T14:15:22Z"
}Submits the holder-approved presentation output for one presentation request. The submission payload can contain VC/VP-family artifacts and profile-defined selective disclosure proofs.
| requestId required | string (Identifier) [ 1 .. 128 ] characters ^[A-Za-z0-9._:-]+$ |
| requestId required | string (Identifier) [ 1 .. 128 ] characters ^[A-Za-z0-9._:-]+$ |
| holderDid required | string (DidUri) >= 8 characters ^did:[a-z0-9]+:.+$ |
required | object (ProofArtifactEnvelope) VC/VP-family artifact envelope or profile-equivalent object. |
Array of objects (ClaimDisclosure) | |
required | object (ConsentReceipt) |
{- "requestId": "string",
- "holderDid": "stringst",
- "proofArtifact": {
- "format": "vc",
- "artifact": { },
- "proof": { }
}, - "disclosedClaims": [
- {
- "claimId": "string",
- "valueDigest": "string",
- "value": null
}
], - "consentReceipt": {
- "consentHandle": "string",
- "approvedAt": "2019-08-24T14:15:22Z",
- "userApprovedObjectDigest": "string",
- "gqscdEvidenceRef": "string"
}
}{- "requestId": "string",
- "mechanicalValidity": "valid",
- "recognitionStatus": "out-of-scope",
- "checkedAt": "2019-08-24T14:15:22Z",
- "failureCodes": [
- "string"
]
}Accepts a compact head-state hint so wallet implementations can decide if heavier retrieval is needed. This operation does not replace authoritative retrieval from GQTS endpoints.
| logId required | string (Identifier) [ 1 .. 128 ] characters ^[A-Za-z0-9._:-]+$ |
| hostOrigin required | string <uri> (Uri) |
| headToken required | string (Identifier) [ 1 .. 128 ] characters ^[A-Za-z0-9._:-]+$ |
| headDigest required | string^[A-Za-z0-9_-]{16,}$ |
| observedAt required | string <date-time> (IsoDateTime) |
{- "logId": "string",
- "headToken": "string",
- "headDigest": "string",
- "observedAt": "2019-08-24T14:15:22Z"
}{- "receiptId": "string",
- "acceptedAt": "2019-08-24T14:15:22Z",
- "status": "accepted"
}Invokes a protected-key operation through a GQSCD-conformant interface. User intent and user-approved object digest binding are required inputs.
| invocationId required | string (Identifier) [ 1 .. 128 ] characters ^[A-Za-z0-9._:-]+$ |
| operationType required | string Enum: "sign" "seal" "attest" |
| keyReference required | string |
| userApprovedObjectDigest required | string^[A-Za-z0-9_-]{16,}$ |
| challenge required | string >= 16 characters |
| audience required | string non-empty |
{- "invocationId": "string",
- "operationType": "sign",
- "keyReference": "string",
- "userApprovedObjectDigest": "string",
- "challenge": "stringstringstri",
- "audience": "string"
}{- "invocationId": "string",
- "status": "succeeded",
- "signatureObject": { },
- "evidenceReferences": [
- "string"
]
}Exports wallet-private material as an encrypted opaque package. The package is designed for controlled migration and backup, not public publication.
| exportId required | string (Identifier) [ 1 .. 128 ] characters ^[A-Za-z0-9._:-]+$ |
required | object |
| includePrivateLog | boolean Default: true |
| includeArtifacts | boolean Default: true |
{- "exportId": "string",
- "recipientPublicKey": { },
- "includePrivateLog": true,
- "includeArtifacts": true
}{- "packageId": "string",
- "cipherSuite": "string",
- "ciphertext": "string",
- "digest": "string",
- "createdAt": "2019-08-24T14:15:22Z"
}Imports an opaque encrypted package and performs integrity checks before activation.
required | object (WalletExportPackage) |
object |
{- "package": {
- "packageId": "string",
- "cipherSuite": "string",
- "ciphertext": "string",
- "digest": "string",
- "createdAt": "2019-08-24T14:15:22Z"
}, - "decryptionContext": { }
}{- "status": "imported",
- "activatedHeadToken": "string",
- "migratedArtifactCount": 0
}Submits an erasure request for data previously disclosed through wallet-mediated presentation flows.
| requestId required | string (Identifier) [ 1 .. 128 ] characters ^[A-Za-z0-9._:-]+$ |
| relyingPartyId required | string (Identifier) [ 1 .. 128 ] characters ^[A-Za-z0-9._:-]+$ |
| legalBasis | string Default: "gdpr-article-17" |
| proofOfInteraction | string |
| submittedAt required | string <date-time> (IsoDateTime) |
{- "requestId": "string",
- "relyingPartyId": "string",
- "legalBasis": "gdpr-article-17",
- "proofOfInteraction": "string",
- "submittedAt": "2019-08-24T14:15:22Z"
}{- "requestId": "string",
- "status": "accepted",
- "reference": "string"
}Submits signed evidence about host conflicts, replay attempts, policy abuse, or profile violations.
| reportId required | string (Identifier) [ 1 .. 128 ] characters ^[A-Za-z0-9._:-]+$ |
| incidentType required | string Enum: "host-divergence" "fork-detected" "replay-attempt" "policy-abuse" "profile-violation" |
| affectedHost | string <uri> (Uri) |
| affectedLogId | string (Identifier) [ 1 .. 128 ] characters ^[A-Za-z0-9._:-]+$ |
| reporterDid | string (DidUri) >= 8 characters ^did:[a-z0-9]+:.+$ |
| reportedAt required | string <date-time> (IsoDateTime) |
required | Array of objects (IncidentEvidenceItem) non-empty |
object |
{- "reportId": "string",
- "incidentType": "host-divergence",
- "affectedLogId": "string",
- "reporterDid": "stringst",
- "reportedAt": "2019-08-24T14:15:22Z",
- "signature": { }
}{- "receiptId": "string",
- "acceptedAt": "2019-08-24T14:15:22Z",
- "status": "accepted"
}