Skip to content

ატვირთვის API

Fenfa აქვეყნებს HTTP API-ს CI/CD პაიპლაინებიდან აშენების არტეფაქტების ატვირთვისა და დისტრიბუციის სასიცოცხლო ციკლის მართვისთვის.

ყველა API მოთხოვნა საჭიროებს ტოკენს X-Auth-Token ჰედერში:

X-Auth-Token: your-api-token

ტოკენები იქმნება Fenfa-ს ადმინის დაფაში პარამეტრების განყოფილებაში.

ატვირთვის ბოლო წერტილი

Section titled “ატვირთვის ბოლო წერტილი”

აშენების არტეფაქტის ატვირთვა კონკრეტულ ვარიანტზე.

Content-Type: multipart/form-data

ველიტიპისავალდებულოაღწერა
variant_idstringდიახსამიზნე ვარიანტის ID
app_filefileდიახბინარული არტეფაქტი (IPA, APK, DMG, EXE და ა.შ.)
versionstringდიახსემანტიკური ვერსია (მაგ., 2.1.5)
buildstringდიახაშენების ნომერი (მაგ., 142)
changelogstringარარელიზის შენიშვნები (Markdown მხარდაჭერილი)

Fenfa ავტომატურად ითვლის ატვირთული ფაილის SHA-256 ჰეშს მთლიანობის ვერიფიკაციისთვის.

მაგალითი:

Terminal window
curl -X POST https://fenfa.example.com/upload \
-H "X-Auth-Token: your-api-token" \
-F "variant_id=abc123" \
-F "app_file=@build/MyApp.ipa" \
-F "version=2.1.5" \
-F "build=142" \
-F "changelog=Fixed login crash on iOS 18"

პასუხი:

{
"success": true,
"release": {
"id": "rel_abc123",
"version": "2.1.5",
"build": "142",
"sha256": "e3b0c44298fc1c149afbf4c8996fb924...",
"download_url": "https://fenfa.example.com/d/rel_abc123",
"install_url": "itms-services://?action=download-manifest&url=...",
"qr_code_url": "https://fenfa.example.com/qr/rel_abc123"
}
}

პასუხი მოიცავს პლატფორმისთვის შესაფერის URL-ებს:

  • download_url — პირდაპირი ჩამოტვირთვის ბმული (ყველა პლატფორმა)
  • install_url — iOS OTA ინსტალაციის ბმული (მხოლოდ IPA)
  • qr_code_url — QR კოდის სურათი ჩამოტვირთვის გვერდისთვის

აპლიკაციის მეტამონაცემების ანალიზი

Section titled “აპლიკაციის მეტამონაცემების ანალიზი”

ბინარის ატვირთვა მისი მეტამონაცემების ამოსაღებად რელიზის შექმნის გარეშე. სასარგებლოა აშენების არტეფაქტების ინსპექტირებისთვის.

Terminal window
curl -X POST https://fenfa.example.com/admin/api/parse-app \
-H "X-Auth-Token: your-api-token" \
-F "file=@build/MyApp.apk"

აბრუნებს ამოცნობილ მეტამონაცემებს, როგორიცაა bundle ID, ვერსია, მინიმალური OS ვერსია, ნებართვები და ხატულა.

ადმინის API უზრუნველყოფს დისტრიბუციის პლატფორმის სრულ მართვას.

მეთოდიბოლო წერტილიაღწერა
GET/admin/api/productsყველა პროდუქტის ჩამოთვლა
POST/admin/api/productsპროდუქტის შექმნა
GET/admin/api/products/:idპროდუქტის დეტალების მიღება
PUT/admin/api/products/:idპროდუქტის განახლება
DELETE/admin/api/products/:idპროდუქტის წაშლა
მეთოდიბოლო წერტილიაღწერა
GET/admin/api/products/:id/variantsპროდუქტის ვარიანტების ჩამოთვლა
POST/admin/api/variantsვარიანტის შექმნა
PUT/admin/api/variants/:idვარიანტის განახლება
DELETE/admin/api/variants/:idვარიანტის წაშლა
მეთოდიბოლო წერტილიაღწერა
GET/admin/api/variants/:id/releasesვარიანტის რელიზების ჩამოთვლა
GET/admin/api/releases/:idრელიზის დეტალების მიღება
DELETE/admin/api/releases/:idრელიზის წაშლა
მეთოდიბოლო წერტილიაღწერა
GET/admin/api/settingsპლატფორმის პარამეტრების მიღება
PUT/admin/api/settingsპლატფორმის პარამეტრების განახლება
მეთოდიბოლო წერტილიაღწერა
GET/admin/api/devicesჩარიცხული iOS მოწყობილობების (UDID) ჩამოთვლა
DELETE/admin/api/devices/:idმოწყობილობის ამოშლა
მეთოდიბოლო წერტილიაღწერა
GET/admin/api/eventsმოვლენების ჟურნალი (ატვირთვები, ჩამოტვირთვები, შეცდომები)

მოვლენების ბოლო წერტილი მხარს უჭერს გვერდებს და ფილტრაციას მოვლენის ტიპის, თარიღის დიაპაზონისა და ვარიანტის მიხედვით.

ადმინის API მხარს უჭერს CSV ექსპორტს მასობრივი მონაცემების ამოსაღებად:

Terminal window
# ვარიანტის ყველა რელიზის ექსპორტი
curl -H "X-Auth-Token: your-api-token" \
"https://fenfa.example.com/admin/api/variants/abc123/releases?format=csv" \
-o releases.csv
# მოწყობილობების სიის ექსპორტი
curl -H "X-Auth-Token: your-api-token" \
"https://fenfa.example.com/admin/api/devices?format=csv" \
-o devices.csv

CI/CD ინტეგრაციის მაგალითი

Section titled “CI/CD ინტეგრაციის მაგალითი”
- name: Upload to Fenfa
run: |
curl -X POST ${{ secrets.FENFA_URL }}/upload \
-H "X-Auth-Token: ${{ secrets.FENFA_TOKEN }}" \
-F "variant_id=${{ vars.FENFA_VARIANT_ID }}" \
-F "app_file=@build/output/MyApp.apk" \
-F "version=${{ github.ref_name }}" \
-F "build=${{ github.run_number }}" \
-F "changelog=$(git log --oneline -5)"