1{
2 "lexicon": 1,
3 "id": "sh.tangled.repo.blob",
4 "defs": {
5 "main": {
6 "type": "query",
7 "parameters": {
8 "type": "params",
9 "required": ["repo", "ref", "path"],
10 "properties": {
11 "repo": {
12 "type": "string",
13 "description": "Repository identifier in format 'did:plc:.../repoName'"
14 },
15 "ref": {
16 "type": "string",
17 "description": "Git reference (branch, tag, or commit SHA)"
18 },
19 "path": {
20 "type": "string",
21 "description": "Path to the file within the repository"
22 },
23 "raw": {
24 "type": "boolean",
25 "description": "Return raw file content instead of JSON response",
26 "default": false
27 }
28 }
29 },
30 "output": {
31 "encoding": "application/json",
32 "schema": {
33 "type": "object",
34 "required": ["ref", "path", "content"],
35 "properties": {
36 "ref": {
37 "type": "string",
38 "description": "The git reference used"
39 },
40 "path": {
41 "type": "string",
42 "description": "The file path"
43 },
44 "content": {
45 "type": "string",
46 "description": "File content (base64 encoded for binary files)"
47 },
48 "encoding": {
49 "type": "string",
50 "description": "Content encoding",
51 "enum": ["utf-8", "base64"]
52 },
53 "size": {
54 "type": "integer",
55 "description": "File size in bytes"
56 },
57 "isBinary": {
58 "type": "boolean",
59 "description": "Whether the file is binary"
60 },
61 "mimeType": {
62 "type": "string",
63 "description": "MIME type of the file"
64 },
65 "lastCommit": {
66 "type": "ref",
67 "ref": "#lastCommit"
68 }
69 }
70 }
71 },
72 "errors": [
73 {
74 "name": "RepoNotFound",
75 "description": "Repository not found or access denied"
76 },
77 {
78 "name": "RefNotFound",
79 "description": "Git reference not found"
80 },
81 {
82 "name": "FileNotFound",
83 "description": "File not found at the specified path"
84 },
85 {
86 "name": "InvalidRequest",
87 "description": "Invalid request parameters"
88 }
89 ]
90 },
91 "lastCommit": {
92 "type": "object",
93 "required": ["hash", "message", "when"],
94 "properties": {
95 "hash": {
96 "type": "string",
97 "description": "Commit hash"
98 },
99 "shortHash": {
100 "type": "string",
101 "description": "Short commit hash"
102 },
103 "message": {
104 "type": "string",
105 "description": "Commit message"
106 },
107 "author": {
108 "type": "ref",
109 "ref": "#signature"
110 },
111 "when": {
112 "type": "string",
113 "format": "datetime",
114 "description": "Commit timestamp"
115 }
116 }
117 },
118 "signature": {
119 "type": "object",
120 "required": ["name", "email", "when"],
121 "properties": {
122 "name": {
123 "type": "string",
124 "description": "Author name"
125 },
126 "email": {
127 "type": "string",
128 "description": "Author email"
129 },
130 "when": {
131 "type": "string",
132 "format": "datetime",
133 "description": "Author timestamp"
134 }
135 }
136 }
137 }
138}