Add skills/gitea/references/content.md

This commit is contained in:
2026-05-24 23:57:59 -05:00
parent 3d8d76f16d
commit c538c0d7e2
+124
View File
@@ -0,0 +1,124 @@
# File Contents API reference
Base: `https://git.mpm.to/api/v1`
All file content responses encode the file body as base64 in the `content` field. Decode with:
```bash
echo "BASE64STRING" | base64 -d
```
## Get a file or directory listing
```bash
curl -s -H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/contents/{filepath}?ref=main"
```
`ref` can be a branch name, tag, or commit SHA (defaults to the default branch if omitted). `filepath` is the path within the repo, e.g. `src/main.go` or `docs/`.
If `filepath` is a directory, the response is an array of file entries with `name`, `path`, `type` (`file` | `dir` | `symlink`), `size`, and `sha`.
If `filepath` is a file, the response includes `content` (base64-encoded), `encoding`, `sha`, `size`, `name`, `path`, `html_url`.
## Read a file and decode it
```bash
SHA=$(curl -s -H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/contents/{filepath}" \
| python3 -c "import sys,json; r=json.load(sys.stdin); print(r['sha'])")
curl -s -H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/contents/{filepath}" \
| python3 -c "import sys,json,base64; r=json.load(sys.stdin); print(base64.b64decode(r['content']).decode())"
```
## Create a new file
```bash
CONTENT_B64=$(echo -n "file content here" | base64)
curl -s -X POST \
-H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
-H "Content-Type: application/json" \
-d "{
\"message\": \"Add new file\",
\"content\": \"${CONTENT_B64}\",
\"branch\": \"main\"
}" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/contents/{filepath}"
```
## Update an existing file
Updating requires the current file's `sha`. Fetch it first, then:
```bash
# Step 1: get the sha
SHA=$(curl -s -H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/contents/{filepath}" \
| python3 -c "import sys,json; r=json.load(sys.stdin); print(r['sha'])")
# Step 2: base64-encode the new content
NEW_CONTENT=$(echo -n "new file content" | base64)
# Step 3: update
curl -s -X PUT \
-H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
-H "Content-Type: application/json" \
-d "{
\"message\": \"Update file\",
\"content\": \"${NEW_CONTENT}\",
\"sha\": \"${SHA}\",
\"branch\": \"main\"
}" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/contents/{filepath}"
```
## Delete a file
```bash
SHA=$(curl -s -H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/contents/{filepath}" \
| python3 -c "import sys,json; r=json.load(sys.stdin); print(r['sha'])")
curl -s -X DELETE \
-H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
-H "Content-Type: application/json" \
-d "{
\"message\": \"Delete file\",
\"sha\": \"${SHA}\",
\"branch\": \"main\"
}" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/contents/{filepath}"
```
Always confirm with the user before deleting a file.
## Get raw file content (no base64)
```bash
curl -s -H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/raw/{filepath}?ref=main"
```
This returns the raw file bytes directly — useful for binary files or when you just want the content without decoding.
## Get a file at a specific commit/tag
Use `?ref=COMMIT_SHA` or `?ref=v1.2.0` as the query parameter.
## List commits for a file
```bash
curl -s -H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/commits?path={filepath}&limit=20"
```
## Git trees (recursive directory listing)
```bash
curl -s -H "Authorization: token e82a7235b948fbbeea60329422fcac89fa5a5ce8" \
"https://git.mpm.to/api/v1/repos/{owner}/{repo}/git/trees/{sha}?recursive=true"
```
Get `sha` from the branch info: `GET /repos/{owner}/{repo}/branches/{branch}``commit.commit.tree.sha`.