Compare commits

..
15 Commits
Author SHA1 Message Date
Amirmahdi 0329755068 feat: add btn text 2026-06-25 10:09:39 +03:30
Amirmahdi b1f1fb33c2 feat:version 2026-06-24 18:10:04 +03:30
Amirmahdi a63cefb80b feat: announcement 2026-06-24 17:56:51 +03:30
Amirmahdi 91b9cbc09e feat: add faq 2026-06-17 16:19:56 +03:30
Amirmahdi 804efc8aad feat: add colors 2026-06-16 19:14:43 +03:30
Amirmahdi ef6649309e feat: add search media 2026-06-15 14:26:41 +03:30
Amirmahdi e645fe19c4 feat: add new route" 2026-06-13 17:20:28 +03:30
Amirmahdi 9323df1e02 feat 2026-06-13 17:04:47 +03:30
Amirmahdi 86f63f92e0 show: playlist id 2026-06-13 12:25:24 +03:30
Amirmahdi 801a2d4236 feat: add group 2026-06-12 20:54:17 +03:30
Amirmahdi a8676eafb1 feat: add group 2026-06-12 16:56:24 +03:30
Amirmahdi 311b8b2ada feat:add tags 2026-06-12 14:55:07 +03:30
Amirmahdi 6a033f6d07 feat: category type 2026-06-11 09:54:23 +03:30
Amirmahdi 3da6549edb feat 2026-06-10 12:12:59 +03:30
Amirmahdi fc732ae75f fix 2026-06-06 21:21:25 +03:30
68 changed files with 1058 additions and 36 deletions
+19
View File
@@ -0,0 +1,19 @@
meta {
name: delete announcement
type: http
seq: 6
}
delete {
url: {{baseUrl}}/announcements/:id
body: none
auth: inherit
}
params:path {
id: 1
}
settings {
encodeUrl: true
}
+8
View File
@@ -0,0 +1,8 @@
meta {
name: announcement
seq: 20
}
auth {
mode: inherit
}
+19
View File
@@ -0,0 +1,19 @@
meta {
name: get announcements
type: http
seq: 2
}
get {
url: {{baseUrl}}/announcements
body: none
auth: inherit
}
settings {
encodeUrl: true
}
docs {
Admin: all announcements, newest first.
}
+20
View File
@@ -0,0 +1,20 @@
meta {
name: latest announcement
type: http
seq: 1
}
get {
url: {{baseUrl}}/announcements/latest
body: none
auth: inherit
}
settings {
encodeUrl: true
}
docs {
App side: returns the single latest currently-active announcement
(start_date <= now <= end_date; null bounds are open-ended), or null.
}
+19
View File
@@ -0,0 +1,19 @@
meta {
name: show announcement
type: http
seq: 4
}
get {
url: {{baseUrl}}/announcements/:id
body: none
auth: inherit
}
params:path {
id: 1
}
settings {
encodeUrl: true
}
+27
View File
@@ -0,0 +1,27 @@
meta {
name: store announcement
type: http
seq: 3
}
post {
url: {{baseUrl}}/announcements
body: multipartForm
auth: inherit
}
body:multipart-form {
title: تخفیف ویژه
description: توضیح اعلان
link: https://example.com
button_text: مشاهده
start_date: 2026-06-24 00:00:00
end_date: 2026-07-24 00:00:00
~image: @file()
~image_id: 1
}
settings {
encodeUrl: true
timeout: 0
}
+31
View File
@@ -0,0 +1,31 @@
meta {
name: update announcement
type: http
seq: 5
}
post {
url: {{baseUrl}}/announcements/:id
body: multipartForm
auth: inherit
}
params:path {
id: 1
}
body:multipart-form {
title: عنوان جدید
description: توضیح جدید
link: https://example.com
button_text: مشاهده
start_date: 2026-06-24 00:00:00
end_date: 2026-07-24 00:00:00
~image: @file()
~image_id: 1
}
settings {
encodeUrl: true
timeout: 0
}
+19
View File
@@ -0,0 +1,19 @@
meta {
name: admin delete feedback
type: http
seq: 4
}
delete {
url: {{baseUrl}}/admin/app-feedback/:id
body: none
auth: inherit
}
params:path {
id: 1
}
settings {
encodeUrl: true
}
+21
View File
@@ -0,0 +1,21 @@
meta {
name: admin list feedback
type: http
seq: 3
}
get {
url: {{baseUrl}}/admin/app-feedback
body: none
auth: inherit
}
params:query {
~has_comment: 1
~stars: 5
~per_page: 20
}
settings {
encodeUrl: true
}
+8
View File
@@ -0,0 +1,8 @@
meta {
name: app feedback
seq: 24
}
auth {
mode: inherit
}
+15
View File
@@ -0,0 +1,15 @@
meta {
name: get my feedback
type: http
seq: 1
}
get {
url: {{baseUrl}}/app-feedback
body: none
auth: inherit
}
settings {
encodeUrl: true
}
+23
View File
@@ -0,0 +1,23 @@
meta {
name: submit feedback
type: http
seq: 2
}
post {
url: {{baseUrl}}/app-feedback
body: json
auth: inherit
}
body:json {
{
"stars": 4,
"content": "هیچ راه واحدی برای مدیتیشن وجود ندارد"
}
}
settings {
encodeUrl: true
timeout: 0
}
@@ -0,0 +1,19 @@
meta {
name: delete breathing color
type: http
seq: 4
}
delete {
url: {{baseUrl}}/breathing-colors/:id
body: none
auth: inherit
}
params:path {
id: 1
}
settings {
encodeUrl: true
}
@@ -0,0 +1,7 @@
meta {
name: breathing colors
}
auth {
mode: inherit
}
@@ -0,0 +1,21 @@
meta {
name: get breathing colors
type: http
seq: 1
}
get {
url: {{baseUrl}}/breathing-colors
body: none
auth: inherit
}
settings {
encodeUrl: true
}
docs {
Palette the app shows when creating a breathing template. Each item has
a `colors` array (one hex = solid, several = gradient). The user picks one
and sends its colors as `colors` on /breathing-templates.
}
@@ -0,0 +1,25 @@
meta {
name: store breathing color
type: http
seq: 2
}
post {
url: {{baseUrl}}/breathing-colors
body: json
auth: inherit
}
body:json {
{
"name": "بنفش",
"colors": ["#6829DD", "#1A50CC"],
"order": 1,
"is_active": true
}
}
settings {
encodeUrl: true
timeout: 0
}
@@ -0,0 +1,28 @@
meta {
name: update breathing color
type: http
seq: 3
}
put {
url: {{baseUrl}}/breathing-colors/:id
body: json
auth: inherit
}
params:path {
id: 1
}
body:json {
{
"name": "بنفش",
"colors": ["#6829DD", "#1A50CC"],
"is_active": true
}
}
settings {
encodeUrl: true
timeout: 0
}
+2 -1
View File
@@ -26,7 +26,8 @@ body:json {
"breath_hold":5, "breath_hold":5,
"duration":45, "duration":45,
"description":"asdsadaasdas", "description":"asdsadaasdas",
"image_id":3 "image_id":3,
"colors":["#6829DD","#1A50CC"]
} }
} }
+2
View File
@@ -15,6 +15,8 @@ body:multipart-form {
inhale: 8 inhale: 8
exhale: 3 exhale: 3
breath_hold: 4 breath_hold: 4
~colors[]: #6829DD
~colors[]: #1A50CC
} }
settings { settings {
+3 -3
View File
@@ -11,9 +11,9 @@ auth:bearer {
} }
vars:pre-request { vars:pre-request {
token: 2|gpnAibfdNxCcnEVbMMzw8akRoQyzCKfjoJtK5qOp7d0fcbb3 token: 6525|frMOcyJV7elCdNV0tfbCo2IvDEhSCStG6LHJ21cq8dbd4b29
baseUrl: http://localhost:8000/api baseUrl: https://meditation.approagency.ir/api
~baseUrl: https://meditation.approagency.ir/api ~baseUrl: http://localhost:8000/api
~baseUrl: ~baseUrl:
~baseUrl: ~baseUrl:
~approo_token: ~approo_token:
+34
View File
@@ -0,0 +1,34 @@
meta {
name: comment and rating (one call)
type: http
seq: 4
}
post {
url: {{baseUrl}}/interactions/:type/:id
body: json
auth: inherit
}
params:path {
type: media
id: 27
}
body:json {
{
"content": "این مدیتیشن فوق‌العاده بود",
"stars": 5
}
}
settings {
encodeUrl: true
timeout: 0
}
docs {
type: music | media | playlist. At least one field is required:
- content: adds a comment
- stars: 1-5, sets/updates this user's rating
}
+19
View File
@@ -0,0 +1,19 @@
meta {
name: delete faq category
type: http
seq: 5
}
delete {
url: {{baseUrl}}/faq-categories/:id
body: none
auth: inherit
}
params:path {
id: 1
}
settings {
encodeUrl: true
}
+19
View File
@@ -0,0 +1,19 @@
meta {
name: delete faq
type: http
seq: 8
}
delete {
url: {{baseUrl}}/faqs/:id
body: none
auth: inherit
}
params:path {
id: 1
}
settings {
encodeUrl: true
}
+8
View File
@@ -0,0 +1,8 @@
meta {
name: faq
seq: 25
}
auth {
mode: inherit
}
+15
View File
@@ -0,0 +1,15 @@
meta {
name: get faq categories
type: http
seq: 2
}
get {
url: {{baseUrl}}/faq-categories
body: none
auth: inherit
}
settings {
encodeUrl: true
}
+20
View File
@@ -0,0 +1,20 @@
meta {
name: get faqs
type: http
seq: 1
}
get {
url: {{baseUrl}}/faqs
body: none
auth: inherit
}
settings {
encodeUrl: true
}
docs {
App endpoint: active FAQ categories, each with their active questions
(grouped). Pass ?include_inactive=1 for admin to see everything.
}
+24
View File
@@ -0,0 +1,24 @@
meta {
name: store faq category
type: http
seq: 3
}
post {
url: {{baseUrl}}/faq-categories
body: json
auth: inherit
}
body:json {
{
"name": "حساب کاربری",
"order": 1,
"is_active": true
}
}
settings {
encodeUrl: true
timeout: 0
}
+26
View File
@@ -0,0 +1,26 @@
meta {
name: store faq
type: http
seq: 6
}
post {
url: {{baseUrl}}/faqs
body: json
auth: inherit
}
body:json {
{
"faq_category_id": 1,
"question": "چطور رمز عبورم را تغییر دهم؟",
"answer": "از بخش پروفایل، گزینه تغییر رمز عبور را انتخاب کنید.",
"order": 1,
"is_active": true
}
}
settings {
encodeUrl: true
timeout: 0
}
+28
View File
@@ -0,0 +1,28 @@
meta {
name: update faq category
type: http
seq: 4
}
put {
url: {{baseUrl}}/faq-categories/:id
body: json
auth: inherit
}
params:path {
id: 1
}
body:json {
{
"name": "حساب کاربری",
"order": 1,
"is_active": true
}
}
settings {
encodeUrl: true
timeout: 0
}
+28
View File
@@ -0,0 +1,28 @@
meta {
name: update faq
type: http
seq: 7
}
put {
url: {{baseUrl}}/faqs/:id
body: json
auth: inherit
}
params:path {
id: 1
}
body:json {
{
"question": "چطور رمز عبورم را تغییر دهم؟",
"answer": "از بخش پروفایل ...",
"is_active": true
}
}
settings {
encodeUrl: true
timeout: 0
}
+34
View File
@@ -0,0 +1,34 @@
meta {
name: comment and rating (one call)
type: http
seq: 7
}
post {
url: {{baseUrl}}/interactions/:type/:id
body: json
auth: inherit
}
params:path {
type: media
id: 27
}
body:json {
{
"content": "این مدیتیشن فوق‌العاده بود",
"stars": 5
}
}
settings {
encodeUrl: true
timeout: 0
}
docs {
type: music | media | playlist. At least one field is required:
- content: adds a comment
- stars: 1-5, sets/updates this user's rating
}
+6 -1
View File
@@ -5,11 +5,16 @@ meta {
} }
delete { delete {
url: {{baseUrl}}/categories url: {{baseUrl}}/categories/:id
body: none body: none
auth: inherit auth: inherit
} }
params:path {
id: 40
}
settings { settings {
encodeUrl: true encodeUrl: true
timeout: 0
} }
+1
View File
@@ -16,6 +16,7 @@ params:path {
body:multipart-form { body:multipart-form {
name: کودکان name: کودکان
type: media
description: دسته‌بندی محتوای کودکان description: دسته‌بندی محتوای کودکان
~icon: @file() ~icon: @file()
} }
+10 -1
View File
@@ -5,12 +5,21 @@ meta {
} }
get { get {
url: {{baseUrl}}/categories url: {{baseUrl}}/categories?type=playlist
body: none body: none
auth: inherit auth: inherit
} }
params:query {
type: playlist
}
settings { settings {
encodeUrl: true encodeUrl: true
timeout: 0 timeout: 0
} }
docs {
General categories. Filter by `type`: media | playlist | breathing_template.
Omit the `type` query param to return categories of all types.
}
+26
View File
@@ -0,0 +1,26 @@
meta {
name: grouped category
type: http
seq: 5
}
get {
url: {{baseUrl}}/categories/:id/grouped
body: none
auth: inherit
}
params:path {
id: 37
}
settings {
encodeUrl: true
timeout: 0
}
docs {
A category with each of its sub-categories, and each sub-category's medias:
{ category: { id, title, description, icon_url },
sub_categories: [ { sub_category: { id, title, description }, medias: [...] } ] }
}
+5
View File
@@ -12,6 +12,7 @@ post {
body:multipart-form { body:multipart-form {
name: کودکان name: کودکان
type: media
description: دسته‌بندی محتوای کودکان description: دسته‌بندی محتوای کودکان
~icon: @file() ~icon: @file()
} }
@@ -20,3 +21,7 @@ settings {
encodeUrl: true encodeUrl: true
timeout: 0 timeout: 0
} }
docs {
`type`: media | playlist | breathing_template (defaults to media).
}
+2 -1
View File
@@ -11,7 +11,7 @@ get {
} }
params:path { params:path {
id: 1 id: 27
} }
body:text { body:text {
@@ -23,4 +23,5 @@ body:text {
settings { settings {
encodeUrl: true encodeUrl: true
timeout: 0
} }
+2 -2
View File
@@ -5,15 +5,15 @@ meta {
} }
get { get {
url: {{baseUrl}}/media/filters url: {{baseUrl}}/media/filters?search=ش
body: none body: none
auth: inherit auth: inherit
} }
params:query { params:query {
search: ش
~categories: 1 ~categories: 1
~tags: relax,sleep ~tags: relax,sleep
~search:
} }
settings { settings {
+2 -1
View File
@@ -5,7 +5,7 @@ meta {
} }
get { get {
url: {{baseUrl}}/media/ url: {{baseUrl}}/media/1
body: none body: none
auth: inherit auth: inherit
} }
@@ -14,6 +14,7 @@ params:query {
~categories: 1 ~categories: 1
~tags: relax,sleep ~tags: relax,sleep
~search: ~search:
~count: 10
} }
settings { settings {
+34
View File
@@ -0,0 +1,34 @@
meta {
name: media-search
type: http
seq: 10
}
get {
url: {{baseUrl}}/media/search?per_page=20&page=1&durations=20-30
body: none
auth: inherit
}
params:query {
per_page: 20
page: 1
durations: 20-30
~search: ش
~categories: 1,2
~subcategories: 1
~tags: relax,sleep
}
settings {
encodeUrl: true
timeout: 0
}
docs {
Paginated search/filter results. Same filters as /media:
- search, categories (ids, comma), subcategories (ids, comma),
durations (e.g. 1-2,2-5,5-10,10-30,30-60,60-120,other), tags (names, comma)
- pagination: page, per_page (default 20, max 100)
Use /media/filters for the filter chips/options.
}
+26
View File
@@ -0,0 +1,26 @@
meta {
name: newest-media
type: http
seq: 11
}
get {
url: {{baseUrl}}/media/newest?per_page=20&page=1
body: none
auth: inherit
}
params:query {
per_page: 20
page: 1
}
settings {
encodeUrl: true
timeout: 0
}
docs {
Newest media, paginated (Laravel paginator: data, total, current_page,
last_page, per_page). Same visibility scope as /media.
}
+4
View File
@@ -48,6 +48,10 @@ body:multipart-form {
duration: 3 duration: 3
visibility: public visibility: public
type: video type: video
~image: @file()
~image_id: 1
~detail_image: @file()
~detail_image_id: 1
} }
settings { settings {
+2
View File
@@ -24,6 +24,8 @@ body:multipart-form {
~is_premium: true ~is_premium: true
~image: @file() ~image: @file()
~image_id: 1 ~image_id: 1
~detail_image: @file()
~detail_image_id: 1
} }
settings { settings {
+34
View File
@@ -0,0 +1,34 @@
meta {
name: comment and rating (one call)
type: http
seq: 5
}
post {
url: {{baseUrl}}/interactions/:type/:id
body: json
auth: inherit
}
params:path {
type: media
id: 27
}
body:json {
{
"content": "این مدیتیشن فوق‌العاده بود",
"stars": 5
}
}
settings {
encodeUrl: true
timeout: 0
}
docs {
type: music | media | playlist. At least one field is required:
- content: adds a comment
- stars: 1-5, sets/updates this user's rating
}
+8
View File
@@ -0,0 +1,8 @@
meta {
name: referral
seq: 20
}
auth {
mode: inherit
}
+15
View File
@@ -0,0 +1,15 @@
meta {
name: get-referral
type: http
seq: 1
}
get {
url: {{baseUrl}}/referral
body: none
auth: inherit
}
settings {
encodeUrl: true
}
+1 -1
View File
@@ -12,7 +12,7 @@ post {
body:multipart-form { body:multipart-form {
type: playlist @contentType(music,media,breathing-template,playlist) type: playlist @contentType(music,media,breathing-template,playlist)
id: 1 id: 4
} }
settings { settings {
+3 -2
View File
@@ -11,8 +11,9 @@ post {
} }
body:multipart-form { body:multipart-form {
type: playlist @contentType(music,media,breathing-template) type: media @contentType(music,media,breathing-template)
id: 1 id: 27
~is_saved: true
} }
settings { settings {
+20
View File
@@ -0,0 +1,20 @@
meta {
name: get themes
type: http
seq: 7
}
get {
url: {{baseUrl}}/themes
body: none
auth: inherit
}
settings {
encodeUrl: true
}
docs {
Returns the color themes (blue, pink, green, orange, purple) a scene can use.
Each theme has key, name and a `colors` map. Assign one to a scene via theme_id.
}
+2
View File
@@ -14,6 +14,8 @@ body:multipart-form {
name: موج‌های دریا name: موج‌های دریا
order: 1 order: 1
is_active: 1 is_active: 1
~is_premium: 1
~theme_id: 1
image: @file(C:\Users\vada\Downloads\bale-border.png) image: @file(C:\Users\vada\Downloads\bale-border.png)
~video: @file() ~video: @file()
~sound: @file() ~sound: @file()
+14 -2
View File
@@ -6,14 +6,26 @@ meta {
post { post {
url: {{baseUrl}}/scenes/:id url: {{baseUrl}}/scenes/:id
body: none body: multipartForm
auth: inherit auth: inherit
} }
params:path { params:path {
id: id: 1
}
body:multipart-form {
~name: موج‌های دریا
~theme_id: 1
~order: 1
~is_active: 1
~is_premium: 1
~image: @file()
~video: @file()
~sound: @file()
} }
settings { settings {
encodeUrl: true encodeUrl: true
timeout: 0
} }
+25
View File
@@ -0,0 +1,25 @@
meta {
name: bulk answer
type: http
seq: 9
}
post {
url: {{baseUrl}}/survey-questions/answers
body: json
auth: inherit
}
body:json {
{
"answers": [
{ "question_id": 2, "option_ids": [8, 9] },
{ "question_id": 3, "option_ids": [] }
]
}
}
settings {
encodeUrl: true
timeout: 0
}
+1 -1
View File
@@ -5,7 +5,7 @@ meta {
} }
get { get {
url: {{baseUrl}}/survey-questions/2 url: {{baseUrl}}/survey-questions/
body: none body: none
auth: inherit auth: inherit
} }
+12 -3
View File
@@ -19,13 +19,16 @@ body:json {
"is_active": true, "is_active": true,
"options": [ "options": [
{ {
"label": "Laravel" "label": "Laravel",
"tags": ["focus", "calm"]
}, },
{ {
"label": "React" "label": "React",
"tags": ["energy"]
}, },
{ {
"label": "Vue.js" "label": "Vue.js",
"tags": []
}, },
{ {
"label": "Django" "label": "Django"
@@ -47,3 +50,9 @@ settings {
encodeUrl: true encodeUrl: true
timeout: 0 timeout: 0
} }
docs {
Each option may carry `tags` (array of tag names). Tags are firstOrCreate'd
and linked to the option; they drive `survey-questions/suggested-media`,
which matches media that share the tags behind the user's chosen options.
}
+11 -4
View File
@@ -19,14 +19,16 @@ body:json {
"options": [ "options": [
{ {
"label": "Laravel" "label": "Laravel",
"tags": ["focus", "calm"]
}, },
{ {
"label": "React.js" "label": "React.js",
"tags": ["energy"]
}, },
{ {
"label": "Vue.js" "label": "Vue.js",
"tags": []
}, },
{ {
"label": "Django" "label": "Django"
@@ -39,3 +41,8 @@ settings {
encodeUrl: true encodeUrl: true
timeout: 0 timeout: 0
} }
docs {
Sending `options` replaces the whole option set (and clears existing answers).
Each option may include `tags` (array of tag names) used by suggested-media.
}
+4 -3
View File
@@ -13,9 +13,10 @@ post {
body:multipart-form { body:multipart-form {
name: انگیزشی name: انگیزشی
description: انگیزشی از موزیک های هایپ است description: انگیزشی از موزیک های هایپ است
~order: ~order:
~image_id: ~image_id:
~is_active: ~image: @file()
~is_active:
} }
settings { settings {
+26
View File
@@ -0,0 +1,26 @@
meta {
name: grouped category
type: http
seq: 5
}
get {
url: {{baseUrl}}/music-categories/:id/grouped
body: none
auth: inherit
}
params:path {
id: 1
}
settings {
encodeUrl: true
timeout: 0
}
docs {
A music category with each of its sub-categories, and each sub-category's playlists:
{ category: { id, title, description, image_url },
sub_categories: [ { sub_category: { id, title, description, image_url }, playlists: [...] } ] }
}
+8 -3
View File
@@ -4,9 +4,9 @@ meta {
seq: 11 seq: 11
} }
put { post {
url: {{baseUrl}}//music-categories/:id url: {{baseUrl}}/music-categories/:id
body: json body: multipartForm
auth: inherit auth: inherit
} }
@@ -21,7 +21,12 @@ body:json {
} }
body:multipart-form { body:multipart-form {
name: لوبیا
description: Updated description description: Updated description
~order:
~image_id:
~image: @file()
~is_active:
} }
settings { settings {
@@ -5,11 +5,15 @@ meta {
} }
get { get {
url: {{baseUrl}}/music-playlists/ url: {{baseUrl}}/music-playlists/:id
body: none body: none
auth: inherit auth: inherit
} }
params:path {
id: 4
}
settings { settings {
encodeUrl: true encodeUrl: true
timeout: 0 timeout: 0
+5
View File
@@ -21,6 +21,11 @@ body:multipart-form {
category_ids[]: 1 category_ids[]: 1
subcategory_ids[]: 1 subcategory_ids[]: 1
name: انگیزشی هایپ 5 name: انگیزشی هایپ 5
~description: Music for deep sleep
~image_id: 1
~image: @file()
~detail_image_id: 1
~detail_image: @file()
} }
settings { settings {
+11 -6
View File
@@ -4,9 +4,9 @@ meta {
seq: 12 seq: 12
} }
put { post {
url: {{baseUrl}}/music-playlists/:id url: {{baseUrl}}/music-playlists/:id
body: json body: multipartForm
auth: inherit auth: inherit
} }
@@ -14,10 +14,15 @@ params:path {
id: 1 id: 1
} }
body:json { body:multipart-form {
{ name: خواب
"name":"خواب" ~description: Music for deep sleep
} ~image_id: 1
~image: @file()
~detail_image_id: 1
~detail_image: @file()
~category_ids[]: 1
~subcategory_ids[]: 1
} }
settings { settings {
+19
View File
@@ -0,0 +1,19 @@
meta {
name: delete version
type: http
seq: 6
}
delete {
url: {{baseUrl}}/versions/:id
body: none
auth: inherit
}
params:path {
id: 1
}
settings {
encodeUrl: true
}
+8
View File
@@ -0,0 +1,8 @@
meta {
name: version
seq: 21
}
auth {
mode: inherit
}
+19
View File
@@ -0,0 +1,19 @@
meta {
name: get versions
type: http
seq: 2
}
get {
url: {{baseUrl}}/versions
body: none
auth: inherit
}
settings {
encodeUrl: true
}
docs {
Admin: all versions, highest version_code first.
}
+19
View File
@@ -0,0 +1,19 @@
meta {
name: latest version
type: http
seq: 1
}
get {
url: {{baseUrl}}/versions/latest
body: none
auth: inherit
}
settings {
encodeUrl: true
}
docs {
App update check: returns the newest version (highest version_code), or null.
}
+19
View File
@@ -0,0 +1,19 @@
meta {
name: show version
type: http
seq: 4
}
get {
url: {{baseUrl}}/versions/:id
body: none
auth: inherit
}
params:path {
id: 1
}
settings {
encodeUrl: true
}
+27
View File
@@ -0,0 +1,27 @@
meta {
name: store version
type: http
seq: 3
}
post {
url: {{baseUrl}}/versions
body: multipartForm
auth: inherit
}
body:multipart-form {
title: نسخه ۱.۲.۰
description: توضیح تغییرات نسخه
version_name: 1.2.0
version_code: 42
link: https://example.com/app.apk
button_text: به‌روزرسانی
~image: @file()
~image_id: 1
}
settings {
encodeUrl: true
timeout: 0
}
+31
View File
@@ -0,0 +1,31 @@
meta {
name: update version
type: http
seq: 5
}
post {
url: {{baseUrl}}/versions/:id
body: multipartForm
auth: inherit
}
params:path {
id: 1
}
body:multipart-form {
title: نسخه جدید
description: توضیح جدید
version_name: 1.3.0
version_code: 43
link: https://example.com/app.apk
button_text: به‌روزرسانی
~image: @file()
~image_id: 1
}
settings {
encodeUrl: true
timeout: 0
}