@takuhon/core 0.1.1 → 0.3.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/dist/index.d.ts +1541 -321
- package/dist/index.js +734 -8
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/takuhon.schema.json +256 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var $schema = "https://json-schema.org/draft/2020-12/schema";
|
|
2
|
-
var $id = "https://takuhon.example/schemas/0.
|
|
2
|
+
var $id = "https://takuhon.example/schemas/0.2.0/takuhon.schema.json";
|
|
3
3
|
var title = "Takuhon Profile";
|
|
4
4
|
var description = "Portable profile data format consumed by @takuhon/core. The canonical contract for profile content authored as takuhon.json.";
|
|
5
5
|
var type = "object";
|
|
@@ -52,6 +52,69 @@ var properties = {
|
|
|
52
52
|
$ref: "#/$defs/Skill"
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
|
+
certifications: {
|
|
56
|
+
type: "array",
|
|
57
|
+
maxItems: 50,
|
|
58
|
+
items: {
|
|
59
|
+
$ref: "#/$defs/Certification"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
memberships: {
|
|
63
|
+
type: "array",
|
|
64
|
+
maxItems: 50,
|
|
65
|
+
items: {
|
|
66
|
+
$ref: "#/$defs/Membership"
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
volunteering: {
|
|
70
|
+
type: "array",
|
|
71
|
+
maxItems: 50,
|
|
72
|
+
items: {
|
|
73
|
+
$ref: "#/$defs/Volunteering"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
honors: {
|
|
77
|
+
type: "array",
|
|
78
|
+
maxItems: 50,
|
|
79
|
+
items: {
|
|
80
|
+
$ref: "#/$defs/Honor"
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
education: {
|
|
84
|
+
type: "array",
|
|
85
|
+
maxItems: 30,
|
|
86
|
+
items: {
|
|
87
|
+
$ref: "#/$defs/Education"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
publications: {
|
|
91
|
+
type: "array",
|
|
92
|
+
maxItems: 100,
|
|
93
|
+
items: {
|
|
94
|
+
$ref: "#/$defs/Publication"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
languages: {
|
|
98
|
+
type: "array",
|
|
99
|
+
maxItems: 30,
|
|
100
|
+
items: {
|
|
101
|
+
$ref: "#/$defs/Language"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
courses: {
|
|
105
|
+
type: "array",
|
|
106
|
+
maxItems: 100,
|
|
107
|
+
items: {
|
|
108
|
+
$ref: "#/$defs/Course"
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
patents: {
|
|
112
|
+
type: "array",
|
|
113
|
+
maxItems: 50,
|
|
114
|
+
items: {
|
|
115
|
+
$ref: "#/$defs/Patent"
|
|
116
|
+
}
|
|
117
|
+
},
|
|
55
118
|
contact: {
|
|
56
119
|
$ref: "#/$defs/Contact"
|
|
57
120
|
},
|
|
@@ -489,6 +552,9 @@ var $defs = {
|
|
|
489
552
|
},
|
|
490
553
|
contentLicense: {
|
|
491
554
|
$ref: "#/$defs/ContentLicense"
|
|
555
|
+
},
|
|
556
|
+
privacy: {
|
|
557
|
+
$ref: "#/$defs/MetaPrivacy"
|
|
492
558
|
}
|
|
493
559
|
}
|
|
494
560
|
},
|
|
@@ -529,262 +595,1067 @@ var $defs = {
|
|
|
529
595
|
description: "Free-form rights statement (used when spdxId='Proprietary' or for additional notices)."
|
|
530
596
|
}
|
|
531
597
|
}
|
|
532
|
-
}
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
598
|
+
},
|
|
599
|
+
MetaPrivacy: {
|
|
600
|
+
type: "object",
|
|
601
|
+
additionalProperties: true,
|
|
602
|
+
description: "Opt-out flags that strip personally identifying fields from public API output (GET /api/profile, /api/jsonld, /takuhon.json). Admin endpoints (PUT /api/admin/*, GET /api/export) ignore these flags. Privacy-by-default: omitting the object or individual flags is equivalent to true.",
|
|
603
|
+
properties: {
|
|
604
|
+
hideCredentialIds: {
|
|
605
|
+
type: "boolean",
|
|
606
|
+
"default": true,
|
|
607
|
+
description: "When true (default), strip certifications[*].credentialId from public responses."
|
|
608
|
+
},
|
|
609
|
+
hideEducationGrades: {
|
|
610
|
+
type: "boolean",
|
|
611
|
+
"default": true,
|
|
612
|
+
description: "When true (default), strip education[*].grade from public responses."
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
},
|
|
616
|
+
Certification: {
|
|
617
|
+
type: "object",
|
|
618
|
+
additionalProperties: true,
|
|
619
|
+
required: [
|
|
620
|
+
"id",
|
|
621
|
+
"title",
|
|
622
|
+
"issuingOrganization",
|
|
623
|
+
"issueDate"
|
|
624
|
+
],
|
|
625
|
+
properties: {
|
|
626
|
+
id: {
|
|
627
|
+
$ref: "#/$defs/Slug"
|
|
628
|
+
},
|
|
629
|
+
title: {
|
|
630
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
631
|
+
},
|
|
632
|
+
issuingOrganization: {
|
|
633
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
634
|
+
},
|
|
635
|
+
issueDate: {
|
|
636
|
+
$ref: "#/$defs/YearMonth"
|
|
637
|
+
},
|
|
638
|
+
expirationDate: {
|
|
639
|
+
anyOf: [
|
|
640
|
+
{
|
|
641
|
+
$ref: "#/$defs/YearMonth"
|
|
642
|
+
},
|
|
643
|
+
{
|
|
644
|
+
type: "null"
|
|
645
|
+
}
|
|
646
|
+
],
|
|
647
|
+
description: "null = explicitly 'no expiration'. Omit if unknown/unstated."
|
|
648
|
+
},
|
|
649
|
+
credentialId: {
|
|
650
|
+
type: "string",
|
|
651
|
+
minLength: 1,
|
|
652
|
+
maxLength: 100,
|
|
653
|
+
description: "License or certificate number. Public exposure controlled by meta.privacy.hideCredentialIds."
|
|
654
|
+
},
|
|
655
|
+
url: {
|
|
656
|
+
$ref: "#/$defs/Url"
|
|
657
|
+
},
|
|
658
|
+
order: {
|
|
659
|
+
type: "integer",
|
|
660
|
+
minimum: 0
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
},
|
|
664
|
+
Membership: {
|
|
665
|
+
type: "object",
|
|
666
|
+
additionalProperties: true,
|
|
667
|
+
required: [
|
|
668
|
+
"id",
|
|
669
|
+
"organization",
|
|
670
|
+
"startDate"
|
|
671
|
+
],
|
|
672
|
+
properties: {
|
|
673
|
+
id: {
|
|
674
|
+
$ref: "#/$defs/Slug"
|
|
675
|
+
},
|
|
676
|
+
organization: {
|
|
677
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
678
|
+
},
|
|
679
|
+
role: {
|
|
680
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
681
|
+
},
|
|
682
|
+
description: {
|
|
683
|
+
$ref: "#/$defs/LocalizedBody"
|
|
684
|
+
},
|
|
685
|
+
startDate: {
|
|
686
|
+
$ref: "#/$defs/YearMonth"
|
|
687
|
+
},
|
|
688
|
+
endDate: {
|
|
689
|
+
anyOf: [
|
|
690
|
+
{
|
|
691
|
+
$ref: "#/$defs/YearMonth"
|
|
692
|
+
},
|
|
693
|
+
{
|
|
694
|
+
type: "null"
|
|
695
|
+
}
|
|
696
|
+
],
|
|
697
|
+
description: "null = ongoing. Omit if unknown."
|
|
698
|
+
},
|
|
699
|
+
isCurrent: {
|
|
700
|
+
type: "boolean"
|
|
701
|
+
},
|
|
702
|
+
url: {
|
|
703
|
+
$ref: "#/$defs/Url"
|
|
704
|
+
},
|
|
705
|
+
order: {
|
|
706
|
+
type: "integer",
|
|
707
|
+
minimum: 0
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
},
|
|
711
|
+
Volunteering: {
|
|
712
|
+
type: "object",
|
|
713
|
+
additionalProperties: true,
|
|
714
|
+
required: [
|
|
715
|
+
"id",
|
|
716
|
+
"organization",
|
|
717
|
+
"role",
|
|
718
|
+
"startDate"
|
|
719
|
+
],
|
|
720
|
+
properties: {
|
|
721
|
+
id: {
|
|
722
|
+
$ref: "#/$defs/Slug"
|
|
723
|
+
},
|
|
724
|
+
organization: {
|
|
725
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
726
|
+
},
|
|
727
|
+
role: {
|
|
728
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
729
|
+
},
|
|
730
|
+
cause: {
|
|
731
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
732
|
+
},
|
|
733
|
+
description: {
|
|
734
|
+
$ref: "#/$defs/LocalizedBody"
|
|
735
|
+
},
|
|
736
|
+
startDate: {
|
|
737
|
+
$ref: "#/$defs/YearMonth"
|
|
738
|
+
},
|
|
739
|
+
endDate: {
|
|
740
|
+
anyOf: [
|
|
741
|
+
{
|
|
742
|
+
$ref: "#/$defs/YearMonth"
|
|
743
|
+
},
|
|
744
|
+
{
|
|
745
|
+
type: "null"
|
|
746
|
+
}
|
|
747
|
+
]
|
|
748
|
+
},
|
|
749
|
+
isCurrent: {
|
|
750
|
+
type: "boolean"
|
|
751
|
+
},
|
|
752
|
+
url: {
|
|
753
|
+
$ref: "#/$defs/Url"
|
|
754
|
+
},
|
|
755
|
+
order: {
|
|
756
|
+
type: "integer",
|
|
757
|
+
minimum: 0
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
},
|
|
761
|
+
Honor: {
|
|
762
|
+
type: "object",
|
|
763
|
+
additionalProperties: true,
|
|
764
|
+
required: [
|
|
765
|
+
"id",
|
|
766
|
+
"title",
|
|
767
|
+
"issuer",
|
|
768
|
+
"date"
|
|
769
|
+
],
|
|
770
|
+
properties: {
|
|
771
|
+
id: {
|
|
772
|
+
$ref: "#/$defs/Slug"
|
|
773
|
+
},
|
|
774
|
+
title: {
|
|
775
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
776
|
+
},
|
|
777
|
+
issuer: {
|
|
778
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
779
|
+
},
|
|
780
|
+
description: {
|
|
781
|
+
$ref: "#/$defs/LocalizedBody"
|
|
782
|
+
},
|
|
783
|
+
date: {
|
|
784
|
+
$ref: "#/$defs/YearMonth"
|
|
785
|
+
},
|
|
786
|
+
url: {
|
|
787
|
+
$ref: "#/$defs/Url"
|
|
788
|
+
},
|
|
789
|
+
order: {
|
|
790
|
+
type: "integer",
|
|
791
|
+
minimum: 0
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
},
|
|
795
|
+
Education: {
|
|
796
|
+
type: "object",
|
|
797
|
+
additionalProperties: true,
|
|
798
|
+
required: [
|
|
799
|
+
"id",
|
|
800
|
+
"institution",
|
|
801
|
+
"startDate"
|
|
802
|
+
],
|
|
803
|
+
properties: {
|
|
804
|
+
id: {
|
|
805
|
+
$ref: "#/$defs/Slug"
|
|
806
|
+
},
|
|
807
|
+
institution: {
|
|
808
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
809
|
+
},
|
|
810
|
+
degree: {
|
|
811
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
812
|
+
},
|
|
813
|
+
fieldOfStudy: {
|
|
814
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
815
|
+
},
|
|
816
|
+
description: {
|
|
817
|
+
$ref: "#/$defs/LocalizedBody"
|
|
818
|
+
},
|
|
819
|
+
grade: {
|
|
820
|
+
type: "string",
|
|
821
|
+
minLength: 1,
|
|
822
|
+
maxLength: 50,
|
|
823
|
+
description: "Free-form grade / class / GPA. Public exposure controlled by meta.privacy.hideEducationGrades."
|
|
824
|
+
},
|
|
825
|
+
startDate: {
|
|
826
|
+
$ref: "#/$defs/YearMonth"
|
|
827
|
+
},
|
|
828
|
+
endDate: {
|
|
829
|
+
anyOf: [
|
|
830
|
+
{
|
|
831
|
+
$ref: "#/$defs/YearMonth"
|
|
832
|
+
},
|
|
833
|
+
{
|
|
834
|
+
type: "null"
|
|
835
|
+
}
|
|
836
|
+
],
|
|
837
|
+
description: "null = currently enrolled."
|
|
838
|
+
},
|
|
839
|
+
isCurrent: {
|
|
840
|
+
type: "boolean"
|
|
841
|
+
},
|
|
842
|
+
url: {
|
|
843
|
+
$ref: "#/$defs/Url"
|
|
844
|
+
},
|
|
845
|
+
order: {
|
|
846
|
+
type: "integer",
|
|
847
|
+
minimum: 0
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
},
|
|
851
|
+
Publication: {
|
|
852
|
+
type: "object",
|
|
853
|
+
additionalProperties: true,
|
|
854
|
+
required: [
|
|
855
|
+
"id",
|
|
856
|
+
"title",
|
|
857
|
+
"date"
|
|
858
|
+
],
|
|
859
|
+
properties: {
|
|
860
|
+
id: {
|
|
861
|
+
$ref: "#/$defs/Slug"
|
|
862
|
+
},
|
|
863
|
+
title: {
|
|
864
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
865
|
+
},
|
|
866
|
+
publisher: {
|
|
867
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
868
|
+
},
|
|
869
|
+
description: {
|
|
870
|
+
$ref: "#/$defs/LocalizedBody"
|
|
871
|
+
},
|
|
872
|
+
date: {
|
|
873
|
+
$ref: "#/$defs/YearMonth"
|
|
874
|
+
},
|
|
875
|
+
url: {
|
|
876
|
+
$ref: "#/$defs/Url"
|
|
877
|
+
},
|
|
878
|
+
doi: {
|
|
879
|
+
type: "string",
|
|
880
|
+
minLength: 1,
|
|
881
|
+
maxLength: 200,
|
|
882
|
+
description: "DOI identifier (e.g. '10.1145/3548643.3548644'). The full URL goes in 'url'."
|
|
883
|
+
},
|
|
884
|
+
coAuthors: {
|
|
885
|
+
type: "array",
|
|
886
|
+
maxItems: 50,
|
|
887
|
+
items: {
|
|
888
|
+
type: "string",
|
|
889
|
+
minLength: 1,
|
|
890
|
+
maxLength: 100
|
|
891
|
+
},
|
|
892
|
+
description: "Co-author names in original script. Excludes the profile owner."
|
|
893
|
+
},
|
|
894
|
+
order: {
|
|
895
|
+
type: "integer",
|
|
896
|
+
minimum: 0
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
},
|
|
900
|
+
Language: {
|
|
901
|
+
type: "object",
|
|
902
|
+
additionalProperties: true,
|
|
903
|
+
required: [
|
|
904
|
+
"id",
|
|
905
|
+
"language",
|
|
906
|
+
"proficiency"
|
|
907
|
+
],
|
|
908
|
+
properties: {
|
|
909
|
+
id: {
|
|
910
|
+
$ref: "#/$defs/Slug"
|
|
911
|
+
},
|
|
912
|
+
language: {
|
|
913
|
+
$ref: "#/$defs/LocaleTag"
|
|
914
|
+
},
|
|
915
|
+
displayName: {
|
|
916
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
917
|
+
},
|
|
918
|
+
proficiency: {
|
|
919
|
+
type: "string",
|
|
920
|
+
"enum": [
|
|
921
|
+
"native",
|
|
922
|
+
"fluent",
|
|
923
|
+
"professional",
|
|
924
|
+
"intermediate",
|
|
925
|
+
"basic"
|
|
926
|
+
],
|
|
927
|
+
description: "LinkedIn-compatible 5-level proficiency."
|
|
928
|
+
},
|
|
929
|
+
order: {
|
|
930
|
+
type: "integer",
|
|
931
|
+
minimum: 0
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
},
|
|
935
|
+
Course: {
|
|
936
|
+
type: "object",
|
|
937
|
+
additionalProperties: true,
|
|
938
|
+
required: [
|
|
939
|
+
"id",
|
|
940
|
+
"title"
|
|
941
|
+
],
|
|
942
|
+
properties: {
|
|
943
|
+
id: {
|
|
944
|
+
$ref: "#/$defs/Slug"
|
|
945
|
+
},
|
|
946
|
+
title: {
|
|
947
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
948
|
+
},
|
|
949
|
+
provider: {
|
|
950
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
951
|
+
},
|
|
952
|
+
courseNumber: {
|
|
953
|
+
type: "string",
|
|
954
|
+
minLength: 1,
|
|
955
|
+
maxLength: 50
|
|
956
|
+
},
|
|
957
|
+
description: {
|
|
958
|
+
$ref: "#/$defs/LocalizedBody"
|
|
959
|
+
},
|
|
960
|
+
completionDate: {
|
|
961
|
+
$ref: "#/$defs/YearMonth"
|
|
962
|
+
},
|
|
963
|
+
certificateUrl: {
|
|
964
|
+
$ref: "#/$defs/Url"
|
|
965
|
+
},
|
|
966
|
+
relatedEducationId: {
|
|
967
|
+
$ref: "#/$defs/Slug",
|
|
968
|
+
description: "Optional reference to an education[].id (e.g. for university coursework)."
|
|
969
|
+
},
|
|
970
|
+
order: {
|
|
971
|
+
type: "integer",
|
|
972
|
+
minimum: 0
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
},
|
|
976
|
+
Patent: {
|
|
977
|
+
type: "object",
|
|
978
|
+
additionalProperties: true,
|
|
979
|
+
required: [
|
|
980
|
+
"id",
|
|
981
|
+
"title",
|
|
982
|
+
"patentNumber",
|
|
983
|
+
"status"
|
|
984
|
+
],
|
|
985
|
+
properties: {
|
|
986
|
+
id: {
|
|
987
|
+
$ref: "#/$defs/Slug"
|
|
988
|
+
},
|
|
989
|
+
title: {
|
|
990
|
+
$ref: "#/$defs/LocalizedTitle"
|
|
991
|
+
},
|
|
992
|
+
patentNumber: {
|
|
993
|
+
type: "string",
|
|
994
|
+
minLength: 1,
|
|
995
|
+
maxLength: 100
|
|
996
|
+
},
|
|
997
|
+
office: {
|
|
998
|
+
type: "string",
|
|
999
|
+
maxLength: 100,
|
|
1000
|
+
description: "Patent office name (e.g. 'USPTO', 'JPO', 'EPO')."
|
|
1001
|
+
},
|
|
1002
|
+
status: {
|
|
1003
|
+
type: "string",
|
|
1004
|
+
"enum": [
|
|
1005
|
+
"pending",
|
|
1006
|
+
"issued",
|
|
1007
|
+
"expired",
|
|
1008
|
+
"abandoned"
|
|
1009
|
+
]
|
|
1010
|
+
},
|
|
1011
|
+
description: {
|
|
1012
|
+
$ref: "#/$defs/LocalizedBody"
|
|
1013
|
+
},
|
|
1014
|
+
filingDate: {
|
|
1015
|
+
$ref: "#/$defs/YearMonth"
|
|
1016
|
+
},
|
|
1017
|
+
grantDate: {
|
|
1018
|
+
$ref: "#/$defs/YearMonth"
|
|
1019
|
+
},
|
|
1020
|
+
url: {
|
|
1021
|
+
$ref: "#/$defs/Url"
|
|
1022
|
+
},
|
|
1023
|
+
coInventors: {
|
|
1024
|
+
type: "array",
|
|
1025
|
+
maxItems: 20,
|
|
1026
|
+
items: {
|
|
1027
|
+
type: "string",
|
|
1028
|
+
minLength: 1,
|
|
1029
|
+
maxLength: 100
|
|
1030
|
+
}
|
|
1031
|
+
},
|
|
1032
|
+
order: {
|
|
1033
|
+
type: "integer",
|
|
1034
|
+
minimum: 0
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
1038
|
+
};
|
|
1039
|
+
var schemaJson = {
|
|
1040
|
+
$schema: $schema,
|
|
1041
|
+
$id: $id,
|
|
1042
|
+
title: title,
|
|
1043
|
+
description: description,
|
|
1044
|
+
type: type,
|
|
1045
|
+
additionalProperties: additionalProperties,
|
|
1046
|
+
required: required,
|
|
1047
|
+
properties: properties,
|
|
1048
|
+
$defs: $defs
|
|
1049
|
+
};
|
|
1050
|
+
|
|
1051
|
+
/**
|
|
1052
|
+
* Re-exports the canonical JSON Schema for takuhon profiles.
|
|
1053
|
+
*
|
|
1054
|
+
* The schema source of truth lives at `packages/core/takuhon.schema.json`
|
|
1055
|
+
* (also distributed via the `@takuhon/core/schema.json` sub-path). This module
|
|
1056
|
+
* is the convenient ESM-side entry point for consumers that want to feed it
|
|
1057
|
+
* directly to a JSON Schema validator (e.g. Ajv) without a filesystem read.
|
|
1058
|
+
*/
|
|
1059
|
+
|
|
1060
|
+
declare const schema: {
|
|
1061
|
+
$schema: string;
|
|
1062
|
+
$id: string;
|
|
1063
|
+
title: string;
|
|
1064
|
+
description: string;
|
|
1065
|
+
type: string;
|
|
1066
|
+
additionalProperties: boolean;
|
|
1067
|
+
required: string[];
|
|
1068
|
+
properties: {
|
|
1069
|
+
schemaVersion: {
|
|
1070
|
+
type: string;
|
|
1071
|
+
pattern: string;
|
|
1072
|
+
description: string;
|
|
1073
|
+
};
|
|
1074
|
+
profile: {
|
|
1075
|
+
$ref: string;
|
|
1076
|
+
};
|
|
1077
|
+
links: {
|
|
1078
|
+
type: string;
|
|
1079
|
+
maxItems: number;
|
|
1080
|
+
items: {
|
|
1081
|
+
$ref: string;
|
|
1082
|
+
};
|
|
1083
|
+
};
|
|
1084
|
+
careers: {
|
|
1085
|
+
type: string;
|
|
1086
|
+
maxItems: number;
|
|
1087
|
+
items: {
|
|
1088
|
+
$ref: string;
|
|
1089
|
+
};
|
|
1090
|
+
};
|
|
1091
|
+
projects: {
|
|
1092
|
+
type: string;
|
|
1093
|
+
maxItems: number;
|
|
1094
|
+
items: {
|
|
1095
|
+
$ref: string;
|
|
1096
|
+
};
|
|
1097
|
+
};
|
|
1098
|
+
skills: {
|
|
1099
|
+
type: string;
|
|
1100
|
+
maxItems: number;
|
|
1101
|
+
items: {
|
|
1102
|
+
$ref: string;
|
|
1103
|
+
};
|
|
1104
|
+
};
|
|
1105
|
+
certifications: {
|
|
1106
|
+
type: string;
|
|
1107
|
+
maxItems: number;
|
|
1108
|
+
items: {
|
|
1109
|
+
$ref: string;
|
|
1110
|
+
};
|
|
1111
|
+
};
|
|
1112
|
+
memberships: {
|
|
1113
|
+
type: string;
|
|
1114
|
+
maxItems: number;
|
|
1115
|
+
items: {
|
|
1116
|
+
$ref: string;
|
|
1117
|
+
};
|
|
1118
|
+
};
|
|
1119
|
+
volunteering: {
|
|
1120
|
+
type: string;
|
|
1121
|
+
maxItems: number;
|
|
1122
|
+
items: {
|
|
1123
|
+
$ref: string;
|
|
1124
|
+
};
|
|
1125
|
+
};
|
|
1126
|
+
honors: {
|
|
1127
|
+
type: string;
|
|
1128
|
+
maxItems: number;
|
|
1129
|
+
items: {
|
|
1130
|
+
$ref: string;
|
|
1131
|
+
};
|
|
1132
|
+
};
|
|
1133
|
+
education: {
|
|
1134
|
+
type: string;
|
|
1135
|
+
maxItems: number;
|
|
1136
|
+
items: {
|
|
1137
|
+
$ref: string;
|
|
1138
|
+
};
|
|
1139
|
+
};
|
|
1140
|
+
publications: {
|
|
1141
|
+
type: string;
|
|
1142
|
+
maxItems: number;
|
|
1143
|
+
items: {
|
|
1144
|
+
$ref: string;
|
|
1145
|
+
};
|
|
1146
|
+
};
|
|
1147
|
+
languages: {
|
|
1148
|
+
type: string;
|
|
1149
|
+
maxItems: number;
|
|
1150
|
+
items: {
|
|
1151
|
+
$ref: string;
|
|
1152
|
+
};
|
|
1153
|
+
};
|
|
1154
|
+
courses: {
|
|
1155
|
+
type: string;
|
|
1156
|
+
maxItems: number;
|
|
1157
|
+
items: {
|
|
1158
|
+
$ref: string;
|
|
1159
|
+
};
|
|
1160
|
+
};
|
|
1161
|
+
patents: {
|
|
1162
|
+
type: string;
|
|
1163
|
+
maxItems: number;
|
|
1164
|
+
items: {
|
|
1165
|
+
$ref: string;
|
|
1166
|
+
};
|
|
1167
|
+
};
|
|
1168
|
+
contact: {
|
|
1169
|
+
$ref: string;
|
|
1170
|
+
};
|
|
1171
|
+
settings: {
|
|
1172
|
+
$ref: string;
|
|
1173
|
+
};
|
|
1174
|
+
meta: {
|
|
1175
|
+
$ref: string;
|
|
1176
|
+
};
|
|
1177
|
+
};
|
|
1178
|
+
$defs: {
|
|
1179
|
+
LocaleTag: {
|
|
1180
|
+
type: string;
|
|
1181
|
+
minLength: number;
|
|
1182
|
+
maxLength: number;
|
|
1183
|
+
pattern: string;
|
|
1184
|
+
description: string;
|
|
1185
|
+
};
|
|
1186
|
+
Iso3166Alpha2: {
|
|
1187
|
+
type: string;
|
|
1188
|
+
pattern: string;
|
|
1189
|
+
description: string;
|
|
1190
|
+
};
|
|
1191
|
+
YearMonth: {
|
|
1192
|
+
type: string;
|
|
1193
|
+
pattern: string;
|
|
1194
|
+
description: string;
|
|
1195
|
+
};
|
|
1196
|
+
IsoDateTime: {
|
|
1197
|
+
type: string;
|
|
1198
|
+
format: string;
|
|
1199
|
+
description: string;
|
|
1200
|
+
};
|
|
1201
|
+
Url: {
|
|
1202
|
+
type: string;
|
|
1203
|
+
format: string;
|
|
1204
|
+
maxLength: number;
|
|
1205
|
+
};
|
|
1206
|
+
Email: {
|
|
1207
|
+
type: string;
|
|
1208
|
+
format: string;
|
|
1209
|
+
maxLength: number;
|
|
1210
|
+
};
|
|
1211
|
+
Slug: {
|
|
1212
|
+
type: string;
|
|
1213
|
+
minLength: number;
|
|
1214
|
+
maxLength: number;
|
|
1215
|
+
pattern: string;
|
|
1216
|
+
description: string;
|
|
1217
|
+
};
|
|
1218
|
+
LocalizedTitle: {
|
|
1219
|
+
type: string;
|
|
1220
|
+
minProperties: number;
|
|
1221
|
+
propertyNames: {
|
|
1222
|
+
type: string;
|
|
1223
|
+
pattern: string;
|
|
1224
|
+
};
|
|
1225
|
+
additionalProperties: {
|
|
1226
|
+
type: string;
|
|
1227
|
+
minLength: number;
|
|
1228
|
+
maxLength: number;
|
|
1229
|
+
};
|
|
1230
|
+
description: string;
|
|
1231
|
+
};
|
|
1232
|
+
LocalizedBody: {
|
|
1233
|
+
type: string;
|
|
1234
|
+
minProperties: number;
|
|
1235
|
+
propertyNames: {
|
|
1236
|
+
type: string;
|
|
1237
|
+
pattern: string;
|
|
1238
|
+
};
|
|
1239
|
+
additionalProperties: {
|
|
1240
|
+
type: string;
|
|
1241
|
+
minLength: number;
|
|
1242
|
+
maxLength: number;
|
|
1243
|
+
};
|
|
1244
|
+
description: string;
|
|
1245
|
+
};
|
|
1246
|
+
LinkType: {
|
|
1247
|
+
type: string;
|
|
1248
|
+
enum: string[];
|
|
1249
|
+
description: string;
|
|
1250
|
+
};
|
|
1251
|
+
Profile: {
|
|
1252
|
+
type: string;
|
|
1253
|
+
additionalProperties: boolean;
|
|
1254
|
+
required: string[];
|
|
1255
|
+
properties: {
|
|
1256
|
+
displayName: {
|
|
1257
|
+
$ref: string;
|
|
1258
|
+
};
|
|
1259
|
+
tagline: {
|
|
1260
|
+
$ref: string;
|
|
1261
|
+
};
|
|
1262
|
+
bio: {
|
|
1263
|
+
$ref: string;
|
|
1264
|
+
};
|
|
1265
|
+
avatar: {
|
|
1266
|
+
$ref: string;
|
|
1267
|
+
};
|
|
1268
|
+
location: {
|
|
1269
|
+
$ref: string;
|
|
1270
|
+
};
|
|
1271
|
+
};
|
|
1272
|
+
};
|
|
1273
|
+
Avatar: {
|
|
1274
|
+
type: string;
|
|
1275
|
+
additionalProperties: boolean;
|
|
1276
|
+
required: string[];
|
|
1277
|
+
properties: {
|
|
1278
|
+
url: {
|
|
1279
|
+
type: string;
|
|
1280
|
+
format: string;
|
|
1281
|
+
maxLength: number;
|
|
1282
|
+
description: string;
|
|
1283
|
+
};
|
|
1284
|
+
alt: {
|
|
1285
|
+
$ref: string;
|
|
1286
|
+
};
|
|
1287
|
+
};
|
|
1288
|
+
};
|
|
1289
|
+
Address: {
|
|
1290
|
+
type: string;
|
|
1291
|
+
additionalProperties: boolean;
|
|
1292
|
+
properties: {
|
|
1293
|
+
country: {
|
|
1294
|
+
$ref: string;
|
|
1295
|
+
};
|
|
1296
|
+
region: {
|
|
1297
|
+
type: string;
|
|
1298
|
+
maxLength: number;
|
|
1299
|
+
};
|
|
1300
|
+
locality: {
|
|
1301
|
+
$ref: string;
|
|
1302
|
+
};
|
|
1303
|
+
display: {
|
|
1304
|
+
$ref: string;
|
|
1305
|
+
};
|
|
1306
|
+
};
|
|
1307
|
+
};
|
|
1308
|
+
Link: {
|
|
1309
|
+
type: string;
|
|
1310
|
+
additionalProperties: boolean;
|
|
1311
|
+
required: string[];
|
|
1312
|
+
properties: {
|
|
1313
|
+
id: {
|
|
1314
|
+
$ref: string;
|
|
1315
|
+
};
|
|
1316
|
+
type: {
|
|
1317
|
+
$ref: string;
|
|
1318
|
+
};
|
|
1319
|
+
label: {
|
|
1320
|
+
$ref: string;
|
|
1321
|
+
};
|
|
1322
|
+
url: {
|
|
1323
|
+
$ref: string;
|
|
1324
|
+
};
|
|
1325
|
+
featured: {
|
|
1326
|
+
type: string;
|
|
1327
|
+
};
|
|
1328
|
+
order: {
|
|
1329
|
+
type: string;
|
|
1330
|
+
minimum: number;
|
|
1331
|
+
};
|
|
1332
|
+
iconUrl: {
|
|
1333
|
+
$ref: string;
|
|
1334
|
+
};
|
|
1335
|
+
};
|
|
1336
|
+
allOf: {
|
|
1337
|
+
if: {
|
|
1338
|
+
properties: {
|
|
1339
|
+
type: {
|
|
1340
|
+
const: string;
|
|
1341
|
+
};
|
|
1342
|
+
};
|
|
1343
|
+
required: string[];
|
|
1344
|
+
};
|
|
1345
|
+
then: {
|
|
1346
|
+
properties: {
|
|
1347
|
+
iconUrl: {
|
|
1348
|
+
$ref: string;
|
|
1349
|
+
};
|
|
1350
|
+
};
|
|
1351
|
+
required: string[];
|
|
1352
|
+
};
|
|
1353
|
+
}[];
|
|
1354
|
+
};
|
|
1355
|
+
Career: {
|
|
1356
|
+
type: string;
|
|
1357
|
+
additionalProperties: boolean;
|
|
1358
|
+
required: string[];
|
|
1359
|
+
properties: {
|
|
1360
|
+
id: {
|
|
1361
|
+
$ref: string;
|
|
1362
|
+
};
|
|
1363
|
+
organization: {
|
|
1364
|
+
$ref: string;
|
|
1365
|
+
};
|
|
1366
|
+
role: {
|
|
1367
|
+
$ref: string;
|
|
1368
|
+
};
|
|
1369
|
+
description: {
|
|
1370
|
+
$ref: string;
|
|
1371
|
+
};
|
|
1372
|
+
startDate: {
|
|
1373
|
+
$ref: string;
|
|
1374
|
+
};
|
|
1375
|
+
endDate: {
|
|
1376
|
+
anyOf: ({
|
|
1377
|
+
$ref: string;
|
|
1378
|
+
type?: undefined;
|
|
1379
|
+
} | {
|
|
1380
|
+
type: string;
|
|
1381
|
+
$ref?: undefined;
|
|
1382
|
+
})[];
|
|
1383
|
+
};
|
|
1384
|
+
isCurrent: {
|
|
1385
|
+
type: string;
|
|
1386
|
+
};
|
|
1387
|
+
url: {
|
|
1388
|
+
$ref: string;
|
|
1389
|
+
};
|
|
1390
|
+
location: {
|
|
1391
|
+
$ref: string;
|
|
1392
|
+
};
|
|
1393
|
+
order: {
|
|
1394
|
+
type: string;
|
|
1395
|
+
minimum: number;
|
|
1396
|
+
};
|
|
1397
|
+
};
|
|
1398
|
+
};
|
|
1399
|
+
Project: {
|
|
1400
|
+
type: string;
|
|
1401
|
+
additionalProperties: boolean;
|
|
1402
|
+
required: string[];
|
|
1403
|
+
properties: {
|
|
1404
|
+
id: {
|
|
1405
|
+
$ref: string;
|
|
1406
|
+
};
|
|
1407
|
+
title: {
|
|
1408
|
+
$ref: string;
|
|
1409
|
+
};
|
|
1410
|
+
description: {
|
|
1411
|
+
$ref: string;
|
|
1412
|
+
};
|
|
1413
|
+
url: {
|
|
1414
|
+
$ref: string;
|
|
1415
|
+
};
|
|
1416
|
+
tags: {
|
|
1417
|
+
type: string;
|
|
1418
|
+
maxItems: number;
|
|
1419
|
+
items: {
|
|
1420
|
+
type: string;
|
|
1421
|
+
minLength: number;
|
|
1422
|
+
maxLength: number;
|
|
1423
|
+
};
|
|
1424
|
+
};
|
|
1425
|
+
relatedCareerId: {
|
|
1426
|
+
$ref: string;
|
|
1427
|
+
};
|
|
1428
|
+
startDate: {
|
|
1429
|
+
$ref: string;
|
|
1430
|
+
};
|
|
1431
|
+
endDate: {
|
|
1432
|
+
anyOf: ({
|
|
1433
|
+
$ref: string;
|
|
1434
|
+
type?: undefined;
|
|
1435
|
+
} | {
|
|
1436
|
+
type: string;
|
|
1437
|
+
$ref?: undefined;
|
|
1438
|
+
})[];
|
|
1439
|
+
};
|
|
1440
|
+
highlighted: {
|
|
1441
|
+
type: string;
|
|
1442
|
+
};
|
|
1443
|
+
order: {
|
|
1444
|
+
type: string;
|
|
1445
|
+
minimum: number;
|
|
1446
|
+
};
|
|
1447
|
+
};
|
|
1448
|
+
};
|
|
1449
|
+
Skill: {
|
|
1450
|
+
type: string;
|
|
1451
|
+
additionalProperties: boolean;
|
|
1452
|
+
required: string[];
|
|
1453
|
+
properties: {
|
|
1454
|
+
id: {
|
|
1455
|
+
$ref: string;
|
|
1456
|
+
};
|
|
1457
|
+
label: {
|
|
1458
|
+
type: string;
|
|
1459
|
+
minLength: number;
|
|
1460
|
+
maxLength: number;
|
|
1461
|
+
};
|
|
1462
|
+
category: {
|
|
1463
|
+
type: string;
|
|
1464
|
+
minLength: number;
|
|
1465
|
+
maxLength: number;
|
|
1466
|
+
description: string;
|
|
1467
|
+
};
|
|
1468
|
+
order: {
|
|
1469
|
+
type: string;
|
|
1470
|
+
minimum: number;
|
|
1471
|
+
};
|
|
1472
|
+
};
|
|
1473
|
+
};
|
|
1474
|
+
Contact: {
|
|
1475
|
+
type: string;
|
|
1476
|
+
additionalProperties: boolean;
|
|
744
1477
|
properties: {
|
|
745
|
-
|
|
1478
|
+
email: {
|
|
746
1479
|
$ref: string;
|
|
747
1480
|
};
|
|
748
|
-
|
|
1481
|
+
showEmail: {
|
|
1482
|
+
type: string;
|
|
1483
|
+
default: boolean;
|
|
1484
|
+
};
|
|
1485
|
+
formUrl: {
|
|
749
1486
|
$ref: string;
|
|
750
1487
|
};
|
|
751
|
-
|
|
1488
|
+
};
|
|
1489
|
+
};
|
|
1490
|
+
Settings: {
|
|
1491
|
+
type: string;
|
|
1492
|
+
additionalProperties: boolean;
|
|
1493
|
+
required: string[];
|
|
1494
|
+
properties: {
|
|
1495
|
+
defaultLocale: {
|
|
752
1496
|
$ref: string;
|
|
753
1497
|
};
|
|
754
|
-
|
|
1498
|
+
fallbackLocale: {
|
|
755
1499
|
$ref: string;
|
|
756
1500
|
};
|
|
757
|
-
|
|
1501
|
+
availableLocales: {
|
|
758
1502
|
type: string;
|
|
1503
|
+
minItems: number;
|
|
1504
|
+
maxItems: number;
|
|
1505
|
+
uniqueItems: boolean;
|
|
1506
|
+
items: {
|
|
1507
|
+
$ref: string;
|
|
1508
|
+
};
|
|
759
1509
|
};
|
|
760
|
-
|
|
1510
|
+
theme: {
|
|
761
1511
|
type: string;
|
|
762
|
-
|
|
1512
|
+
minLength: number;
|
|
1513
|
+
maxLength: number;
|
|
1514
|
+
description: string;
|
|
763
1515
|
};
|
|
764
|
-
|
|
1516
|
+
showPoweredBy: {
|
|
1517
|
+
type: string;
|
|
1518
|
+
default: boolean;
|
|
1519
|
+
description: string;
|
|
1520
|
+
};
|
|
1521
|
+
enableJsonLd: {
|
|
1522
|
+
type: string;
|
|
1523
|
+
default: boolean;
|
|
1524
|
+
description: string;
|
|
1525
|
+
};
|
|
1526
|
+
enableApi: {
|
|
1527
|
+
type: string;
|
|
1528
|
+
default: boolean;
|
|
1529
|
+
description: string;
|
|
1530
|
+
};
|
|
1531
|
+
enableAnalytics: {
|
|
1532
|
+
type: string;
|
|
1533
|
+
default: boolean;
|
|
1534
|
+
description: string;
|
|
1535
|
+
};
|
|
1536
|
+
};
|
|
1537
|
+
};
|
|
1538
|
+
Meta: {
|
|
1539
|
+
type: string;
|
|
1540
|
+
additionalProperties: boolean;
|
|
1541
|
+
required: string[];
|
|
1542
|
+
properties: {
|
|
1543
|
+
createdAt: {
|
|
1544
|
+
$ref: string;
|
|
1545
|
+
};
|
|
1546
|
+
updatedAt: {
|
|
1547
|
+
$ref: string;
|
|
1548
|
+
};
|
|
1549
|
+
generator: {
|
|
1550
|
+
type: string;
|
|
1551
|
+
minLength: number;
|
|
1552
|
+
maxLength: number;
|
|
1553
|
+
description: string;
|
|
1554
|
+
};
|
|
1555
|
+
contentLicense: {
|
|
1556
|
+
$ref: string;
|
|
1557
|
+
};
|
|
1558
|
+
privacy: {
|
|
765
1559
|
$ref: string;
|
|
766
1560
|
};
|
|
767
1561
|
};
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
1562
|
+
};
|
|
1563
|
+
ContentLicense: {
|
|
1564
|
+
type: string;
|
|
1565
|
+
additionalProperties: boolean;
|
|
1566
|
+
required: string[];
|
|
1567
|
+
properties: {
|
|
1568
|
+
spdxId: {
|
|
1569
|
+
type: string;
|
|
1570
|
+
minLength: number;
|
|
1571
|
+
maxLength: number;
|
|
1572
|
+
description: string;
|
|
776
1573
|
};
|
|
777
|
-
|
|
1574
|
+
url: {
|
|
1575
|
+
$ref: string;
|
|
1576
|
+
};
|
|
1577
|
+
attribution: {
|
|
1578
|
+
type: string;
|
|
1579
|
+
additionalProperties: boolean;
|
|
778
1580
|
properties: {
|
|
779
|
-
|
|
1581
|
+
name: {
|
|
1582
|
+
type: string;
|
|
1583
|
+
minLength: number;
|
|
1584
|
+
maxLength: number;
|
|
1585
|
+
};
|
|
1586
|
+
url: {
|
|
780
1587
|
$ref: string;
|
|
781
1588
|
};
|
|
782
1589
|
};
|
|
783
|
-
required: string[];
|
|
784
1590
|
};
|
|
785
|
-
|
|
1591
|
+
rights: {
|
|
1592
|
+
type: string;
|
|
1593
|
+
minLength: number;
|
|
1594
|
+
maxLength: number;
|
|
1595
|
+
description: string;
|
|
1596
|
+
};
|
|
1597
|
+
};
|
|
786
1598
|
};
|
|
787
|
-
|
|
1599
|
+
MetaPrivacy: {
|
|
1600
|
+
type: string;
|
|
1601
|
+
additionalProperties: boolean;
|
|
1602
|
+
description: string;
|
|
1603
|
+
properties: {
|
|
1604
|
+
hideCredentialIds: {
|
|
1605
|
+
type: string;
|
|
1606
|
+
default: boolean;
|
|
1607
|
+
description: string;
|
|
1608
|
+
};
|
|
1609
|
+
hideEducationGrades: {
|
|
1610
|
+
type: string;
|
|
1611
|
+
default: boolean;
|
|
1612
|
+
description: string;
|
|
1613
|
+
};
|
|
1614
|
+
};
|
|
1615
|
+
};
|
|
1616
|
+
Certification: {
|
|
1617
|
+
type: string;
|
|
1618
|
+
additionalProperties: boolean;
|
|
1619
|
+
required: string[];
|
|
1620
|
+
properties: {
|
|
1621
|
+
id: {
|
|
1622
|
+
$ref: string;
|
|
1623
|
+
};
|
|
1624
|
+
title: {
|
|
1625
|
+
$ref: string;
|
|
1626
|
+
};
|
|
1627
|
+
issuingOrganization: {
|
|
1628
|
+
$ref: string;
|
|
1629
|
+
};
|
|
1630
|
+
issueDate: {
|
|
1631
|
+
$ref: string;
|
|
1632
|
+
};
|
|
1633
|
+
expirationDate: {
|
|
1634
|
+
anyOf: ({
|
|
1635
|
+
$ref: string;
|
|
1636
|
+
type?: undefined;
|
|
1637
|
+
} | {
|
|
1638
|
+
type: string;
|
|
1639
|
+
$ref?: undefined;
|
|
1640
|
+
})[];
|
|
1641
|
+
description: string;
|
|
1642
|
+
};
|
|
1643
|
+
credentialId: {
|
|
1644
|
+
type: string;
|
|
1645
|
+
minLength: number;
|
|
1646
|
+
maxLength: number;
|
|
1647
|
+
description: string;
|
|
1648
|
+
};
|
|
1649
|
+
url: {
|
|
1650
|
+
$ref: string;
|
|
1651
|
+
};
|
|
1652
|
+
order: {
|
|
1653
|
+
type: string;
|
|
1654
|
+
minimum: number;
|
|
1655
|
+
};
|
|
1656
|
+
};
|
|
1657
|
+
};
|
|
1658
|
+
Membership: {
|
|
788
1659
|
type: string;
|
|
789
1660
|
additionalProperties: boolean;
|
|
790
1661
|
required: string[];
|
|
@@ -812,6 +1683,7 @@ declare const schema: {
|
|
|
812
1683
|
type: string;
|
|
813
1684
|
$ref?: undefined;
|
|
814
1685
|
})[];
|
|
1686
|
+
description: string;
|
|
815
1687
|
};
|
|
816
1688
|
isCurrent: {
|
|
817
1689
|
type: string;
|
|
@@ -819,7 +1691,48 @@ declare const schema: {
|
|
|
819
1691
|
url: {
|
|
820
1692
|
$ref: string;
|
|
821
1693
|
};
|
|
822
|
-
|
|
1694
|
+
order: {
|
|
1695
|
+
type: string;
|
|
1696
|
+
minimum: number;
|
|
1697
|
+
};
|
|
1698
|
+
};
|
|
1699
|
+
};
|
|
1700
|
+
Volunteering: {
|
|
1701
|
+
type: string;
|
|
1702
|
+
additionalProperties: boolean;
|
|
1703
|
+
required: string[];
|
|
1704
|
+
properties: {
|
|
1705
|
+
id: {
|
|
1706
|
+
$ref: string;
|
|
1707
|
+
};
|
|
1708
|
+
organization: {
|
|
1709
|
+
$ref: string;
|
|
1710
|
+
};
|
|
1711
|
+
role: {
|
|
1712
|
+
$ref: string;
|
|
1713
|
+
};
|
|
1714
|
+
cause: {
|
|
1715
|
+
$ref: string;
|
|
1716
|
+
};
|
|
1717
|
+
description: {
|
|
1718
|
+
$ref: string;
|
|
1719
|
+
};
|
|
1720
|
+
startDate: {
|
|
1721
|
+
$ref: string;
|
|
1722
|
+
};
|
|
1723
|
+
endDate: {
|
|
1724
|
+
anyOf: ({
|
|
1725
|
+
$ref: string;
|
|
1726
|
+
type?: undefined;
|
|
1727
|
+
} | {
|
|
1728
|
+
type: string;
|
|
1729
|
+
$ref?: undefined;
|
|
1730
|
+
})[];
|
|
1731
|
+
};
|
|
1732
|
+
isCurrent: {
|
|
1733
|
+
type: string;
|
|
1734
|
+
};
|
|
1735
|
+
url: {
|
|
823
1736
|
$ref: string;
|
|
824
1737
|
};
|
|
825
1738
|
order: {
|
|
@@ -828,7 +1741,7 @@ declare const schema: {
|
|
|
828
1741
|
};
|
|
829
1742
|
};
|
|
830
1743
|
};
|
|
831
|
-
|
|
1744
|
+
Honor: {
|
|
832
1745
|
type: string;
|
|
833
1746
|
additionalProperties: boolean;
|
|
834
1747
|
required: string[];
|
|
@@ -839,24 +1752,50 @@ declare const schema: {
|
|
|
839
1752
|
title: {
|
|
840
1753
|
$ref: string;
|
|
841
1754
|
};
|
|
1755
|
+
issuer: {
|
|
1756
|
+
$ref: string;
|
|
1757
|
+
};
|
|
842
1758
|
description: {
|
|
843
1759
|
$ref: string;
|
|
844
1760
|
};
|
|
1761
|
+
date: {
|
|
1762
|
+
$ref: string;
|
|
1763
|
+
};
|
|
845
1764
|
url: {
|
|
846
1765
|
$ref: string;
|
|
847
1766
|
};
|
|
848
|
-
|
|
1767
|
+
order: {
|
|
849
1768
|
type: string;
|
|
850
|
-
|
|
851
|
-
items: {
|
|
852
|
-
type: string;
|
|
853
|
-
minLength: number;
|
|
854
|
-
maxLength: number;
|
|
855
|
-
};
|
|
1769
|
+
minimum: number;
|
|
856
1770
|
};
|
|
857
|
-
|
|
1771
|
+
};
|
|
1772
|
+
};
|
|
1773
|
+
Education: {
|
|
1774
|
+
type: string;
|
|
1775
|
+
additionalProperties: boolean;
|
|
1776
|
+
required: string[];
|
|
1777
|
+
properties: {
|
|
1778
|
+
id: {
|
|
1779
|
+
$ref: string;
|
|
1780
|
+
};
|
|
1781
|
+
institution: {
|
|
1782
|
+
$ref: string;
|
|
1783
|
+
};
|
|
1784
|
+
degree: {
|
|
1785
|
+
$ref: string;
|
|
1786
|
+
};
|
|
1787
|
+
fieldOfStudy: {
|
|
1788
|
+
$ref: string;
|
|
1789
|
+
};
|
|
1790
|
+
description: {
|
|
858
1791
|
$ref: string;
|
|
859
1792
|
};
|
|
1793
|
+
grade: {
|
|
1794
|
+
type: string;
|
|
1795
|
+
minLength: number;
|
|
1796
|
+
maxLength: number;
|
|
1797
|
+
description: string;
|
|
1798
|
+
};
|
|
860
1799
|
startDate: {
|
|
861
1800
|
$ref: string;
|
|
862
1801
|
};
|
|
@@ -868,17 +1807,21 @@ declare const schema: {
|
|
|
868
1807
|
type: string;
|
|
869
1808
|
$ref?: undefined;
|
|
870
1809
|
})[];
|
|
1810
|
+
description: string;
|
|
871
1811
|
};
|
|
872
|
-
|
|
1812
|
+
isCurrent: {
|
|
873
1813
|
type: string;
|
|
874
1814
|
};
|
|
1815
|
+
url: {
|
|
1816
|
+
$ref: string;
|
|
1817
|
+
};
|
|
875
1818
|
order: {
|
|
876
1819
|
type: string;
|
|
877
1820
|
minimum: number;
|
|
878
1821
|
};
|
|
879
1822
|
};
|
|
880
1823
|
};
|
|
881
|
-
|
|
1824
|
+
Publication: {
|
|
882
1825
|
type: string;
|
|
883
1826
|
additionalProperties: boolean;
|
|
884
1827
|
required: string[];
|
|
@@ -886,15 +1829,35 @@ declare const schema: {
|
|
|
886
1829
|
id: {
|
|
887
1830
|
$ref: string;
|
|
888
1831
|
};
|
|
889
|
-
|
|
1832
|
+
title: {
|
|
1833
|
+
$ref: string;
|
|
1834
|
+
};
|
|
1835
|
+
publisher: {
|
|
1836
|
+
$ref: string;
|
|
1837
|
+
};
|
|
1838
|
+
description: {
|
|
1839
|
+
$ref: string;
|
|
1840
|
+
};
|
|
1841
|
+
date: {
|
|
1842
|
+
$ref: string;
|
|
1843
|
+
};
|
|
1844
|
+
url: {
|
|
1845
|
+
$ref: string;
|
|
1846
|
+
};
|
|
1847
|
+
doi: {
|
|
890
1848
|
type: string;
|
|
891
1849
|
minLength: number;
|
|
892
1850
|
maxLength: number;
|
|
1851
|
+
description: string;
|
|
893
1852
|
};
|
|
894
|
-
|
|
1853
|
+
coAuthors: {
|
|
895
1854
|
type: string;
|
|
896
|
-
|
|
897
|
-
|
|
1855
|
+
maxItems: number;
|
|
1856
|
+
items: {
|
|
1857
|
+
type: string;
|
|
1858
|
+
minLength: number;
|
|
1859
|
+
maxLength: number;
|
|
1860
|
+
};
|
|
898
1861
|
description: string;
|
|
899
1862
|
};
|
|
900
1863
|
order: {
|
|
@@ -903,125 +1866,118 @@ declare const schema: {
|
|
|
903
1866
|
};
|
|
904
1867
|
};
|
|
905
1868
|
};
|
|
906
|
-
|
|
1869
|
+
Language: {
|
|
907
1870
|
type: string;
|
|
908
1871
|
additionalProperties: boolean;
|
|
1872
|
+
required: string[];
|
|
909
1873
|
properties: {
|
|
910
|
-
|
|
1874
|
+
id: {
|
|
911
1875
|
$ref: string;
|
|
912
1876
|
};
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
default: boolean;
|
|
1877
|
+
language: {
|
|
1878
|
+
$ref: string;
|
|
916
1879
|
};
|
|
917
|
-
|
|
1880
|
+
displayName: {
|
|
918
1881
|
$ref: string;
|
|
919
1882
|
};
|
|
1883
|
+
proficiency: {
|
|
1884
|
+
type: string;
|
|
1885
|
+
enum: string[];
|
|
1886
|
+
description: string;
|
|
1887
|
+
};
|
|
1888
|
+
order: {
|
|
1889
|
+
type: string;
|
|
1890
|
+
minimum: number;
|
|
1891
|
+
};
|
|
920
1892
|
};
|
|
921
1893
|
};
|
|
922
|
-
|
|
1894
|
+
Course: {
|
|
923
1895
|
type: string;
|
|
924
1896
|
additionalProperties: boolean;
|
|
925
1897
|
required: string[];
|
|
926
1898
|
properties: {
|
|
927
|
-
|
|
1899
|
+
id: {
|
|
928
1900
|
$ref: string;
|
|
929
1901
|
};
|
|
930
|
-
|
|
1902
|
+
title: {
|
|
931
1903
|
$ref: string;
|
|
932
1904
|
};
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
minItems: number;
|
|
936
|
-
maxItems: number;
|
|
937
|
-
uniqueItems: boolean;
|
|
938
|
-
items: {
|
|
939
|
-
$ref: string;
|
|
940
|
-
};
|
|
1905
|
+
provider: {
|
|
1906
|
+
$ref: string;
|
|
941
1907
|
};
|
|
942
|
-
|
|
1908
|
+
courseNumber: {
|
|
943
1909
|
type: string;
|
|
944
1910
|
minLength: number;
|
|
945
1911
|
maxLength: number;
|
|
946
|
-
description: string;
|
|
947
1912
|
};
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
default: boolean;
|
|
951
|
-
description: string;
|
|
1913
|
+
description: {
|
|
1914
|
+
$ref: string;
|
|
952
1915
|
};
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
default: boolean;
|
|
956
|
-
description: string;
|
|
1916
|
+
completionDate: {
|
|
1917
|
+
$ref: string;
|
|
957
1918
|
};
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
1919
|
+
certificateUrl: {
|
|
1920
|
+
$ref: string;
|
|
1921
|
+
};
|
|
1922
|
+
relatedEducationId: {
|
|
1923
|
+
$ref: string;
|
|
961
1924
|
description: string;
|
|
962
1925
|
};
|
|
963
|
-
|
|
1926
|
+
order: {
|
|
964
1927
|
type: string;
|
|
965
|
-
|
|
966
|
-
description: string;
|
|
1928
|
+
minimum: number;
|
|
967
1929
|
};
|
|
968
1930
|
};
|
|
969
1931
|
};
|
|
970
|
-
|
|
1932
|
+
Patent: {
|
|
971
1933
|
type: string;
|
|
972
1934
|
additionalProperties: boolean;
|
|
973
1935
|
required: string[];
|
|
974
1936
|
properties: {
|
|
975
|
-
|
|
1937
|
+
id: {
|
|
976
1938
|
$ref: string;
|
|
977
1939
|
};
|
|
978
|
-
|
|
1940
|
+
title: {
|
|
979
1941
|
$ref: string;
|
|
980
1942
|
};
|
|
981
|
-
|
|
1943
|
+
patentNumber: {
|
|
982
1944
|
type: string;
|
|
983
1945
|
minLength: number;
|
|
984
1946
|
maxLength: number;
|
|
985
|
-
description: string;
|
|
986
|
-
};
|
|
987
|
-
contentLicense: {
|
|
988
|
-
$ref: string;
|
|
989
1947
|
};
|
|
990
|
-
|
|
991
|
-
};
|
|
992
|
-
ContentLicense: {
|
|
993
|
-
type: string;
|
|
994
|
-
additionalProperties: boolean;
|
|
995
|
-
required: string[];
|
|
996
|
-
properties: {
|
|
997
|
-
spdxId: {
|
|
1948
|
+
office: {
|
|
998
1949
|
type: string;
|
|
999
|
-
minLength: number;
|
|
1000
1950
|
maxLength: number;
|
|
1001
1951
|
description: string;
|
|
1002
1952
|
};
|
|
1953
|
+
status: {
|
|
1954
|
+
type: string;
|
|
1955
|
+
enum: string[];
|
|
1956
|
+
};
|
|
1957
|
+
description: {
|
|
1958
|
+
$ref: string;
|
|
1959
|
+
};
|
|
1960
|
+
filingDate: {
|
|
1961
|
+
$ref: string;
|
|
1962
|
+
};
|
|
1963
|
+
grantDate: {
|
|
1964
|
+
$ref: string;
|
|
1965
|
+
};
|
|
1003
1966
|
url: {
|
|
1004
1967
|
$ref: string;
|
|
1005
1968
|
};
|
|
1006
|
-
|
|
1969
|
+
coInventors: {
|
|
1007
1970
|
type: string;
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
maxLength: number;
|
|
1014
|
-
};
|
|
1015
|
-
url: {
|
|
1016
|
-
$ref: string;
|
|
1017
|
-
};
|
|
1971
|
+
maxItems: number;
|
|
1972
|
+
items: {
|
|
1973
|
+
type: string;
|
|
1974
|
+
minLength: number;
|
|
1975
|
+
maxLength: number;
|
|
1018
1976
|
};
|
|
1019
1977
|
};
|
|
1020
|
-
|
|
1978
|
+
order: {
|
|
1021
1979
|
type: string;
|
|
1022
|
-
|
|
1023
|
-
maxLength: number;
|
|
1024
|
-
description: string;
|
|
1980
|
+
minimum: number;
|
|
1025
1981
|
};
|
|
1026
1982
|
};
|
|
1027
1983
|
};
|
|
@@ -1162,6 +2118,122 @@ interface Skill {
|
|
|
1162
2118
|
category?: string;
|
|
1163
2119
|
order?: number;
|
|
1164
2120
|
}
|
|
2121
|
+
interface Certification {
|
|
2122
|
+
id: Slug;
|
|
2123
|
+
title: LocalizedTitle;
|
|
2124
|
+
issuingOrganization: LocalizedTitle;
|
|
2125
|
+
issueDate: YearMonth;
|
|
2126
|
+
/** `null` denotes an explicit "no expiration" (permanent credential). Omit when unknown. */
|
|
2127
|
+
expirationDate?: YearMonth | null;
|
|
2128
|
+
/**
|
|
2129
|
+
* License or certificate number. Public exposure is controlled by
|
|
2130
|
+
* {@link MetaPrivacy.hideCredentialIds} (default true).
|
|
2131
|
+
*/
|
|
2132
|
+
credentialId?: string;
|
|
2133
|
+
url?: string;
|
|
2134
|
+
order?: number;
|
|
2135
|
+
}
|
|
2136
|
+
interface Membership {
|
|
2137
|
+
id: Slug;
|
|
2138
|
+
organization: LocalizedTitle;
|
|
2139
|
+
role?: LocalizedTitle;
|
|
2140
|
+
description?: LocalizedBody;
|
|
2141
|
+
startDate: YearMonth;
|
|
2142
|
+
/** `null` denotes ongoing membership; omit when unknown. */
|
|
2143
|
+
endDate?: YearMonth | null;
|
|
2144
|
+
isCurrent?: boolean;
|
|
2145
|
+
url?: string;
|
|
2146
|
+
order?: number;
|
|
2147
|
+
}
|
|
2148
|
+
interface Volunteering {
|
|
2149
|
+
id: Slug;
|
|
2150
|
+
organization: LocalizedTitle;
|
|
2151
|
+
role: LocalizedTitle;
|
|
2152
|
+
cause?: LocalizedTitle;
|
|
2153
|
+
description?: LocalizedBody;
|
|
2154
|
+
startDate: YearMonth;
|
|
2155
|
+
endDate?: YearMonth | null;
|
|
2156
|
+
isCurrent?: boolean;
|
|
2157
|
+
url?: string;
|
|
2158
|
+
order?: number;
|
|
2159
|
+
}
|
|
2160
|
+
interface Honor {
|
|
2161
|
+
id: Slug;
|
|
2162
|
+
title: LocalizedTitle;
|
|
2163
|
+
issuer: LocalizedTitle;
|
|
2164
|
+
description?: LocalizedBody;
|
|
2165
|
+
date: YearMonth;
|
|
2166
|
+
url?: string;
|
|
2167
|
+
order?: number;
|
|
2168
|
+
}
|
|
2169
|
+
interface Education {
|
|
2170
|
+
id: Slug;
|
|
2171
|
+
institution: LocalizedTitle;
|
|
2172
|
+
degree?: LocalizedTitle;
|
|
2173
|
+
fieldOfStudy?: LocalizedTitle;
|
|
2174
|
+
description?: LocalizedBody;
|
|
2175
|
+
/**
|
|
2176
|
+
* Free-form grade / class / GPA. Public exposure is controlled by
|
|
2177
|
+
* {@link MetaPrivacy.hideEducationGrades} (default true).
|
|
2178
|
+
*/
|
|
2179
|
+
grade?: string;
|
|
2180
|
+
startDate: YearMonth;
|
|
2181
|
+
/** `null` denotes currently enrolled; omit when unknown. */
|
|
2182
|
+
endDate?: YearMonth | null;
|
|
2183
|
+
isCurrent?: boolean;
|
|
2184
|
+
url?: string;
|
|
2185
|
+
order?: number;
|
|
2186
|
+
}
|
|
2187
|
+
interface Publication {
|
|
2188
|
+
id: Slug;
|
|
2189
|
+
title: LocalizedTitle;
|
|
2190
|
+
publisher?: LocalizedTitle;
|
|
2191
|
+
description?: LocalizedBody;
|
|
2192
|
+
date: YearMonth;
|
|
2193
|
+
url?: string;
|
|
2194
|
+
/** DOI identifier portion (e.g. '10.1145/...'); full URL goes in `url`. */
|
|
2195
|
+
doi?: string;
|
|
2196
|
+
/** Co-author names in original script. Excludes the profile owner. */
|
|
2197
|
+
coAuthors?: string[];
|
|
2198
|
+
order?: number;
|
|
2199
|
+
}
|
|
2200
|
+
type LanguageProficiency = 'native' | 'fluent' | 'professional' | 'intermediate' | 'basic';
|
|
2201
|
+
interface Language {
|
|
2202
|
+
id: Slug;
|
|
2203
|
+
/** BCP-47 tag (e.g. 'ja', 'en', 'fr-CA'). */
|
|
2204
|
+
language: LocaleTag;
|
|
2205
|
+
/** Human-readable label per locale (e.g. `{ en: 'Japanese', fr: 'japonais' }`). */
|
|
2206
|
+
displayName?: LocalizedTitle;
|
|
2207
|
+
proficiency: LanguageProficiency;
|
|
2208
|
+
order?: number;
|
|
2209
|
+
}
|
|
2210
|
+
interface Course {
|
|
2211
|
+
id: Slug;
|
|
2212
|
+
title: LocalizedTitle;
|
|
2213
|
+
provider?: LocalizedTitle;
|
|
2214
|
+
courseNumber?: string;
|
|
2215
|
+
description?: LocalizedBody;
|
|
2216
|
+
completionDate?: YearMonth;
|
|
2217
|
+
certificateUrl?: string;
|
|
2218
|
+
/** Optional reference to an `education[].id` for university coursework. */
|
|
2219
|
+
relatedEducationId?: Slug;
|
|
2220
|
+
order?: number;
|
|
2221
|
+
}
|
|
2222
|
+
type PatentStatus = 'pending' | 'issued' | 'expired' | 'abandoned';
|
|
2223
|
+
interface Patent {
|
|
2224
|
+
id: Slug;
|
|
2225
|
+
title: LocalizedTitle;
|
|
2226
|
+
patentNumber: string;
|
|
2227
|
+
/** Patent office name (e.g. 'USPTO', 'JPO', 'EPO'). */
|
|
2228
|
+
office?: string;
|
|
2229
|
+
status: PatentStatus;
|
|
2230
|
+
description?: LocalizedBody;
|
|
2231
|
+
filingDate?: YearMonth;
|
|
2232
|
+
grantDate?: YearMonth;
|
|
2233
|
+
url?: string;
|
|
2234
|
+
coInventors?: string[];
|
|
2235
|
+
order?: number;
|
|
2236
|
+
}
|
|
1165
2237
|
interface Contact {
|
|
1166
2238
|
email?: string;
|
|
1167
2239
|
showEmail?: boolean;
|
|
@@ -1193,14 +2265,35 @@ interface ContentLicense {
|
|
|
1193
2265
|
attribution?: ContentLicenseAttribution;
|
|
1194
2266
|
rights?: string;
|
|
1195
2267
|
}
|
|
2268
|
+
/**
|
|
2269
|
+
* Privacy opt-out flags that strip personally identifying fields from public
|
|
2270
|
+
* API output (`GET /api/profile`, `/api/jsonld`, `/takuhon.json`). Admin
|
|
2271
|
+
* endpoints (`PUT /api/admin/*`, `GET /api/export`) ignore these flags.
|
|
2272
|
+
* Privacy-by-default: omitting the object or individual flags is equivalent
|
|
2273
|
+
* to `true`.
|
|
2274
|
+
*/
|
|
2275
|
+
interface MetaPrivacy {
|
|
2276
|
+
/** When true (default), strip `certifications[*].credentialId` from public responses. */
|
|
2277
|
+
hideCredentialIds?: boolean;
|
|
2278
|
+
/** When true (default), strip `education[*].grade` from public responses. */
|
|
2279
|
+
hideEducationGrades?: boolean;
|
|
2280
|
+
}
|
|
1196
2281
|
interface Meta {
|
|
1197
2282
|
createdAt?: IsoDateTime;
|
|
1198
2283
|
updatedAt?: IsoDateTime;
|
|
1199
2284
|
/** Tool that produced this document (e.g. `'Takuhon'`, `'create-takuhon@0.1.0'`). */
|
|
1200
2285
|
generator?: string;
|
|
1201
2286
|
contentLicense: ContentLicense;
|
|
2287
|
+
privacy?: MetaPrivacy;
|
|
1202
2288
|
}
|
|
1203
|
-
/**
|
|
2289
|
+
/**
|
|
2290
|
+
* A complete takuhon profile document.
|
|
2291
|
+
*
|
|
2292
|
+
* Schema-level, the nine new arrays from 0.2.0 (`certifications` through
|
|
2293
|
+
* `patents`) are optional for 0.1.x back-compat. At the TypeScript layer they
|
|
2294
|
+
* are typed as required because `validate()` and `normalize()` defensively
|
|
2295
|
+
* coerce missing arrays to `[]` so downstream consumers never see `undefined`.
|
|
2296
|
+
*/
|
|
1204
2297
|
interface Takuhon {
|
|
1205
2298
|
schemaVersion: string;
|
|
1206
2299
|
profile: Profile;
|
|
@@ -1208,6 +2301,15 @@ interface Takuhon {
|
|
|
1208
2301
|
careers: Career[];
|
|
1209
2302
|
projects: Project[];
|
|
1210
2303
|
skills: Skill[];
|
|
2304
|
+
certifications: Certification[];
|
|
2305
|
+
memberships: Membership[];
|
|
2306
|
+
volunteering: Volunteering[];
|
|
2307
|
+
honors: Honor[];
|
|
2308
|
+
education: Education[];
|
|
2309
|
+
publications: Publication[];
|
|
2310
|
+
languages: Language[];
|
|
2311
|
+
courses: Course[];
|
|
2312
|
+
patents: Patent[];
|
|
1211
2313
|
contact: Contact;
|
|
1212
2314
|
settings: Settings;
|
|
1213
2315
|
meta: Meta;
|
|
@@ -1288,6 +2390,112 @@ interface LocalizedProject {
|
|
|
1288
2390
|
highlighted?: boolean;
|
|
1289
2391
|
order?: number;
|
|
1290
2392
|
}
|
|
2393
|
+
/** Certification with localized fields collapsed to single strings. */
|
|
2394
|
+
interface LocalizedCertification {
|
|
2395
|
+
id: Slug;
|
|
2396
|
+
title: string;
|
|
2397
|
+
issuingOrganization: string;
|
|
2398
|
+
issueDate: YearMonth;
|
|
2399
|
+
expirationDate?: YearMonth | null;
|
|
2400
|
+
credentialId?: string;
|
|
2401
|
+
url?: string;
|
|
2402
|
+
order?: number;
|
|
2403
|
+
}
|
|
2404
|
+
/** Membership with localized fields collapsed to single strings. */
|
|
2405
|
+
interface LocalizedMembership {
|
|
2406
|
+
id: Slug;
|
|
2407
|
+
organization: string;
|
|
2408
|
+
role?: string;
|
|
2409
|
+
description?: string;
|
|
2410
|
+
startDate: YearMonth;
|
|
2411
|
+
endDate?: YearMonth | null;
|
|
2412
|
+
isCurrent?: boolean;
|
|
2413
|
+
url?: string;
|
|
2414
|
+
order?: number;
|
|
2415
|
+
}
|
|
2416
|
+
/** Volunteering with localized fields collapsed to single strings. */
|
|
2417
|
+
interface LocalizedVolunteering {
|
|
2418
|
+
id: Slug;
|
|
2419
|
+
organization: string;
|
|
2420
|
+
role: string;
|
|
2421
|
+
cause?: string;
|
|
2422
|
+
description?: string;
|
|
2423
|
+
startDate: YearMonth;
|
|
2424
|
+
endDate?: YearMonth | null;
|
|
2425
|
+
isCurrent?: boolean;
|
|
2426
|
+
url?: string;
|
|
2427
|
+
order?: number;
|
|
2428
|
+
}
|
|
2429
|
+
/** Honor with localized fields collapsed to single strings. */
|
|
2430
|
+
interface LocalizedHonor {
|
|
2431
|
+
id: Slug;
|
|
2432
|
+
title: string;
|
|
2433
|
+
issuer: string;
|
|
2434
|
+
description?: string;
|
|
2435
|
+
date: YearMonth;
|
|
2436
|
+
url?: string;
|
|
2437
|
+
order?: number;
|
|
2438
|
+
}
|
|
2439
|
+
/** Education with localized fields collapsed to single strings. */
|
|
2440
|
+
interface LocalizedEducation {
|
|
2441
|
+
id: Slug;
|
|
2442
|
+
institution: string;
|
|
2443
|
+
degree?: string;
|
|
2444
|
+
fieldOfStudy?: string;
|
|
2445
|
+
description?: string;
|
|
2446
|
+
grade?: string;
|
|
2447
|
+
startDate: YearMonth;
|
|
2448
|
+
endDate?: YearMonth | null;
|
|
2449
|
+
isCurrent?: boolean;
|
|
2450
|
+
url?: string;
|
|
2451
|
+
order?: number;
|
|
2452
|
+
}
|
|
2453
|
+
/** Publication with localized fields collapsed to single strings. */
|
|
2454
|
+
interface LocalizedPublication {
|
|
2455
|
+
id: Slug;
|
|
2456
|
+
title: string;
|
|
2457
|
+
publisher?: string;
|
|
2458
|
+
description?: string;
|
|
2459
|
+
date: YearMonth;
|
|
2460
|
+
url?: string;
|
|
2461
|
+
doi?: string;
|
|
2462
|
+
coAuthors?: string[];
|
|
2463
|
+
order?: number;
|
|
2464
|
+
}
|
|
2465
|
+
/** Language entry with `displayName` collapsed to a single string. */
|
|
2466
|
+
interface LocalizedLanguage {
|
|
2467
|
+
id: Slug;
|
|
2468
|
+
language: LocaleTag;
|
|
2469
|
+
displayName?: string;
|
|
2470
|
+
proficiency: LanguageProficiency;
|
|
2471
|
+
order?: number;
|
|
2472
|
+
}
|
|
2473
|
+
/** Course with localized fields collapsed to single strings. */
|
|
2474
|
+
interface LocalizedCourse {
|
|
2475
|
+
id: Slug;
|
|
2476
|
+
title: string;
|
|
2477
|
+
provider?: string;
|
|
2478
|
+
courseNumber?: string;
|
|
2479
|
+
description?: string;
|
|
2480
|
+
completionDate?: YearMonth;
|
|
2481
|
+
certificateUrl?: string;
|
|
2482
|
+
relatedEducationId?: Slug;
|
|
2483
|
+
order?: number;
|
|
2484
|
+
}
|
|
2485
|
+
/** Patent with localized fields collapsed to single strings. */
|
|
2486
|
+
interface LocalizedPatent {
|
|
2487
|
+
id: Slug;
|
|
2488
|
+
title: string;
|
|
2489
|
+
patentNumber: string;
|
|
2490
|
+
office?: string;
|
|
2491
|
+
status: PatentStatus;
|
|
2492
|
+
description?: string;
|
|
2493
|
+
filingDate?: YearMonth;
|
|
2494
|
+
grantDate?: YearMonth;
|
|
2495
|
+
url?: string;
|
|
2496
|
+
coInventors?: string[];
|
|
2497
|
+
order?: number;
|
|
2498
|
+
}
|
|
1291
2499
|
/**
|
|
1292
2500
|
* A takuhon document with every localized map flattened to a single string,
|
|
1293
2501
|
* plus a `resolvedLocale` field recording which tag was actually used as the
|
|
@@ -1303,6 +2511,15 @@ interface LocalizedTakuhon {
|
|
|
1303
2511
|
careers: LocalizedCareer[];
|
|
1304
2512
|
projects: LocalizedProject[];
|
|
1305
2513
|
skills: Skill[];
|
|
2514
|
+
certifications: LocalizedCertification[];
|
|
2515
|
+
memberships: LocalizedMembership[];
|
|
2516
|
+
volunteering: LocalizedVolunteering[];
|
|
2517
|
+
honors: LocalizedHonor[];
|
|
2518
|
+
education: LocalizedEducation[];
|
|
2519
|
+
publications: LocalizedPublication[];
|
|
2520
|
+
languages: LocalizedLanguage[];
|
|
2521
|
+
courses: LocalizedCourse[];
|
|
2522
|
+
patents: LocalizedPatent[];
|
|
1306
2523
|
contact: Contact;
|
|
1307
2524
|
settings: Settings;
|
|
1308
2525
|
meta: Meta;
|
|
@@ -1344,7 +2561,7 @@ interface LocalizedTakuhon {
|
|
|
1344
2561
|
* versions whose JSON Schema this package literally bundles, not the full
|
|
1345
2562
|
* support window seen by end users.
|
|
1346
2563
|
*/
|
|
1347
|
-
declare const SUPPORTED_SCHEMA_VERSIONS: readonly ["0.1.0"];
|
|
2564
|
+
declare const SUPPORTED_SCHEMA_VERSIONS: readonly ["0.1.0", "0.2.0"];
|
|
1348
2565
|
/**
|
|
1349
2566
|
* A single validation failure.
|
|
1350
2567
|
*
|
|
@@ -1659,8 +2876,11 @@ interface Migration<From, To> {
|
|
|
1659
2876
|
migrate(data: From): To;
|
|
1660
2877
|
}
|
|
1661
2878
|
/**
|
|
1662
|
-
* Forward migrations bundled with this build of `@takuhon/core`.
|
|
1663
|
-
*
|
|
2879
|
+
* Forward migrations bundled with this build of `@takuhon/core`.
|
|
2880
|
+
*
|
|
2881
|
+
* Entries are listed in the order they would chain for forward migration
|
|
2882
|
+
* (`0.1.0 → 0.2.0 → 0.3.0 → ...`). {@link migrateTakuhon} consults this
|
|
2883
|
+
* array to build the chain between a source `schemaVersion` and a target.
|
|
1664
2884
|
*/
|
|
1665
2885
|
declare const migrations: readonly Migration<Takuhon, Takuhon>[];
|
|
1666
2886
|
|
|
@@ -1838,6 +3058,6 @@ declare class ConflictError extends StorageError {
|
|
|
1838
3058
|
* A takuhon profile document's `schemaVersion` field must be migrate-compatible
|
|
1839
3059
|
* with this version. See operational-lifecycle docs for the migration policy.
|
|
1840
3060
|
*/
|
|
1841
|
-
declare const SCHEMA_VERSION = "0.
|
|
3061
|
+
declare const SCHEMA_VERSION = "0.2.0";
|
|
1842
3062
|
|
|
1843
|
-
export { type Address, type AssetOptions, type AssetRecord, type Avatar, type Career, ConflictError, type Contact, type ContentLicense, type ContentLicenseAttribution, type ExportOptions, type ExportedTakuhon, ImportError, type Iso3166Alpha2, type IsoDateTime, type Link, type LinkBuiltin, type LinkCustom, type LinkType, type LocaleTag, type LocalizedAddress, type LocalizedAvatar, type LocalizedBody, type LocalizedCareer, type LocalizedLink, type LocalizedLinkBuiltin, type LocalizedLinkCustom, type LocalizedProfile, type LocalizedProject, type LocalizedTakuhon, type LocalizedTitle, type Meta, type Migration, MigrationError, type NormalizedTakuhon, NotFoundError, type Profile, type Project, SCHEMA_VERSION, SUPPORTED_SCHEMA_VERSIONS, type Schema, type Settings, type Skill, type Slug, StorageError, type Takuhon, type TakuhonAssetStorage, type TakuhonStorage, type ValidationError, type ValidationResult, type YearMonth, exportTakuhon, generateJsonLd, generatePersonJsonLd, generateProfilePageJsonLd, importTakuhon, migrateTakuhon, migrations, normalize, resolveLocale, schema, validate };
|
|
3063
|
+
export { type Address, type AssetOptions, type AssetRecord, type Avatar, type Career, type Certification, ConflictError, type Contact, type ContentLicense, type ContentLicenseAttribution, type Course, type Education, type ExportOptions, type ExportedTakuhon, type Honor, ImportError, type Iso3166Alpha2, type IsoDateTime, type Language, type LanguageProficiency, type Link, type LinkBuiltin, type LinkCustom, type LinkType, type LocaleTag, type LocalizedAddress, type LocalizedAvatar, type LocalizedBody, type LocalizedCareer, type LocalizedCertification, type LocalizedCourse, type LocalizedEducation, type LocalizedHonor, type LocalizedLanguage, type LocalizedLink, type LocalizedLinkBuiltin, type LocalizedLinkCustom, type LocalizedMembership, type LocalizedPatent, type LocalizedProfile, type LocalizedProject, type LocalizedPublication, type LocalizedTakuhon, type LocalizedTitle, type LocalizedVolunteering, type Membership, type Meta, type MetaPrivacy, type Migration, MigrationError, type NormalizedTakuhon, NotFoundError, type Patent, type PatentStatus, type Profile, type Project, type Publication, SCHEMA_VERSION, SUPPORTED_SCHEMA_VERSIONS, type Schema, type Settings, type Skill, type Slug, StorageError, type Takuhon, type TakuhonAssetStorage, type TakuhonStorage, type ValidationError, type ValidationResult, type Volunteering, type YearMonth, exportTakuhon, generateJsonLd, generatePersonJsonLd, generateProfilePageJsonLd, importTakuhon, migrateTakuhon, migrations, normalize, resolveLocale, schema, validate };
|