openapi: 3.1.1 info: title: SkillEntry — Shared Type version: 2.1.0 description: 'Shared type representing a single skill or credential held by a candidate. Supports graceful degradation: a SkillEntry is valid with no VC attached (self-declared), and enriches progressively as VC attestation becomes available. Used by CandidateProfileResourceAttributes. ' license: name: CC-BY-NC-SA 4.0 International contact: name: Beckn Labs url: https://beckn.io components: schemas: SkillEntry: type: object description: 'A single skill, qualification, or credential held by a candidate. The attested flag and proof_request_url are optional — allowing the schema to function in early-stage ecosystems where VC infrastructure is not yet universal. As VCs become available for specific skills, the proof_request_url can be populated without any schema change. ' required: - category - subtype - attested properties: category: type: string description: Broad class of the credential or skill held. x-jsonld-id: se:category enum: - SKILL - DEGREE - EXPERIENCE - LICENSE - CERTIFICATION - ACCREDITATION - AFFILIATION - OTHER subtype: type: string description: 'Specific skill or credential. Examples: "AWS_SAA", "BTECH_CS", "LMV_LICENSE", "Java_SE_11", "CNC_Operator_Level2". ' x-jsonld-id: se:subtype level: type: string description: 'Optional proficiency or qualification level. Examples: "BEGINNER", "PROFESSIONAL", "ADVANCED", "3_YEARS_EXP", "NQF_Level_4". ' x-jsonld-id: se:level attested: type: boolean description: 'Whether this skill entry is backed by a verifiable credential (VC). false = self-declared (no VC yet); true = VC exists and is resolvable via proof_request_url. Employers can discover self-declared skills but know they are unverified. ' x-jsonld-id: se:attested proof_request_url: type: string format: uri description: 'URL of the DeDi proof-request endpoint scoped to this specific credential. Only present when attested = true. An employer BAP can call this endpoint to trigger a Verifiable Presentation (VP) request. The VC payload itself never leaves the holder''s wallet — only a signed verification response is returned by the orchestrator. Example: "https://dedi.example.net/proof-request/did:ex:123/skill/AWS_SAA" ' x-jsonld-id: se:proofRequestUrl