├── .gitignore
├── reference
├── feedbacks
│ ├── blocks
│ │ ├── category.md
│ │ └── status.md
│ └── status.md
├── format.md
├── order_status.md
├── import_tasks_response_samples.md
├── screenshot.md
└── phrase_collection_format.md
├── resources
├── feedbacks
│ ├── PUT_feedbacks_id.md
│ ├── blocks
│ │ ├── PUT_feedbacks_blocks_id.md
│ │ ├── POST_feedbacks_blocks.md
│ │ ├── GET_feedbacks_blocks_id.md
│ │ └── GET_feedbacks_blocks.md
│ ├── POST_feedbacks.md
│ ├── GET_feedbacks_id.md
│ └── GET_feedbacks.md
├── project_type.md
├── screenshot.md
├── locale.md
├── import_task.md
├── quotation.md
├── translation.md
├── phrase_collection_attachment.md
├── project_group.md
├── project.md
├── file.md
├── phrase_collection.md
├── feedback.md
└── order.md
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
--------------------------------------------------------------------------------
/reference/feedbacks/blocks/category.md:
--------------------------------------------------------------------------------
1 | # Feedback Category
2 |
3 | Define feedback categories
4 |
5 | ## available category
6 | - `typo` - Typo
7 | - `grammar` - Grammatical mistake
8 | - `translate` - Wrong translation
9 | - `style-and-tone` Style and tone issues
10 | - `format` - Formatting issues
11 | - `other` - Other
--------------------------------------------------------------------------------
/reference/feedbacks/status.md:
--------------------------------------------------------------------------------
1 | # Feedback Status
2 |
3 | Define feedback status
4 |
5 | ## available status
6 | - `process` - Process updating translation strings
7 | - `finish` - Finish correction
8 | - `spam` Spam feedback
9 |
10 | ## system defined status
11 | - `new` - Initial status
12 | - `on-hold` - Some of the strings cannot match
--------------------------------------------------------------------------------
/reference/feedbacks/blocks/status.md:
--------------------------------------------------------------------------------
1 | # Feedback Block Status
2 |
3 | Define feedback block status
4 |
5 | ## available status
6 | - `process` - Process updating translation
7 | - `finish` - Finish correction
8 |
9 | ## system defined status
10 | - `new` - Initial status
11 | - `not-match` - String cannot match with translated string in platform (only if the feedback is associate with a project)
12 | - `invalid` - Invalid string
--------------------------------------------------------------------------------
/resources/feedbacks/PUT_feedbacks_id.md:
--------------------------------------------------------------------------------
1 | # Feedback Resources
2 | PUT feedbacks/:id
3 |
4 | ## Description
5 | Update a feedback
6 |
7 | ## Requires authentication
8 | - Details described [here](/README.md#authentication)
9 |
10 | ## Parameters
11 | - `status` _(optional)_ - change feedback status ([reference](/reference/feedbacks/status.md))
12 |
13 | ## Example
14 | **Request**
15 |
16 | PUT https://api.platform.onesky.io/1/feedbacks/:id
17 |
18 | **Response**
19 | ```
20 | status 200 OK
21 | ```
--------------------------------------------------------------------------------
/resources/feedbacks/blocks/PUT_feedbacks_blocks_id.md:
--------------------------------------------------------------------------------
1 | # Feedback Block Resources
2 | PUT feedbacks/:feedback_id/blocks/:id
3 |
4 | ## Description
5 | Update a feedback block
6 |
7 | ## Requires authentication
8 | - Details described [here](/README.md#authentication)
9 |
10 | ## Parameters
11 | - `status` _(optional)_ - change feedback block status ([reference](/reference/feedbacks/blocks/status.md))
12 | - `translated_string` _(optional)_ - translated string id in platform to associated with
13 |
14 | ## Example
15 | **Request**
16 |
17 | PUT https://api.platform.onesky.io/1/feedbacks/:feedback_id/blocks/:id
18 |
19 | **Response**
20 | ```
21 | status 200 OK
22 | ```
--------------------------------------------------------------------------------
/reference/format.md:
--------------------------------------------------------------------------------
1 | ## Format
2 | Format can be one of the following:
3 |
4 | * `IOS_STRINGS`
5 | * `IOS_STRINGSDICT_XML`
6 | * `GNU_PO`
7 | * `ANDROID_XML`
8 | * `ANDROID_JSON`
9 | * `JAVA_PROPERTIES`
10 | * `RUBY_YML`
11 | * `RUBY_YAML`
12 | * `FLASH_XML`
13 | * `GNU_POT`
14 | * `RRC`
15 | * `RESX`
16 | * `HIERARCHICAL_JSON` (common key-value JSON format)
17 | * `PHP`
18 | * `PHP_SHORT_ARRAY` ([Alternative array syntax supported by PHP >= 5.4](http://php.net/manual/en/language.types.array.php))
19 | * `PHP_VARIABLES`
20 | * `HTML`
21 | * `RESW`
22 | * `YML`
23 | * `YAML`
24 | * `ADEMPIERE_XML`
25 | * `IDEMPIERE_XML`
26 | * `QT_TS_XML`
27 | * `XLIFF`
28 | * `RESJSON` ([a Microsoft defined format](https://msdn.microsoft.com/en-us/library/windows/apps/hh465248.aspx))
29 | * `TMX`
30 | * `L10N`
31 | * `INI`
32 | * `REQUIREJS`
33 |
--------------------------------------------------------------------------------
/resources/feedbacks/POST_feedbacks.md:
--------------------------------------------------------------------------------
1 | # Feedback Resources
2 | POST feedbacks
3 |
4 | ## Description
5 | Create a feedback
6 |
7 | ## Requires authentication
8 | - Details described [here](/README.md#authentication)
9 |
10 | ## Parameters
11 | - `url` _(required)_ - url of the webpage
12 | - `locale` _(required)_ - translated string language
13 | - `screenshot` _(required)_ - base64 encoded image content
14 | - `user_type` _(required)_ - submitter user type, `user`, `employee` or `proofreader`
15 | - `project` _(optional)_ - the project belongs to
16 | - `email` _(optional)_ - user email to reply
17 | - `comment` _(optional)_ - comment on feedback
18 | - `blocks` _(optional)_ - blocks array to create
19 |
20 | ## Example
21 | **Request**
22 |
23 | POST https://api.platform.onesky.io/1/feedbacks
24 |
25 | **Response**
26 | ```
27 | status 201 Created
28 | ```
--------------------------------------------------------------------------------
/resources/project_type.md:
--------------------------------------------------------------------------------
1 | ## Project type
2 | - [List](#list---list-all-project-types)
3 |
4 |
5 | ### List - list all project types
6 |
7 | GET https://platform.api.onesky.io/1/project-types
8 |
9 | **Authentication**
10 |
11 | Required. Details described [here](/README.md#authentication)
12 |
13 | **Parameters**
14 |
15 | NONE
16 |
17 | **Response**
18 |
19 | ```
20 | status 200 OK
21 | ```
22 | ``` json
23 | {
24 | "meta": {
25 | "status": 200,
26 | "record_count": 10
27 | },
28 | "data": [
29 | {
30 | "code": "ios",
31 | "name": "iOS App"
32 | },
33 | {
34 | "code": "android",
35 | "name": "Android App"
36 | },
37 | {
38 | "code": "website",
39 | "name": "Website"
40 | },
41 | ...
42 | ]
43 | }
44 | ```
45 | [Back to top](#project-type)
46 |
--------------------------------------------------------------------------------
/resources/screenshot.md:
--------------------------------------------------------------------------------
1 | ## Screenshot
2 | - [Upload](#upload---upload-a-screenshot)
3 |
4 |
5 | ### Upload - upload a screenshot
6 |
7 | POST https://platform.api.onesky.io/1/projects/:project_id/screenshots
8 |
9 | **Authentication**
10 |
11 | Required. Details described [here](/README.md#authentication)
12 |
13 | **Parameters**
14 |
15 |
16 |
17 | | Name |
18 | Required? |
19 | Default |
20 | Sample |
21 | Description |
22 |
23 |
24 | | screenshots |
25 | required |
26 | |
27 | |
28 | Please refer to screenshots |
29 |
30 |
31 |
32 | **Response**
33 |
34 | ```
35 | status 201 Created
36 | ```
37 | [Back to top](#screenshot)
38 |
--------------------------------------------------------------------------------
/resources/feedbacks/blocks/POST_feedbacks_blocks.md:
--------------------------------------------------------------------------------
1 | # Feedback Block Resources
2 | POST feedbacks/:feedback_id/blocks
3 |
4 | ## Description
5 | Create a feedback block
6 |
7 | ## Requires authentication
8 | - Details described [here](/README.md#authentication)
9 |
10 | ## Parameters
11 | - `category` _(required)_ - feedback category ([reference](/reference/feedbacks/blocks/category.md))
12 | - `type` _(required)_ - feedback block type, either `string` or `non-textual`
13 | - `index` _(required)_ - for type `non-textual`, id marked on screenshot
14 | - `string` _(required)_ - for type `string`, feedback string
15 | - `comment` _(optional)_ - comment on feedback block
16 | - `suggestion` _(optional)_ - suggestion on feedback
17 | - `translated_string` _(optional)_ - translated string id in platform to associated with
18 |
19 | ## Example
20 | **Request**
21 |
22 | POST https://api.platform.onesky.io/1/feedbacks/:feedback_id/blocks
23 |
24 | **Response**
25 | ```
26 | status 201 Created
27 | ```
--------------------------------------------------------------------------------
/resources/feedbacks/blocks/GET_feedbacks_blocks_id.md:
--------------------------------------------------------------------------------
1 | # Feedback Block Resources
2 | GET feedbacks/:feedback_id/blocks/:id
3 |
4 | ## Description
5 | Returns the feedback block's attributes.
6 |
7 | ## Requires authentication
8 | - Details described [here](/README.md#authentication)
9 |
10 | ## Parameters
11 | None
12 |
13 | ## Example
14 | **Request**
15 |
16 | GET https://api.platform.onesky.io/1/feedbacks/:feedback_id/blocks/:id
17 |
18 | **Response**
19 | ``` json
20 | {
21 | "feedback_block": {
22 | "id":6789,
23 | "created_at":"2013-03-04T04:04:04+0000",
24 | "created_at_timestamp":1365066244,
25 | "category":"typo",
26 | "type":"string",
27 | "strings":"onesky is bad",
28 | "comment":"unacceptable typo mistake",
29 | "suggestion":"onesky is excellent",
30 | "status":"process",
31 | "translated_string":{
32 | "id":12308,
33 | "string":"onesky is bad"
34 | }
35 | }
36 | }
37 | ```
--------------------------------------------------------------------------------
/resources/locale.md:
--------------------------------------------------------------------------------
1 | ## Locale
2 | - [List](#list---list-all-locales)
3 |
4 |
5 | ### List - list all locales
6 |
7 | GET https://platform.api.onesky.io/1/locales
8 |
9 | **Authentication**
10 |
11 | Required. Details described [here](/README.md#authentication)
12 |
13 | **Parameters**
14 |
15 | NONE
16 |
17 | **Response**
18 |
19 | ```
20 | status 200 OK
21 | ```
22 | ``` json
23 | {
24 | "meta": {
25 | "status": 200,
26 | "record_count": 102
27 | },
28 | "data": [
29 | {
30 | "code": "en-US",
31 | "english_name": "English (United States)",
32 | "local_name": "English (United States)",
33 | "locale": "en",
34 | "region" : "US"
35 | },
36 | {
37 | "code": "ja-JP",
38 | "english_name": "Japanese",
39 | "local_name": "日本語",
40 | "locale": "ja",
41 | "region" : "JP"
42 | },
43 | {
44 | "code": "ko-KR",
45 | "english_name": "Korean",
46 | "local_name": "한국어",
47 | "locale": "ko",
48 | "region" : "KR"
49 | },
50 | ...
51 | ]
52 | }
53 | ```
54 | [Back to top](#locale)
55 |
--------------------------------------------------------------------------------
/reference/order_status.md:
--------------------------------------------------------------------------------
1 | ## Status
2 |
3 |
4 | ### Order Status
5 |
6 |
7 |
8 | | Name |
9 | Description |
10 |
11 |
12 | pending |
13 | Order will be proceeded automatically after all import tasks completed. |
14 |
15 |
16 | in-progress |
17 | Order is proceeding. |
18 |
19 |
20 | completed |
21 | Order completed that means all translation tasks are finished. |
22 |
23 |
24 | failed |
25 | Order failed to process due to insufficient credit. |
26 |
27 |
28 |
29 |
30 | ### Order Task Status
31 |
32 |
33 |
34 | | Name |
35 | Description |
36 |
37 |
38 | pending |
39 | Order of task is waiting for strings import tasks to finish. |
40 |
41 |
42 | in-progress |
43 | Translation in progress |
44 |
45 |
46 | completed |
47 | Translation task completed |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/resources/feedbacks/blocks/GET_feedbacks_blocks.md:
--------------------------------------------------------------------------------
1 | # Feedback Block Resources
2 | GET feedbacks/:feedback_id/blocks
3 |
4 | ## Description
5 | Returns a listing of feedback blocks in the platform.
6 |
7 | ## Requires authentication
8 | - Details described [here](/README.md#authentication)
9 |
10 | ## Parameters
11 | - `page` _(optional)_ - page number for pagination, default 1.
12 | - `per_page` _(optional)_ - items to be returned per page, default 15.
13 | - `status` _(optional)_ - filter the list by feedback block status
14 |
15 | ## Example
16 | **Request**
17 |
18 | GET https://api.platform.onesky.io/1/feedbacks/:feedback_id/blocks
19 |
20 | **Response**
21 | ``` json
22 | {
23 | "feedback_blocks": [
24 | {
25 | "id":6789,
26 | "created_at":"2013-03-03T03:03:03+0000",
27 | "created_at_timestamp":1362301383,
28 | "category":"typo",
29 | "type":"string",
30 | "strings":"onesky is bad",
31 | "comment":"unacceptable typo mistake",
32 | "suggestion":"onesky is excellent",
33 | "status":"progress",
34 | "translated_string":{
35 | "id":12308,
36 | "string":"onesky is bad"
37 | }
38 | },
39 | {
40 | "id":7890,
41 | "created_at":"2013-03-03T03:03:03+0000",
42 | "created_at_timestamp":1362301383,
43 | "category":"format",
44 | "type":"non-textual",
45 | "index":2,
46 | "comment":"improper format",
47 | "suggestion":"shouldn't use underscore",
48 | "status":"new"
49 | }
50 | ]
51 | }
52 | ```
--------------------------------------------------------------------------------
/resources/feedbacks/GET_feedbacks_id.md:
--------------------------------------------------------------------------------
1 | # Feedback Resources
2 | GET feedbacks/:id
3 |
4 | ## Description
5 | Returns the feedback's attributes.
6 |
7 | ## Requires authentication
8 | - Details described [here](/README.md#authentication)
9 |
10 | ## Parameters
11 | None
12 |
13 | ## Example
14 | **Request**
15 |
16 | GET https://api.platform.onesky.io/1/feedbacks/:id
17 |
18 | **Response**
19 | ``` json
20 | {
21 | "feedback": {
22 | "id":123,
23 | "created_at":"2013-03-03T03:03:03+0000",
24 | "created_at_timestamp":1328475945,
25 | "url":"http://www.oneskyapp.com",
26 | "language":{
27 | "code": "ja_JP",
28 | "english_name": "Japanese",
29 | "local_name": "日本語",
30 | "locale": "ja",
31 | "region" : "JP"
32 | },
33 | "screenshot_url":"",
34 | "submitter":{
35 | "user_type":"employee",
36 | "email":"contact@oneskyapp.com"
37 | },
38 | "comment":"onesky is good",
39 | "status":"process",
40 | "blocks": [
41 | {
42 | "id":6789,
43 | "created_at":"2013-03-04T04:04:04+0000",
44 | "created_at_timestamp":1365066244,
45 | "category":"typo",
46 | "type":"string",
47 | "strings":"onesky is bad",
48 | "comment":"unacceptable typo mistake",
49 | "suggestion":"onesky is excellent",
50 | "status":"process",
51 | "translated_string":{
52 | "id":12308,
53 | "string":"onesky is great"
54 | }
55 | },
56 | {
57 | "id":7890,
58 | "created_at":"2013-03-03T03:03:03+0000",
59 | "created_at_timestamp":1362301383,
60 | "category":"format",
61 | "type":"non-textual",
62 | "index":2,
63 | "comment":"improper format",
64 | "suggestion":"shouldn't use underscore",
65 | "status":"new"
66 | }
67 | ]
68 | }
69 | }
70 | ```
71 |
--------------------------------------------------------------------------------
/reference/import_tasks_response_samples.md:
--------------------------------------------------------------------------------
1 | ## Response samples of import tasks
2 | - [List](#list---list-import-tasks)
3 | - [Show](#show---show-an-import-task)
4 |
5 | ### List - list import tasks
6 |
7 | **Import by files**
8 | ``` json
9 | {
10 | "meta": {
11 | "status": 200
12 | },
13 | "data": [
14 | {
15 | "id": 177,
16 | "file": {
17 | "name": "string2.po"
18 | },
19 | "status": "in-progress",
20 | "created_at": "2013-10-07T15:25:00+0000",
21 | "created_at_timestamp": 1381159500
22 | },
23 | {
24 | "id": 176,
25 | "file": {
26 | "name": "string.po"
27 | },
28 | "status": "in-progress",
29 | "created_at": "2013-10-07T15:27:10+0000",
30 | "created_at_timestamp": 1381159630
31 | }
32 | ]
33 | }
34 | ```
35 |
36 | **Import by phrase collections**
37 | ``` json
38 | {
39 | "meta": {
40 | "status": 200
41 | },
42 | "data": [
43 | {
44 | "id": 266,
45 | "collection_count": 5,
46 | "status": "in-progress",
47 | "created_at": "2013-10-07T15:25:00+0000",
48 | "created_at_timestamp": 1381159500
49 | },
50 | {
51 | "id": 265,
52 | "collection_count": 3,
53 | "status": "in-progress",
54 | "created_at": "2013-10-07T15:27:10+0000",
55 | "created_at_timestamp": 1381159630
56 | }
57 | ]
58 | }
59 | ```
60 |
61 | #### Show - show an import task
62 |
63 | **Import by files**
64 | ``` json
65 | {
66 | "meta": {
67 | "status": 200
68 | },
69 | "data": {
70 | "id": 176,
71 | "file": {
72 | "name": "string.po",
73 | "format": "GNU_PO",
74 | "locale": {
75 | "code": "en-US",
76 | "english_name": "English (United States)",
77 | "local_name": "English (United States)",
78 | "locale": "en",
79 | "region" : "US"
80 | }
81 | },
82 | "string_count": 236,
83 | "word_count": 1260,
84 | "status": "in-progress",
85 | "created_at": "2013-10-07T15:27:10+0000",
86 | "created_at_timestamp": 1381159630
87 | }
88 | }
89 | ```
90 |
91 | **Import by phrase collections**
92 | ``` json
93 | {
94 | "meta": {
95 | "status": 200
96 | },
97 | "data": {
98 | "id": 265,
99 | "collection_count": 3,
100 | "status": "in-progress",
101 | "created_at": "2013-10-07T15:27:10+0000",
102 | "created_at_timestamp": 1381159630
103 | }
104 | }
105 | ```
106 |
--------------------------------------------------------------------------------
/resources/feedbacks/GET_feedbacks.md:
--------------------------------------------------------------------------------
1 | # Feedback Resources
2 | GET feedbacks
3 |
4 | ## Description
5 | Returns a listing of feedbacks in the platform.
6 |
7 | ## Requires authentication
8 | - Details described [here](/README.md#authentication)
9 |
10 | ## Parameters
11 | - `page` _(optional)_ - page number for pagination, default 1.
12 | - `per_page` _(optional)_ - items to be returned per page, default 15.
13 | - `project` _(optional)_ - filter the list by project which the feedback belongs to
14 | - `locale` _(optional)_ - filter the list by locale
15 |
16 | ## Example
17 | **Request**
18 |
19 | GET https://api.platform.onesky.io/1/feedbacks
20 |
21 | **Response**
22 | ``` json
23 | {
24 | "feedbacks": [
25 | {
26 | "id":123,
27 | "created_at":"2013-03-03T03:03:03+0000",
28 | "created_at_timestamp":1328475945,
29 | "url":"http://www.oneskyapp.com",
30 | "language":{
31 | "code": "ja_JP",
32 | "english_name": "Japanese",
33 | "local_name": "日本語",
34 | "locale": "ja",
35 | "region" : "JP"
36 | },
37 | "screenshot_url":"",
38 | "submitter":{
39 | "user_type":"employee",
40 | "email":"contact@oneskyapp.com"
41 | },
42 | "comment":"onesky is good",
43 | "status":"process",
44 | "blocks": [
45 | {
46 | "id":6789,
47 | "created_at":"2013-03-04T04:04:04+0000",
48 | "created_at_timestamp":1365066244,
49 | "category":"typo",
50 | "type":"string",
51 | "strings":"onesky is bad",
52 | "comment":"unacceptable typo mistake",
53 | "suggestion":"onesky is excellent",
54 | "status":"process",
55 | "translated_string":{
56 | "id":12308,
57 | "string":"onesky is bad"
58 | }
59 | },
60 | {
61 | "id":7890,
62 | "created_at":"2013-03-03T03:03:03+0000",
63 | "created_at_timestamp":1362301383,
64 | "category":"format",
65 | "type":"non-textual",
66 | "index":2,
67 | "comment":"improper format",
68 | "suggestion":"shouldn't use underscore",
69 | "status":"new"
70 | }
71 | ]
72 | },
73 | {
74 | "id":456,
75 | "created_at":"2013-03-04T04:04:04+0000",
76 | "created_at_timestamp":1365066244,
77 | "url":"http://www.oneskyapp.com",
78 | "language":{
79 | "code": "zh_CN",
80 | "english_name": "Chinese Simplified",
81 | "local_name": "简体中文",
82 | "locale": "zh",
83 | "region" : "CN"
84 | },
85 | "screenshot_url":"",
86 | "submitter":{
87 | "user_type":"proofreader",
88 | "email":"contact@oneskyapp.com"
89 | },
90 | "comment":"I love onesky",
91 | "status":"finish",
92 | "blocks": [
93 | {
94 | "id":345,
95 | "created_at":"2013-03-04T04:04:04+0000",
96 | "created_at_timestamp":1365066244,
97 | "category":"translate",
98 | "type":"string",
99 | "strings":"The best translation site",
100 | "comment":"wrong translation",
101 | "suggestion":"The best translate platform",
102 | "status":"finish",
103 | "translated_string":{
104 | "id":2390,
105 | "string":"The best translation site"
106 | }
107 | }
108 | ]
109 | }
110 | ]
111 | }
112 | ```
113 |
--------------------------------------------------------------------------------
/resources/import_task.md:
--------------------------------------------------------------------------------
1 | ## Import Task
2 | - [List](#list---list-import-tasks)
3 | - [Show](#show---show-an-import-task)
4 |
5 |
6 | ### List - list import tasks
7 |
8 | GET https://platform.api.onesky.io/1/projects/:project_id/import-tasks
9 |
10 | **Authentication**
11 |
12 | Required. Details described [here](/README.md#authentication)
13 |
14 | **Parameters**
15 |
16 |
17 |
18 | | Name |
19 | Required? |
20 | Default |
21 | Sample |
22 | Description |
23 |
24 |
25 | | page |
26 | optional |
27 | 1 |
28 | |
29 | Set page number to retrieve. (min: 1) |
30 |
31 |
32 | | per_page |
33 | optional |
34 | 50 |
35 | |
36 | Set how many groups to retrieve for each time. (max: 100, min: 1) |
37 |
38 |
39 | | status |
40 | optional |
41 | all |
42 | in-progress |
43 |
44 | Filter to show only import tasks of specific status with one of the followings:
45 |
46 | all - All tasks
47 | completed - Tasks imported successfully
48 | in-progress - Tasks are being handling or waiting for others to finish
49 | failed - Tasks failed while processing
50 |
51 | |
52 |
53 |
54 |
55 | **Response**
56 |
57 | ``` json
58 | {
59 | "meta": {
60 | "status": 200
61 | },
62 | "data": [
63 | {
64 | "id": 177,
65 | "file": {
66 | "name": "string2.po"
67 | },
68 | "status": "in-progress",
69 | "created_at": "2013-10-07T15:25:00+0000",
70 | "created_at_timestamp": 1381159500
71 | },
72 | {
73 | "id": 176,
74 | "file": {
75 | "name": "string.po"
76 | },
77 | "status": "in-progress",
78 | "created_at": "2013-10-07T15:27:10+0000",
79 | "created_at_timestamp": 1381159630
80 | }
81 | ]
82 | }
83 | ```
84 | Remark:
85 | - `status` can be either `completed`, `in-progress` or `failed`.
86 | - Response may vary according to the way used to import strings. More response sample [here](/reference/import_tasks_response_samples.md#list---list-import-tasks).
87 | - Import history is accessible up to one year.
88 |
89 | [Back to top](#import-task)
90 |
91 | ### Show - show an import task
92 |
93 | GET https://platform.api.onesky.io/1/projects/:project_id/import-tasks/:import_id
94 |
95 | **Authentication**
96 |
97 | Required. Details described [here](/README.md#authentication)
98 |
99 | **Parameters**
100 |
101 | NONE
102 |
103 | **Response**
104 |
105 | ``` json
106 | {
107 | "meta": {
108 | "status": 200
109 | },
110 | "data": {
111 | "id": 176,
112 | "file": {
113 | "name": "string.po",
114 | "format": "GNU_PO",
115 | "locale": {
116 | "code": "en-US",
117 | "english_name": "English (United States)",
118 | "local_name": "English (United States)",
119 | "locale": "en",
120 | "region" : "US"
121 | }
122 | },
123 | "string_count": 236,
124 | "word_count": 1260,
125 | "status": "in-progress",
126 | "created_at": "2013-10-07T15:27:10+0000",
127 | "created_at_timestamp": 1381159630
128 | }
129 | }
130 | ```
131 | Remark:
132 | - `status` can be either `completed`, `in-progress` or `failed`.
133 | - Response may vary according to the way used to import strings. More response sample [here](/reference/import_tasks_response_samples.md#show---show-an-import-task).
134 | - Import history is accessible up to one year.
135 |
136 | [Back to top](#import-task)
137 |
--------------------------------------------------------------------------------
/reference/screenshot.md:
--------------------------------------------------------------------------------
1 | ## Screenshots
2 |
3 |
4 | **Parameters**
5 |
6 |
7 |
8 | | Name |
9 | Required? |
10 | Sample |
11 | Description |
12 |
13 |
14 | | name |
15 | required |
16 | |
17 | A unique name to identify where the image located at your website, apps, blogs, etc... (Hints: path of the webpage) |
18 |
19 |
20 | | image |
21 | required |
22 | |
23 | Base64 encoded image data in Data URI scheme structure. Please reference to Data URI scheme and Base64 |
24 |
25 |
26 | | tags |
27 | required |
28 | |
29 | Translations bind to the screenshot. Please refer to tags |
30 |
31 |
32 |
33 |
34 | **Sample**
35 | ``` json
36 | {
37 | "screenshots": [
38 | {
39 | "name": "screen-1.jpg",
40 | "image": "",
41 | "tags": [
42 | {
43 | "key": "common.nav.product.smartphone",
44 | "x": 460,
45 | "y": 30,
46 | "width": 150,
47 | "height": 50,
48 | "file": "string.po"
49 | },
50 | {
51 | "key": "common.nav.product.television",
52 | "x": 460,
53 | "y": 80,
54 | "width": 150,
55 | "height": 50,
56 | "file": "string.po"
57 | },
58 | ...
59 | ]
60 | },
61 | {
62 | "name": "screen-2.jpg",
63 | "image": "",
64 | "tags": [
65 | {
66 | "key": "common.footer.aboutus",
67 | "x": 520,
68 | "y": 60,
69 | "width": 150,
70 | "height": 50,
71 | "file": "string.po"
72 | },
73 | {
74 | "key": "common.footer.contactus",
75 | "x": 520,
76 | "y": 110,
77 | "width": 150,
78 | "height": 50,
79 | "file": "string.po"
80 | },
81 | ...
82 | ]
83 | },
84 | ...
85 | ]
86 | }
87 | ```
88 |
89 |
90 | ## Tags
91 | Translations bind to a screenshot.
92 |
93 |
94 | **Parameters**
95 |
96 |
97 |
98 | | Name |
99 | Required? |
100 | Sample |
101 | Description |
102 |
103 |
104 | | key |
105 | required |
106 | |
107 | Key of the translation |
108 |
109 |
110 | | x |
111 | required |
112 | |
113 | X-axis of the translation component |
114 |
115 |
116 | | y |
117 | required |
118 | |
119 | Y-axis of the translation component |
120 |
121 |
122 | | width |
123 | required |
124 | |
125 | Width of the translation component |
126 |
127 |
128 | | height |
129 | required |
130 | |
131 | Height of the translation component |
132 |
133 |
134 | | file |
135 | optional |
136 | en.yml |
137 | Name of the string file |
138 |
139 |
140 |
141 |
142 | **Sample**
143 | ``` json
144 | {
145 | "tags": [
146 | {
147 | "key": "common.nav.product.smartphone",
148 | "x": 460,
149 | "y": 30,
150 | "width": 150,
151 | "height": 50,
152 | "file": "string.po"
153 | },
154 | {
155 | "key": "common.nav.product.television",
156 | "x": 460,
157 | "y": 180,
158 | "width": 150,
159 | "height": 50,
160 | "file": "string.po"
161 | },
162 | ...
163 | ]
164 | }
165 | ```
166 |
--------------------------------------------------------------------------------
/resources/quotation.md:
--------------------------------------------------------------------------------
1 | ## Quotation
2 | - [Show](#show---make-a-quotation)
3 |
4 |
5 | ### Show - make a quotation
6 |
7 | GET https://platform.api.onesky.io/1/projects/:project_id/quotations
8 |
9 | **Authentication**
10 |
11 | Required. Details described [here](/README.md#authentication)
12 |
13 | **Parameters**
14 |
15 |
16 |
17 | | Name |
18 | Required? |
19 | Default |
20 | Sample |
21 | Description |
22 |
23 |
24 | | files |
25 | required |
26 | |
27 | ['string.po'] |
28 | Files to be translated in the order |
29 |
30 |
31 | | to_locale |
32 | required |
33 | |
34 | zh-TW |
35 | Target language to tranlate. Please refer to GET locales |
36 |
37 |
38 | | is_including_not_translated |
39 | optional |
40 | true |
41 | false |
42 | Include not translated phrases to translate |
43 |
44 |
45 | | is_including_not_approved |
46 | optional |
47 | true |
48 | false |
49 | Include not approved phrases to translate |
50 |
51 |
52 | | is_including_outdated |
53 | optional |
54 | true |
55 | false |
56 | Include outdated phrases to translate that is updated since last order. |
57 |
58 |
59 | | specialization |
60 | optional |
61 | general |
62 | game |
63 |
64 | Specify specialization in order to translate phrases in a specific area.
65 |
66 | Currently supported:
67 |
68 | general - genreal translations
69 | game - translations of game
70 |
71 | |
72 |
73 |
74 |
75 | **Response**
76 |
77 | ```
78 | status 200 OK
79 | ```
80 | ``` json
81 | {
82 | "meta": {
83 | "status": 200
84 | },
85 | "data": {
86 | "files": [
87 | {
88 | "name": "string.po"
89 | },
90 | {
91 | "name": "string2.po"
92 | },
93 | ...
94 | ],
95 | "from_language": {
96 | "code": "en-US",
97 | "english_name": "English (United States)",
98 | "local_name": "English (United States)",
99 | "locale": "en",
100 | "region" : "US"
101 | },
102 | "to_language": {
103 | "code": "ja-JP",
104 | "english_name": "Japanese",
105 | "local_name": "日本語",
106 | "locale": "ja",
107 | "region" : "JP"
108 | },
109 | "is_including_not_translated": true,
110 | "is_including_not_approved": true,
111 | "is_including_outdated": false,
112 | "specialization": "general",
113 | "translation_only": {
114 | "string_count": 2013,
115 | "word_count": 639,
116 | "per_word_cost": "0.01",
117 | "total_cost": "20.13",
118 | "will_complete_at": "2013-01-01T23:00:00+0000",
119 | "will_complete_at_timestamp": 13453435132,
120 | "seconds_to_complete": 1234567,
121 | "preferred_translator" : {
122 | "will_complete_at": "2013-01-05T23:00:00+0000",
123 | "will_complete_at_timestamp": 1357426800,
124 | "seconds_to_complete": 2342342
125 | }
126 | },
127 | "translation_and_review": {
128 | "string_count": 2013,
129 | "word_count": 639,
130 | "per_word_cost": "0.02",
131 | "total_cost": "40.26",
132 | "will_complete_at": "2013-01-02T23:00:00+0000",
133 | "will_complete_at_timestamp": 1357167600,
134 | "seconds_to_complete": 2345678,
135 | "preferred_translator" : {
136 | "will_complete_at": "2013-01-06T23:00:00+0000",
137 | "will_complete_at_timestamp": 1357513200,
138 | "seconds_to_complete": 3456789
139 | }
140 | },
141 | "review_only": {
142 | "string_count": 2013,
143 | "word_count": 639,
144 | "per_word_cost": "0.005",
145 | "total_cost": "10.07",
146 | "will_complete_at": "2013-01-01T23:00:00+0000",
147 | "will_complete_at_timestamp": 13453435132,
148 | "seconds_to_complete": 1234567,
149 | "preferred_translator" : {
150 | "will_complete_at": "2013-01-05T23:00:00+0000",
151 | "will_complete_at_timestamp": 1357426800,
152 | "seconds_to_complete": 2342342
153 | }
154 | }
155 | }
156 | }
157 | ```
158 | [Back to top](#quotation)
159 |
--------------------------------------------------------------------------------
/reference/phrase_collection_format.md:
--------------------------------------------------------------------------------
1 | ## Phrase Collection format
2 | **Parameters**
3 |
4 |
5 |
6 | | Name |
7 | Required? |
8 | Default |
9 | Description |
10 |
11 |
12 | | collection_key |
13 | required |
14 | |
15 | Unique key to a phrase collection |
16 |
17 |
18 | | string_key |
19 | required |
20 | |
21 | Unique key to string within a phrase collection |
22 |
23 |
24 | | string |
25 | required |
26 | |
27 | String to be translated |
28 |
29 |
30 | | description |
31 | optional |
32 | |
33 | Description of string |
34 |
35 |
36 | | length_limit |
37 | optional |
38 | [no limit] |
39 | Set the length limit for translator |
40 |
41 |
42 | | length_limit - type |
43 | (required if length_limit provided) |
44 | |
45 |
46 |
47 | -
48 |
absolute
49 |
50 | Absolute number of characters limited for translation
51 |
52 | -
53 |
relative
54 |
55 | Number of characters limited is calculated according to string length. For example, length limit value 2 with string length 10, formula will be 10 x 2. That is 20 characters.
56 |
57 |
58 | |
59 |
60 |
61 | | length_limit - value |
62 | (required if length_limit provided) |
63 | |
64 | Value either used as absolute characters limited or to calculate the limitation |
65 |
66 |
67 | | length_limit - is_exceed_allowed |
68 | optional |
69 | true |
70 | Whether allow translation exceeding the length limit a little |
71 |
72 |
73 |
74 | **Structure**
75 |
76 | ``` json
77 | {
78 | "": {
79 | "": {
80 | "string": "",
81 | "description": "",
82 | "length_limit": {
83 | "type": "[absolute, relative]",
84 | "value": "",
85 | "is_exceed_allowed": ""
86 | }
87 | }
88 | }
89 | }
90 | ```
91 |
92 | **Sample**
93 |
94 | ``` json
95 | {
96 | "question_001": {
97 | "title": {
98 | "string": "Which one is correct team name in National Basketball Association (NBA)?",
99 | "description": "NBA basketball team name",
100 | "length_limit": {
101 | "type": "absolute",
102 | "value": 80,
103 | "is_exceed_allowed": true
104 | }
105 | },
106 | "answer1": {
107 | "string": "New York Bulls",
108 | "description": "New York Knicks, Chicago Bulls",
109 | "length_limit": {
110 | "type": "relative",
111 | "value": 1,
112 | "is_exceed_allowed": false
113 | }
114 | },
115 | "answer2": {
116 | "string": "Los Angeles Kings",
117 | "description": "Los Angeles Lakers, Sacramento Kings",
118 | "length_limit": {
119 | "type": "relative",
120 | "value": 1,
121 | "is_exceed_allowed": false
122 | }
123 | },
124 | "answer3": {
125 | "string": "Golden State Warriros",
126 | "description": "This is the answer",
127 | "length_limit": {
128 | "type": "relative",
129 | "value": 1,
130 | "is_exceed_allowed": false
131 | }
132 | },
133 | "answer4": {
134 | "string": "Huston Heat",
135 | "description": "Huston Rocket, Miami Heat",
136 | "length_limit": {
137 | "type": "relative",
138 | "value": 1,
139 | "is_exceed_allowed": false
140 | }
141 | }
142 | },
143 | "question_002": {
144 | "title": {
145 | "string": "Albert Einstein was born in which country?",
146 | "description": "Albery Einstein"
147 | "length_limit": {
148 | "type": "absolute",
149 | "value": 70,
150 | "is_exceed_allowed": true
151 | }
152 | },
153 | "answer1": {
154 | "string": "France"
155 | },
156 | "answer2": {
157 | "string": "Germany",
158 | "description": "answer"
159 | },
160 | "answer3": {
161 | "string": "Italy"
162 | },
163 | "answer4": {
164 | "string": "England"
165 | }
166 | }
167 | }
168 | ```
169 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # OneSky Platform API
2 |
3 | OneSky Platform API provides programmatic access to OneSky's platform management.
4 |
5 | ## The new API
6 |
7 | This is new Platform API and is not compatible with the [Classic API](http://developer.oneskyapp.com/api). This new API covers most of the endpoints of classic API with numerous of new endpoints added and will continue to be actively developed going forward.
8 |
9 | ## Authentication
10 |
11 | All of the endpoints require you to authenticate. You will have to find your own API key and API secret. First login to [OneSky](http://www.oneskyapp.com) and find the [API key](http://support.oneskyapp.com/hc/en-us/articles/206887797-How-to-find-your-API-keys-).
12 |
13 | ## API Access
14 |
15 | This Platform API is available for organizations subscribed to STARTER or above plans.
16 |
17 | #### Parameters
18 |
19 |
20 | | Name |
21 | Type |
22 | Description |
23 |
24 |
25 | api_key |
26 | string |
27 | Your own API public key |
28 |
29 |
30 | timestamp |
31 | integer |
32 | Current unix timestamp (GMT+0) in seconds |
33 |
34 |
35 | dev_hash |
36 | string |
37 |
38 | Calculate with timestamp and api_secret
39 |
40 | Formula: md5(concatenate(<timestamp>, <api_secret>))
41 | |
42 |
43 |
44 |
45 | ## Request
46 | We accept request data in JSON format. Please specify request header with `content-type: application/json` and encode the data in JSON format.
47 |
48 | SSL is applied to protect all request data. Make sure you are using https to initiate request.
49 |
50 | ## Response
51 |
52 | Response body will be in JSON format with 2 objects.
53 | - `meta` contains the metadata of the response and additional information such as status code, total record count, paginations, etc...
54 | - `data` contains the data from your request such as project information, file information, etc...
55 |
56 | Currently, we only support JSON data format in response.
57 |
58 | #### Success
59 | Successful request will response with `2xx` status code together with response body if there is. Details of response body is shown at the bottom of each endpoints.
60 |
61 | #### Failure
62 | Failure request will response with an error status code together with an error message.
63 |
64 | Example:
65 | ```
66 | status 400 bad request
67 | ```
68 | ```json
69 | {
70 | "meta": {
71 | "status": 400,
72 | "message": "Your request cannot be processed"
73 | },
74 | "data": {}
75 | }
76 | ```
77 | For more authentication error troubleshooting, please see this [article](https://support.oneskyapp.com/hc/en-us/articles/222464588-I-received-an-authentication-error-when-using-the-API).
78 |
79 | ## Resources
80 |
81 | **Project**
82 | - [**Project Group**](/resources/project_group.md)
83 | - LIST all project groups
84 | - SHOW project group details
85 | - CREATE a new project group
86 | - DELETE a project group
87 | - list enabled LANGUAGES
88 | - [**Project**](/resources/project.md)
89 | - LIST projects of a project group
90 | - SHOW project details
91 | - CREATE a new project
92 | - UPDATE a project
93 | - DELETE a project
94 | - list LANGUAGES of a project
95 | - [**Project Type**](/resources/project_type.md)
96 | - LIST all project types
97 |
98 | **String**
99 | - [**File**](/resources/file.md)
100 | - LIST uploaded files
101 | - UPLOAD a file
102 | - DELETE a file
103 | - [**Translation**](/resources/translation.md)
104 | - EXPORT translations in files
105 | - export translations in MULTILINGUAL files
106 | - export translations of APP STORE Description
107 | - GET translation status
108 | - [**Import Task**](/resources/import_task.md)
109 | - LIST import tasks
110 | - SHOW import task
111 |
112 | **Order**
113 | - [**Quotation**](/resources/quotation.md)
114 | - SHOW a quotation
115 | - [**Order**](/resources/order.md)
116 | - LIST all orders
117 | - SHOW order details
118 | - CREATE an order
119 |
120 | **Language**
121 | - [**Locale**](/resources/locale.md)
122 | - LIST all locales
123 |
124 | ## Wrappers
125 | **PHP**
126 | - [api-library-php5](https://github.com/onesky/api-library-php5) - OneSky
127 |
128 | **PHP Symphony**
129 | - [OneSkyBundle](https://github.com/OpenClassrooms/OneSkyBundle) - OpenClassrooms
130 |
131 | **Python**
132 | - [onesky-python](https://github.com/Jana-Mobile/onesky-python) - danob-jana
133 |
134 | **Ruby**
135 | - [onesky-ruby](https://github.com/onesky/onesky-ruby) - OneSky
136 |
137 | **Rails**
138 | - [onesky-rails](https://github.com/onesky/onesky-rails) - OneSky
139 |
140 | **Grunt**
141 | - [grunt-onesky-import](https://github.com/howardhenry/grunt-onesky-import) - howardhenry
142 | - [grunt-onesky-export](https://github.com/howardhenry/grunt-onesky-export) - howardhenry
143 |
144 | **Node.js**
145 | - [nodejs-onesky-utils](https://github.com/brainly/nodejs-onesky-utils) - Brainly (A known issue with the error message ```{ message: 'Unable to fetch document', code: 500 }``` has been identified. To address this issue, a workaround has been proposed [here](https://github.com/brainly/nodejs-onesky-utils/issues/62). We recommend that users apply the provided patch before utilizing the package)
146 |
147 | **Go**
148 | - [onesky-go](https://github.com/SebastianCzoch/onesky-go) - Sebastian Czoch
149 |
150 | **C#**
151 | - [OneSky.CSharp](https://github.com/QuadRatNewBy/OneSky.CSharp) - QuadRatNewBy
152 |
153 | **.NET**
154 | - [Sirius.OneSky](https://github.com/siriusch/Sirius.OneSky) - siriusch
155 |
156 | **Elixir**
157 | - [onesky.ex](https://github.com/ahtung/onesky.ex) - Ahtung
158 |
--------------------------------------------------------------------------------
/resources/translation.md:
--------------------------------------------------------------------------------
1 | ## Translation
2 | - [Export](#export---export-translations-in-files)
3 | - [Export Multilingual File](#export-multilingual-file---export-translations-in-multilingual-files)
4 | - [App Description](#app-description---export-translations-of-app-store-description-in-json)
5 | - [Status](#status---translations-status)
6 |
7 |
8 | ### Export - export translations in files
9 | This action will create files from translations with specified locale. When translation file is ready, this action will simply response with the file.
10 |
11 | GET https://platform.api.onesky.io/1/projects/:project_id/translations
12 |
13 | **Authentication**
14 |
15 | Required. Details described [here](/README.md#authentication)
16 |
17 | **Parameters**
18 |
19 | Name | Required? | Default | Sample | Description
20 | ---- | --------- | ------- | ------ | -----------
21 | locale | required | | `zh-TW` | Specify language of translations to export. Please refer to [GET locales](/resources/locale.md).
22 | source_file_name | required | | `string.po` | Specify the name of the source file.
23 | export_file_name | optional | *`string_zh-TW.po` | `zh-TW.po` | Specify the name of export file that is the file to be returned.
24 |
25 | *Assume `locale = "zh-TW"` and `source_file_name = "string.po"`
26 |
27 | **Response**
28 |
29 | When translation file is not ready. If the file is not processing, this will trigger the action to create file.
30 | ```
31 | status 202 Accepted
32 | ```
33 |
34 | When no string is ready in the file.
35 | ```
36 | status 204 No content
37 | ```
38 |
39 | When translation file is ready.
40 | ```
41 | file
42 | ```
43 | [Back to top](#translation)
44 |
45 | ### Export Multilingual File - Export Translations in Multilingual Files
46 | This action will create files from translations of specified file. When translation file is ready, this action will simply response with the file. Currently supported format is `I18NEXT_MULTILINGUAL_JSON`.
47 |
48 | GET https://platform.api.onesky.io/1/projects/:project_id/translations/multilingual
49 |
50 | **Authentication**
51 |
52 | Required. Details described [here](/README.md#authentication)
53 |
54 | **Parameters**
55 |
56 | Name | Required? | Default | Sample | Description
57 | ---- | --------- | ------- | ------ | -----------
58 | source_file_name | required | | `app.json` | Specify the name of the source file.
59 | export_file_name | optional | \*`app.json` | `string.json` | Specify the name of export file that is the file to be returned.
60 | file_format | optional | | `I18NEXT_MULTILINGUAL_JSON` | Specify export file format, if different from source file format.
**Recommend only convert from** `I18NEXT_HIERARCHICAL_JSON`**.**
61 |
62 | *Assume `source_file_name = "app.json"`
63 |
64 | **Response**
65 |
66 | When translation file is not ready. If the file is not processing, this will trigger the action to create file.
67 | ```
68 | status 202 Accepted
69 | ```
70 |
71 | When no string is ready in the file.
72 | ```
73 | status 204 No content
74 | ```
75 |
76 | When translation file is ready.
77 | ```
78 | file
79 | ```
80 | [Back to top](#translation)
81 |
82 |
83 | ### App Description - export translations of App Store Description in JSON
84 | This action is available for project of App Store Description and will export translations with specified locale in JSON format.
85 |
86 | GET https://platform.api.onesky.io/1/projects/:project_id/translations/app-descriptions
87 |
88 | **Authentication**
89 |
90 | Required. Details described [here](/README.md#authentication)
91 |
92 | **Parameters**
93 |
94 | Name | Required? | Default | Sample | Description
95 | ---- | --------- | ------- | ------ | -----------
96 | locale | required | | `zh-TW` | Specify language of translations to export. Please refer to [GET locales](/resources/locale.md).
97 |
98 | **Response**
99 | ```
100 | status 200 OK
101 | ```
102 | ``` json
103 | {
104 | "meta": {
105 | "status": 200,
106 | "language": {
107 | "code": "en-US",
108 | "english_name": "English (United States)",
109 | "local_name": "English (United States)",
110 | "locale": "en",
111 | "region" : "US"
112 | }
113 | },
114 | "data": {
115 | "APP_NAME": "My App Name",
116 | "TITLE": "App title",
117 | "DESCRIPTION": "App description",
118 | "APP_KEYWORD": {
119 | "popular app": "popular app"
120 | },
121 | "APP_IAP_NAME": {
122 | "iap_product1": "Product 1",
123 | "iap_product2": "Product 2"
124 | },
125 | "APP_IAP_DESCRIPTION": {
126 | "iap_product1": "Product 1 description",
127 | "iap_product2": "Product 2 description"
128 | }
129 | }
130 | }
131 | ```
132 | [Back to top](#translation)
133 |
134 |
135 | ### Status - translations status
136 | Return the progress of the translation of a specific file.
137 |
138 | GET https://platform.api.onesky.io/1/projects/:project_id/translations/status
139 |
140 | **Authentication**
141 |
142 | Required. Details described [here](/README.md#authentication)
143 |
144 | **Parameters**
145 |
146 | Name | Required? | Default | Sample | Description
147 | ---- | --------- | ------- | ------ | -----------
148 | file_name | required | | `string.po` | Specify the name of the source file to be translated.
149 | locale | required | | `zh-TW` | Specify language of translation. Please refer to [GET locales](/resources/locale.md).
150 |
151 | **Response**
152 |
153 | ```
154 | status 200 OK
155 | ```
156 | ``` json
157 | {
158 | "meta": {
159 | "status": 200
160 | },
161 | "data": {
162 | "file_name": "string.po",
163 | "locale": {
164 | "code": "ja-JP",
165 | "english_name": "Japanese",
166 | "local_name": "日本語",
167 | "locale": "ja",
168 | "region" : "JP"
169 | },
170 | "progress": "92%",
171 | "string_count": 1359,
172 | "word_count": 3956
173 | }
174 | }
175 | ```
176 | [Back to top](#translation)
177 |
--------------------------------------------------------------------------------
/resources/phrase_collection_attachment.md:
--------------------------------------------------------------------------------
1 | ## Phrase Collection Attachment ( Deprecated )
2 | Files attached to a phrase collection
3 | - [List](#list---list-attachments-of-a-project)
4 | - [Upload](#upload---upload-an-attachment)
5 | - [Download](#download---download-an-attachment)
6 | - [Delete](#delete---delete-an-attachment)
7 |
8 |
9 | ### List - list attachments of a project
10 |
11 | GET https://platform.api.onesky.io/1/projects/:project_id/phrase-collection-attachments
12 |
13 | **Authentication**
14 |
15 | Required. Details described [here](/README.md#authentication)
16 |
17 | **Parameters**
18 |
19 |
20 |
21 | | Name |
22 | Required? |
23 | Default |
24 | Sample |
25 | Description |
26 |
27 |
28 | | page |
29 | optional |
30 | 1 |
31 | |
32 | Set page number to retrieve. (min: 1) |
33 |
34 |
35 | | per_page |
36 | optional |
37 | 50 |
38 | |
39 | Set how many groups to retrieve for each time. (max: 100, min: 1) |
40 |
41 |
42 |
43 | **Response**
44 |
45 | ```
46 | status 200 OK
47 | ```
48 | ``` json
49 | {
50 | "meta": {
51 | "status": 200,
52 | "record_count": 28
53 | },
54 | "data": [
55 | {
56 | "name": "q001-answer1.jpg",
57 | "uploaded_at": "2013-10-07T15:27:10+0000",
58 | "uploaded_at_timestamp": 1381159630
59 | },
60 | {
61 | "name": "q001-answer2.jpg",
62 | "uploaded_at": "2013-10-05T12:36:52+0000",
63 | "uploaded_at_timestamp": 1380976612
64 | },
65 | ...
66 | ]
67 | }
68 | ```
69 |
70 | [Back to top](#phrase-collection-attachment)
71 |
72 | ### Upload - upload an attachment
73 | Attachment (file) name should be unique within a phrase collection. If name of newly uploaded file is found for the same phrase collection, the previously uploaded file will be replaced.
74 |
75 | POST https://platform.api.onesky.io/1/projects/:project_id/phrase-collection-attachments
76 |
77 | **Authentication**
78 |
79 | Required. Details described [here](/README.md#authentication)
80 |
81 | **Parameters**
82 |
83 |
84 |
85 | | Name |
86 | Required? |
87 | Default |
88 | Sample |
89 | Description |
90 |
91 |
92 | | file |
93 | required |
94 | |
95 | |
96 | File attached to an phrase collection |
97 |
98 |
99 | | collection_key |
100 | required |
101 | |
102 | question_001 |
103 | Specify an phrase collection to attach |
104 |
105 |
106 |
107 | **Request**
108 |
109 | Since this endpoint required to upload file, please use `Content-Type: multipart/form-data` for the request and submit the request like a form data.
110 |
111 | **Response**
112 |
113 | ```
114 | status 201 Created
115 | ```
116 | ``` json
117 | {
118 | "meta": {
119 | "status": 200
120 | },
121 | "data": {
122 | "name": "q001-answer1.jpg",
123 | "collection_attached_to": {
124 | "key": "question_001"
125 | },
126 | "uploaded_at": "2013-10-07T15:27:10+0000",
127 | "uploaded_at_timestamp": 1381159630
128 | }
129 | }
130 | ```
131 |
132 | [Back to top](#phrase-collection-attachment)
133 |
134 | ### Download - download an attachment
135 |
136 | GET https://platform.api.onesky.io/1/projects/:project_id/phrase-collection-attachments/download
137 |
138 | **Authentication**
139 |
140 | Required. Details described [here](/README.md#authentication)
141 |
142 | **Parameters**
143 |
144 |
145 |
146 | | Name |
147 | Required? |
148 | Default |
149 | Sample |
150 | Description |
151 |
152 |
153 | | collection_key |
154 | required |
155 | |
156 | question_001 |
157 | Specify an phrase collection to attach |
158 |
159 |
160 | | name |
161 | required |
162 | |
163 | q001-answer1.jpg |
164 | Name of the attachment |
165 |
166 |
167 |
168 | **Response**
169 |
170 | ```
171 | status 200 OK
172 | ```
173 | ```
174 | file
175 | ```
176 |
177 | [Back to top](#phrase-collection-attachment)
178 |
179 | ### Delete - delete an attachment
180 |
181 | Delete https://platform.api.onesky.io/1/projects/:project_id/phrase-collection-attachments
182 |
183 | **Authentication**
184 |
185 | Required. Details described [here](/README.md#authentication)
186 |
187 | **Parameters**
188 |
189 |
190 |
191 | | Name |
192 | Required? |
193 | Default |
194 | Sample |
195 | Description |
196 |
197 |
198 | | collection_key |
199 | required |
200 | |
201 | question_001 |
202 | Specify an phrase collection to attach |
203 |
204 |
205 | | name |
206 | required |
207 | |
208 | q001-answer1.jpg |
209 | Name of the attachment |
210 |
211 |
212 |
213 | **Response**
214 |
215 | ```
216 | status 200 OK
217 | ```
218 |
219 | [Back to top](#phrase-collection-attachment)
220 |
--------------------------------------------------------------------------------
/resources/project_group.md:
--------------------------------------------------------------------------------
1 | ## Project Group
2 | - [List](#list---retrieve-all-project-groups)
3 | - [Show](#show---retrieve-details-of-a-project-group)
4 | - [Create](#create---create-a-new-project-group)
5 | - [Delete](#delete---remove-a-project-group)
6 | - [Languages](#languages---list-enabled-languages-of-a-project-group)
7 |
8 |
9 | ### List - retrieve all project groups
10 |
11 | GET https://platform.api.onesky.io/1/project-groups
12 |
13 | **Authentication**
14 |
15 | Required. Details described [here](/README.md#authentication)
16 |
17 | **Parameters**
18 |
19 |
20 |
21 | | Name |
22 | Required? |
23 | Default |
24 | Sample |
25 | Description |
26 |
27 |
28 | | page |
29 | optional |
30 | 1 |
31 | |
32 | Set page number to retrieve. (min: 1) |
33 |
34 |
35 | | per_page |
36 | optional |
37 | 50 |
38 | |
39 | Set how many groups to retrieve for each time. (max: 100, min: 1) |
40 |
41 |
42 |
43 | **Response**
44 |
45 | ```
46 | status 200 OK
47 | ```
48 | ``` json
49 | {
50 | "meta": {
51 | "status": 200,
52 | "record_count": 65,
53 | "page_count": 3,
54 | "next_page": "http://platform.api.onesky.io/1/project-groups?per_page=25&page=3",
55 | "prev_page": "http://platform.api.onesky.io/1/project-groups?per_page=25&page=1",
56 | "first_page": "http://platform.api.onesky.io/1/project-groups?per_page=25&page=1",
57 | "last_page": "http://platform.api.onesky.io/1/project-groups?per_page=25&page=3"
58 | },
59 | "data": [
60 | {
61 | "id": 365,
62 | "name": "Travel Magazine"
63 | },
64 | {
65 | "id": 366,
66 | "name": "Fashion Magazine"
67 | },
68 | ...
69 | ]
70 | }
71 | ```
72 | Remark:
73 | * Assume `page = 2` and `per_page = 25`
74 | * Note that `next_page`, `prev_page`, `first_page` and `last_page` can be `null`
75 |
76 | [Back to top](#project-group)
77 |
78 |
79 | ### Show - retrieve details of a project group
80 |
81 | GET https://platform.api.onesky.io/1/project-groups/:project_group_id
82 |
83 | **Authentication**
84 |
85 | Required. Details described [here](/README.md#authentication)
86 |
87 | **Parameters**
88 |
89 | NONE
90 |
91 | **Response**
92 |
93 | ```
94 | status 200 OK
95 | ```
96 | ``` json
97 | {
98 | "meta": {
99 | "status": 200
100 | },
101 | "data": {
102 | "id": 365,
103 | "name": "Travel Magazine",
104 | "enabled_language_count": 3,
105 | "project_count": 6
106 | }
107 | }
108 | ```
109 | [Back to top](#project-group)
110 |
111 |
112 | ### Create - create a new project group
113 |
114 | POST https://platform.api.onesky.io/1/project-groups
115 |
116 | **Authentication**
117 |
118 | Required. Details described [here](/README.md#authentication)
119 |
120 | **Parameters**
121 |
122 |
123 |
124 | | Name |
125 | Required? |
126 | Default |
127 | Sample |
128 | Description |
129 |
130 |
131 | | name |
132 | required |
133 | |
134 | |
135 | Name of the project group |
136 |
137 |
138 | | locale |
139 | optional |
140 | en |
141 | zh-TW |
142 | Locale code of the project group base language. Please refer to GET locales |
143 |
144 |
145 |
146 | **Response**
147 |
148 | ```
149 | status 201 Created
150 | ```
151 | ``` json
152 | {
153 | "meta": {
154 | "status": 201
155 | },
156 | "data": {
157 | "id": 8465,
158 | "name": "ABC Publications",
159 | "base_language": {
160 | "code": "en-US",
161 | "english_name": "English (United States)",
162 | "local_name": "English (United States)",
163 | "locale": "en",
164 | "region" : "US"
165 | }
166 | }
167 | }
168 | ```
169 | [Back to top](#project-group)
170 |
171 |
172 | ### Delete - remove a project group
173 |
174 | DELETE https://platform.api.onesky.io/1/project-groups/:project_group_id
175 |
176 | **Authentication**
177 |
178 | Required. Details described [here](/README.md#authentication)
179 |
180 | **Parameters**
181 |
182 | NONE
183 |
184 | **Response**
185 |
186 | ```
187 | status 200 OK
188 | ```
189 | [Back to top](#project-group)
190 |
191 |
192 | ### Languages - list enabled languages of a project group
193 |
194 | GET https://platform.api.onesky.io/1/project-groups/:project_group_id/languages
195 |
196 | **Authentication**
197 |
198 | Required. Details described [here](/README.md#authentication)
199 |
200 | **Parameters**
201 |
202 | NONE
203 |
204 | **Response**
205 |
206 | ```
207 | status 200 OK
208 | ```
209 | ``` json
210 | {
211 | "meta": {
212 | "status": 200,
213 | "record_count": 3
214 | },
215 | "data": [
216 | {
217 | "code": "en-US",
218 | "english_name": "English (United States)",
219 | "local_name": "English (United States)",
220 | "locale": "en",
221 | "region" : "US",
222 | "is_base_language": true
223 | },
224 | {
225 | "code": "ja-JP",
226 | "english_name": "Japanese",
227 | "local_name": "日本語",
228 | "locale": "ja",
229 | "region" : "JP",
230 | "is_base_language": false
231 | },
232 | {
233 | "code": "ko-KR",
234 | "english_name": "Korean",
235 | "local_name": "한국어",
236 | "locale": "ko",
237 | "region" : "KR",
238 | "is_base_language": false
239 | },
240 | ...
241 | ]
242 | }
243 | ```
244 | [Back to top](#project-group)
245 |
--------------------------------------------------------------------------------
/resources/project.md:
--------------------------------------------------------------------------------
1 | ## Project
2 | - [List](#list---list-projects-of-a-project-group)
3 | - [Show](#show---retrieve-details-of-a-project)
4 | - [Create](#create---create-a-new-project)
5 | - [Update](#update---update-project)
6 | - [Delete](#delete---remove-project)
7 | - [Languages](#languages---list-languages-of-a-project)
8 |
9 |
10 | ### List - list projects of a project group
11 |
12 | GET https://platform.api.onesky.io/1/project-groups/:project_group_id/projects
13 |
14 | **Authentication**
15 |
16 | Required. Details described [here](/README.md#authentication)
17 |
18 | **Parameters**
19 |
20 | NONE
21 |
22 | **Response**
23 |
24 | ```
25 | status 200 OK
26 | ```
27 | ``` json
28 | {
29 | "meta": {
30 | "status": 200,
31 | "record_count": 2
32 | },
33 | "data": [
34 | {
35 | "id": 6968,
36 | "name": "Company website"
37 | },
38 | {
39 | "id": 6969,
40 | "name": "Company blog"
41 | }
42 | ]
43 | }
44 | ```
45 | [Back to top](#project)
46 |
47 |
48 | ### Show - retrieve details of a project
49 |
50 | GET https://platform.api.onesky.io/1/projects/:project_id
51 |
52 | **Authentication**
53 |
54 | Required. Details described [here](/README.md#authentication)
55 |
56 | **Parameters**
57 |
58 | NONE
59 |
60 | **Response**
61 |
62 | ```
63 | status 200 OK
64 | ```
65 | ``` json
66 | {
67 | "meta": {
68 | "status": 200
69 | },
70 | "data": {
71 | "id": 6968,
72 | "name": "Website",
73 | "description": "Words from company website.",
74 | "project_type": {
75 | "code": "website",
76 | "name": "Website"
77 | },
78 | "string_count": 1385,
79 | "word_count": 2956
80 | }
81 | }
82 | ```
83 | [Back to top](#project)
84 |
85 |
86 | ### Create - create a new project
87 |
88 | POST https://platform.api.onesky.io/1/project-groups/:project_group_id/projects
89 |
90 | **Authentication**
91 |
92 | Required. Details described [here](/README.md#authentication)
93 |
94 | **Parameters**
95 |
96 |
97 |
98 | | Name |
99 | Required? |
100 | Default |
101 | Sample |
102 | Description |
103 |
104 |
105 | | project_type |
106 | required |
107 | |
108 | website |
109 | Please refer to GET project_type |
110 |
111 |
112 | | name |
113 | optional |
114 | |
115 | |
116 | Project name |
117 |
118 |
119 | | description |
120 | optional |
121 | |
122 | |
123 | Project description |
124 |
125 |
126 |
127 | **Response**
128 |
129 | ```
130 | status 201 Created
131 | ```
132 | ``` json
133 | {
134 | "meta": {
135 | "status": 201
136 | },
137 | "data": {
138 | "id": 10476,
139 | "project_type": {
140 | "code": "website",
141 | "name": "Website"
142 | },
143 | "name": "Website",
144 | "description": "Words from company website"
145 | }
146 | }
147 | ```
148 | [Back to top](#project)
149 |
150 |
151 | ### Update - update project
152 |
153 | PUT https://platform.api.onesky.io/1/projects/:project_id
154 |
155 | **Authentication**
156 |
157 | Required. Details described [here](/README.md#authentication)
158 |
159 | **Parameters**
160 |
161 |
162 |
163 | | Name |
164 | Required? |
165 | Default |
166 | Sample |
167 | Description |
168 |
169 |
170 | | name |
171 | optional |
172 | |
173 | |
174 | New project name |
175 |
176 |
177 | | description |
178 | optional |
179 | |
180 | |
181 | New project description |
182 |
183 |
184 |
185 | **Response**
186 |
187 | ```
188 | status 200 OK
189 | ```
190 | [Back to top](#project)
191 |
192 |
193 | ### Delete - remove project
194 |
195 | DELETE https://platform.api.onesky.io/1/projects/:project_id
196 |
197 | **Authentication**
198 |
199 | Required. Details described [here](/README.md#authentication)
200 |
201 | **Parameters**
202 |
203 | NONE
204 |
205 | **Response**
206 |
207 | ```
208 | status 200 OK
209 | ```
210 | [Back to top](#project)
211 |
212 |
213 | ### Languages - list languages of a project
214 |
215 | GET https://platform.api.onesky.io/1/projects/:project_id/languages
216 |
217 | **Authentication**
218 |
219 | Required. Details described [here](/README.md#authentication)
220 |
221 | **Parameters**
222 |
223 | NONE
224 |
225 | **Response**
226 |
227 | ```
228 | status 200 OK
229 | ```
230 | ``` json
231 | {
232 | "meta": {
233 | "status": 200,
234 | "record_count": 3
235 | },
236 | "data": [
237 | {
238 | "code": "en-US",
239 | "english_name": "English (United States)",
240 | "local_name": "English (United States)",
241 | "locale": "en",
242 | "region": "US",
243 | "is_base_language": true,
244 | "is_ready_to_publish": true,
245 | "translation_progress": "100%",
246 | "last_updated_at": "2013-10-07T15:27:10+0000",
247 | "last_updated_at_timestamp": 1381159630
248 | },
249 | {
250 | "code": "ja-JP",
251 | "english_name": "Japanese",
252 | "local_name": "日本語",
253 | "locale": "ja",
254 | "region": "JP",
255 | "is_base_language": false,
256 | "is_ready_to_publish": true,
257 | "translation_progress": "98%",
258 | "last_updated_at": "2013-10-07T15:27:10+0000",
259 | "last_updated_at_timestamp": 1381159630
260 | },
261 | {
262 | "code": "ko-KR",
263 | "english_name": "Korean",
264 | "local_name": "한국어",
265 | "locale": "ko",
266 | "region": "KR",
267 | "is_base_language": false,
268 | "is_ready_to_publish": true,
269 | "translation_progress": "56%",
270 | "last_updated_at": "2013-10-07T15:27:10+0000",
271 | "last_updated_at_timestamp": 1381159630
272 | },
273 | ...
274 | ]
275 | }
276 | ```
277 | [Back to top](#project)
278 |
--------------------------------------------------------------------------------
/resources/file.md:
--------------------------------------------------------------------------------
1 | ## File
2 | - [List](#list---list-uploaded-files)
3 | - [Upload](#upload---upload-a-file)
4 | - [Delete](#delete---delete-a-file)
5 |
6 |
7 | ### List - list uploaded files
8 |
9 | GET https://platform.api.onesky.io/1/projects/:project_id/files
10 |
11 | **Authentication**
12 |
13 | Required. Details described [here](/README.md#authentication)
14 |
15 | **Parameters**
16 |
17 |
18 |
19 | | Name |
20 | Required? |
21 | Default |
22 | Sample |
23 | Description |
24 |
25 |
26 | | page |
27 | optional |
28 | 1 |
29 | |
30 | Set page number to retrieve. (min: 1) |
31 |
32 |
33 | | per_page |
34 | optional |
35 | 50 |
36 | |
37 | Set how many groups to retrieve for each time. (max: 100, min: 1) |
38 |
39 |
40 |
41 | **Response**
42 |
43 | ```
44 | status 200 OK
45 | ```
46 | ``` json
47 | {
48 | "meta": {
49 | "status": 200,
50 | "record_count": 16
51 | },
52 | "data": [
53 | {
54 | "name": "strings.po",
55 | "string_count": 236,
56 | "last_import": {
57 | "id": 123,
58 | "status": "in-progress"
59 | },
60 | "uploaded_at": "2013-10-07T15:27:10+0000",
61 | "uploaded_at_timestamp": 1381159630
62 | },
63 | {
64 | "name": "en.yml",
65 | "string_count": 335,
66 | "last_import": {
67 | "id": 109,
68 | "status": "completed"
69 | },
70 | "uploaded_at": "2013-10-05T12:36:52+0000",
71 | "uploaded_at_timestamp": 1380976612
72 | },
73 | {
74 | "name": "Manually input",
75 | "string_count": 285,
76 | },
77 | ...
78 | ]
79 | }
80 | ```
81 | Remark:
82 | - `status` can be either `completed`, `in-progress` or `failed`.
83 | - Manual input strings will display as a separate file with no `last_import`, `uploaded_at` and `uploaded_at_timestamp`.
84 | - Import history is accessible up to one year. For files imported longer than one year ago, `id` will display as `0` and `status` will display as `completed`.
85 |
86 | [Back to top](#file)
87 |
88 | ### Upload - upload a file
89 | Add or update strings by file.
90 |
91 | POST https://platform.api.onesky.io/1/projects/:project_id/files
92 |
93 | **Authentication**
94 |
95 | Required. Details described [here](/README.md#authentication)
96 |
97 | **Parameters**
98 |
99 |
100 |
101 | | Name |
102 | Required? |
103 | Default |
104 | Sample |
105 | Description |
106 |
107 |
108 | | file |
109 | required |
110 | |
111 | |
112 | File contains strings to translate |
113 |
114 |
115 | | file_format |
116 | required |
117 | |
118 | IOS_STRINGS |
119 | Specify the input format. Please refer to format list |
120 |
121 |
122 | | locale |
123 | optional |
124 | [base language] |
125 | zh-TW |
126 | Specify the input language. If locale is different from base language, the strings will add to translation strings. Please refer to GET locales |
127 |
128 |
129 | | is_keeping_all_strings |
130 | optional |
131 | true |
132 | |
133 | For strings that cannot be found in newly uploaded file with same file name, keep those strings unchange if set to true. Deprecate those strings if set to false. Notice that different files will not interfere each other in the same project. For example, with setting is_keeping_all_strings to false, uploading en2.po will not deprecate strings of previously uploaded file, en.po. |
134 |
135 |
136 | | is_allow_translation_same_as_original |
137 | optional |
138 | false |
139 | |
140 | This setting applies to translation upload, skip importing translations that are the same as source text if set to false. Keeping the translations that are the same as source text if set to true. |
141 |
142 |
143 |
144 | **Request**
145 |
146 | Since this endpoint required to upload file, please use `Content-Type: multipart/form-data` for the request and submit the request like a form data.
147 |
148 | **Response**
149 |
150 | ```
151 | status 201 Created
152 | ```
153 | ``` json
154 | {
155 | "meta": {
156 | "status": 201
157 | },
158 | "data": {
159 | "name": "string.po",
160 | "format": "GNU_PO",
161 | "language": {
162 | "code": "en-US",
163 | "english_name": "English (United States)",
164 | "local_name": "English (United States)",
165 | "locale": "en",
166 | "region" : "US"
167 | },
168 | "import": {
169 | "id": 154,
170 | "created_at": "2013-10-07T15:27:10+0000",
171 | "created_at_timestamp": 1381159630
172 | }
173 | }
174 | }
175 | ```
176 | Remark: After string file uploaded, string import process will be performed in background. Please check the import status via [Import Task](/resources/import_task.md#show---show-an-import-task) endpoint by using the `import.id` provided.
177 |
178 | [Back to top](#file)
179 |
180 |
181 | ### Delete - delete a file
182 |
183 | DELETE https://platform.api.onesky.io/1/projects/:project_id/files
184 |
185 | **Authentication**
186 |
187 | Required. Details described [here](/README.md#authentication)
188 |
189 | **Parameters**
190 |
191 |
192 |
193 | | Name |
194 | Required? |
195 | Default |
196 | Sample |
197 | Description |
198 |
199 |
200 | | file_name |
201 | required |
202 | |
203 | string.po |
204 | Specify name of file to delete. |
205 |
206 |
207 |
208 | **Response**
209 |
210 | ```
211 | status 200 OK
212 | ```
213 | ``` json
214 | {
215 | "meta": {
216 | "status": 200
217 | },
218 | "data": {
219 | "name": "string.po"
220 | }
221 | }
222 | ```
223 | [Back to top](#file)
224 |
--------------------------------------------------------------------------------
/resources/phrase_collection.md:
--------------------------------------------------------------------------------
1 | ## Phrase Collection ( Deprecated )
2 | - [List](#list---list-phrase-collections)
3 | - [Show](#show---show-a-phrase-collection)
4 | - [Import](#import---create-or-edit-phrase-collections)
5 | - [Delete](#delete---delete-a-phrase-collection)
6 |
7 |
8 | ### List - list phrase collections
9 |
10 | GET https://platform.api.onesky.io/1/projects/:project_id/phrase-collections
11 |
12 | **Authentication**
13 |
14 | Required. Details described [here](/README.md#authentication)
15 |
16 | **Parameters**
17 |
18 |
19 |
20 | | Name |
21 | Required? |
22 | Default |
23 | Sample |
24 | Description |
25 |
26 |
27 | | page |
28 | optional |
29 | 1 |
30 | |
31 | Set page number to retrieve. (min: 1) |
32 |
33 |
34 | | per_page |
35 | optional |
36 | 50 |
37 | |
38 | Set how many groups to retrieve for each time. (max: 100, min: 1) |
39 |
40 |
41 |
42 | **Response**
43 |
44 | ```
45 | status 200 OK
46 | ```
47 | ``` json
48 | {
49 | "meta": {
50 | "status": 200,
51 | "record_count": 36
52 | },
53 | "data": [
54 | {
55 | "key": "question_001",
56 | "created_at": "2013-10-07T15:27:10+0000",
57 | "created_at_timestamp": 1381159630
58 | },
59 | {
60 | "key": "question_002",
61 | "created_at": "2013-10-05T12:36:52+0000",
62 | "created_at_timestamp": 1380976612
63 | },
64 | ...
65 | ]
66 | }
67 | ```
68 |
69 | [Back to top](#phrase-collection)
70 |
71 | ### Show - show a phrase collection
72 |
73 | GET https://platform.api.onesky.io/1/projects/:project_id/phrase-collections/show
74 |
75 | **Authentication**
76 |
77 | Required. Details described [here](/README.md#authentication)
78 |
79 | **Parameters**
80 |
81 |
82 |
83 | | Name |
84 | Required? |
85 | Default |
86 | Sample |
87 | Description |
88 |
89 |
90 | | collection_key |
91 | required |
92 | |
93 | question_001 |
94 | Specify key of a phrase collection to show |
95 |
96 |
97 |
98 | **Response**
99 |
100 | ```
101 | status 200 OK
102 | ```
103 | ``` json
104 | {
105 | "meta": {
106 | "status": 200
107 | },
108 | "data": {
109 | "key": "question_001",
110 | "base_language": {
111 | "en": {
112 | "title": {
113 | "string": "Which one is correct team name in National Basketball Association (NBA)?",
114 | "description": "NBA basketball team name",
115 | "length_limit": {
116 | "type": "absolute",
117 | "value": 80,
118 | "is_exceed_allowed": true
119 | }
120 | },
121 | "answer1": {
122 | "string": "New York Bulls",
123 | "description": "New York Knicks, Chicago Bulls",
124 | "length_limit": {
125 | "type": "relative",
126 | "value": 2,
127 | "is_exceed_allowed": false
128 | }
129 | },
130 | "answer2": {
131 | "string": "Los Angeles Kings",
132 | "description": "Los Angeles Lakers, Sacramento Kings",
133 | "length_limit": {
134 | "type": "relative",
135 | "value": 2,
136 | "is_exceed_allowed": false
137 | }
138 | },
139 | "answer3": {
140 | "string": "Golden State Warriros",
141 | "description": "answer",
142 | "length_limit": {
143 | "type": "relative",
144 | "value": 2,
145 | "is_exceed_allowed": false
146 | }
147 | },
148 | "answer4": {
149 | "string": "Huston Heat",
150 | "description": "Huston Rocket, Miami Heat",
151 | "length_limit": {
152 | "type": "relative",
153 | "value": 2,
154 | "is_exceed_allowed": false
155 | }
156 | }
157 | }
158 | },
159 | "translations": {
160 | "zh-TW": {
161 | "title": "請選出正確的美國職業籃球聯賽球隊名稱",
162 | "answer1": "紐約公牛",
163 | "answer2": "洛杉磯帝王",
164 | "answer3": "金州勇士",
165 | "answer4": "休斯頓熱火"
166 | },
167 | "fr": {...},
168 | "de": {...},
169 | "jp": {...}
170 | },
171 | "attachments" : [
172 | {
173 | "name": "q001-answer1.jpg"
174 | },
175 | {
176 | "name": "q001-answer2.jpg"
177 | },
178 | ...
179 | ],
180 | "created_at": "2013-10-07T15:27:10+0000",
181 | "created_at_timestamp": 1381159630
182 | }
183 | }
184 | ```
185 |
186 | [Back to top](#phrase-collection)
187 |
188 | ### Import - create or edit phrase collections
189 | Import phrase collections to create new strings or edit existing strings.
190 |
191 | POST https://platform.api.onesky.io/1/projects/:project_id/phrase-collections
192 |
193 | **Authentication**
194 |
195 | Required. Details described [here](/README.md#authentication)
196 |
197 | **Parameters**
198 |
199 |
200 |
201 | | Name |
202 | Required? |
203 | Default |
204 | Sample |
205 | Description |
206 |
207 |
208 | | collections |
209 | required |
210 | |
211 | |
212 | Specify strings in phrase collections. Format please refer to Phrase Collection format |
213 |
214 |
215 | | is_keeping_all_strings |
216 | optional |
217 | true |
218 | |
219 | Whether to deprecate strings within an previously created phrase collection that cannot be found in the re-creation of the phrase collection. For example, collection1 (already created) contains string1 and string2. Re-create collection1 with string2 and set is_keeping_all_strings to false. string1 will be deprecated. |
220 |
221 |
222 |
223 | **Response**
224 |
225 | ```
226 | status 201 Created
227 | ```
228 | ``` json
229 | {
230 | "meta": {
231 | "status": 201
232 | },
233 | "data": {
234 | "import": {
235 | "id": 154,
236 | "created_at": "2013-10-07T15:27:10+0000",
237 | "created_at_timestamp": 1381159630
238 | }
239 | }
240 | }
241 | ```
242 | Remark: `import.id` is to retrieve the import status and there will be a new action to do so. We are working on it and will be available in the near future. Watch this repo to stay notice of any update.
243 |
244 | [Back to top](#phrase-collection)
245 |
246 | ### Delete - delete a phrase collection
247 |
248 | DELETE https://platform.api.onesky.io/1/projects/:project_id/phrase-collections
249 |
250 | **Authentication**
251 |
252 | Required. Details described [here](/README.md#authentication)
253 |
254 | **Parameters**
255 |
256 |
257 |
258 | | Name |
259 | Required? |
260 | Default |
261 | Sample |
262 | Description |
263 |
264 |
265 | | collection_key |
266 | required |
267 | |
268 | question_001 |
269 | Specify key of a phrase collection to delete |
270 |
271 |
272 |
273 | **Response**
274 |
275 | ```
276 | status 200 OK
277 | ```
278 |
279 | [Back to top](#phrase-collection)
280 |
--------------------------------------------------------------------------------
/resources/feedback.md:
--------------------------------------------------------------------------------
1 | ## Feedback
2 | - [List](#list---list-all-feedbacks)
3 | - [Show](#show---show-details-of-a-feedback)
4 | - [Create](#create---create-a-feedback)
5 |
6 |
7 | ### List - list all feedbacks
8 | Returns a listing of feedbacks in the platform.
9 |
10 | GET https://platform.api.onesky.io/1/feedbacks
11 |
12 | **Authentication**
13 |
14 | Required. Details described [here](/README.md#authentication)
15 |
16 | **Parameters**
17 |
18 |
19 |
20 | | Name |
21 | Required? |
22 | Default |
23 | Sample |
24 | Description |
25 |
26 |
27 | | page |
28 | optional |
29 | 1 |
30 | |
31 | Set page number to retrieve. (min: 1) |
32 |
33 |
34 | | per_page |
35 | optional |
36 | 50 |
37 | |
38 | Set how many groups to retrieve for each time. (max: 100, min: 1) |
39 |
40 |
41 | | project |
42 | optional |
43 | |
44 | |
45 | Filter the list by project which the feedback belongs to. |
46 |
47 |
48 | | locale |
49 | optional |
50 | en |
51 | zh-TW |
52 | Filter the list by locale. Please refer to GET locales |
53 |
54 |
55 |
56 | **Response**
57 |
58 | ```
59 | status 200 OK
60 | ```
61 | ``` json
62 | {
63 | "feedbacks": [
64 | {
65 | "id":123,
66 | "created_at":"2013-03-03T03:03:03+0000",
67 | "created_at_timestamp":1328475945,
68 | "url":"http://www.oneskyapp.com",
69 | "language":{
70 | "code": "ja_JP",
71 | "english_name": "Japanese",
72 | "local_name": "日本語",
73 | "locale": "ja",
74 | "region" : "JP"
75 | },
76 | "screenshot_url":"",
77 | "submitter":{
78 | "user_type":"employee",
79 | "email":"contact@oneskyapp.com"
80 | },
81 | "comment":"onesky is good",
82 | "status":"process",
83 | "blocks": [
84 | {
85 | "id":6789,
86 | "created_at":"2013-03-04T04:04:04+0000",
87 | "created_at_timestamp":1365066244,
88 | "category":"typo",
89 | "type":"string",
90 | "strings":"onesky is bad",
91 | "comment":"unacceptable typo mistake",
92 | "suggestion":"onesky is excellent",
93 | "status":"process",
94 | "translated_string":{
95 | "id":12308,
96 | "string":"onesky is bad"
97 | }
98 | },
99 | {
100 | "id":7890,
101 | "created_at":"2013-03-03T03:03:03+0000",
102 | "created_at_timestamp":1362301383,
103 | "category":"format",
104 | "type":"non-textual",
105 | "index":2,
106 | "comment":"improper format",
107 | "suggestion":"shouldn't use underscore",
108 | "status":"new"
109 | },
110 | ...
111 | ]
112 | },
113 | {
114 | "id":456,
115 | "created_at":"2013-03-04T04:04:04+0000",
116 | "created_at_timestamp":1365066244,
117 | "url":"http://www.oneskyapp.com",
118 | "language":{
119 | "code": "zh_CN",
120 | "english_name": "Chinese Simplified",
121 | "local_name": "简体中文",
122 | "locale": "zh",
123 | "region" : "CN"
124 | },
125 | "screenshot_url":"",
126 | "submitter":{
127 | "user_type":"proofreader",
128 | "email":"contact@oneskyapp.com"
129 | },
130 | "comment":"I love onesky",
131 | "status":"finish",
132 | "blocks": [
133 | {
134 | "id":345,
135 | "created_at":"2013-03-04T04:04:04+0000",
136 | "created_at_timestamp":1365066244,
137 | "category":"translate",
138 | "type":"string",
139 | "strings":"The best translation site",
140 | "comment":"wrong translation",
141 | "suggestion":"The best translate platform",
142 | "status":"finish",
143 | "translated_string":{
144 | "id":2390,
145 | "string":"The best translation site"
146 | }
147 | },
148 | ...
149 | ]
150 | },
151 | ...
152 | ]
153 | }
154 | ```
155 | [Back to top](#feedback)
156 |
157 |
158 | ### Show - show details of a feedback
159 | Returns the feedback's attributes.
160 |
161 | GET https://platform.api.onesky.io/1/feedbacks/:id
162 |
163 | **Authentication**
164 |
165 | Required. Details described [here](/README.md#authentication)
166 |
167 | **Parameters**
168 |
169 | NONE
170 |
171 | **Response**
172 |
173 | ```
174 | status 200 OK
175 | ```
176 | ``` json
177 | {
178 | "feedback": {
179 | "id":123,
180 | "created_at":"2013-03-03T03:03:03+0000",
181 | "created_at_timestamp":1328475945,
182 | "url":"http://www.oneskyapp.com",
183 | "language":{
184 | "code": "ja_JP",
185 | "english_name": "Japanese",
186 | "local_name": "日本語",
187 | "locale": "ja",
188 | "region" : "JP"
189 | },
190 | "screenshot_url":"",
191 | "submitter":{
192 | "user_type":"employee",
193 | "email":"contact@oneskyapp.com"
194 | },
195 | "comment":"onesky is good",
196 | "status":"process",
197 | "blocks": [
198 | {
199 | "id":6789,
200 | "created_at":"2013-03-04T04:04:04+0000",
201 | "created_at_timestamp":1365066244,
202 | "category":"typo",
203 | "type":"string",
204 | "strings":"onesky is bad",
205 | "comment":"unacceptable typo mistake",
206 | "suggestion":"onesky is excellent",
207 | "status":"process",
208 | "translated_string":{
209 | "id":12308,
210 | "string":"onesky is great"
211 | }
212 | },
213 | {
214 | "id":7890,
215 | "created_at":"2013-03-03T03:03:03+0000",
216 | "created_at_timestamp":1362301383,
217 | "category":"format",
218 | "type":"non-textual",
219 | "index":2,
220 | "comment":"improper format",
221 | "suggestion":"shouldn't use underscore",
222 | "status":"new"
223 | },
224 | ...
225 | ]
226 | }
227 | }
228 | ```
229 | [Back to top](#feedback)
230 |
231 |
232 | ### Create - create a feedback
233 | Returns the feedback's attributes.
234 |
235 | POST https://platform.api.onesky.io/1/feedbacks
236 |
237 | **Authentication**
238 |
239 | Required. Details described [here](/README.md#authentication)
240 |
241 | **Parameters**
242 |
243 |
244 |
245 | | Name |
246 | Required? |
247 | Default |
248 | Sample |
249 | Description |
250 |
251 |
252 | | url |
253 | required |
254 | |
255 | |
256 | url of the webpage |
257 |
258 |
259 | | locale |
260 | required |
261 | |
262 | |
263 | Translated string language. Please refer to GET locales |
264 |
265 |
266 | | screenshot |
267 | required |
268 | |
269 | |
270 | base64 encoded image content |
271 |
272 |
273 | | user_type |
274 | required |
275 | |
276 | |
277 | Submitter user type, user, employee or proofreader |
278 |
279 |
280 | | project |
281 | optional |
282 | |
283 | |
284 | The project that the feedback belongs to. |
285 |
286 |
287 | | email |
288 | optional |
289 | |
290 | |
291 | User email to reply. |
292 |
293 |
294 | | comment |
295 | optional |
296 | |
297 | |
298 | Comment on feedback |
299 |
300 |
301 | | blocks |
302 | optional |
303 | |
304 | |
305 | Blocks array to create |
306 |
307 |
308 |
309 | **Response**
310 |
311 | ```
312 | status 201 OK
313 | ```
314 | [Back to top](#feedback)
315 |
--------------------------------------------------------------------------------
/resources/order.md:
--------------------------------------------------------------------------------
1 | ## Order
2 | - [List](#list---retrieve-all-orders)
3 | - [Show](#show---retrieve-details-of-an-order)
4 | - [Create](#create---create-a-new-order)
5 |
6 |
7 | ### List - retrieve all orders
8 |
9 | GET https://platform.api.onesky.io/1/projects/:project_id/orders
10 |
11 | **Authentication**
12 |
13 | Required. Details described [here](/README.md#authentication)
14 |
15 | **Parameters**
16 |
17 |
18 |
19 | | Name |
20 | Required? |
21 | Default |
22 | Sample |
23 | Description |
24 |
25 |
26 | | page |
27 | optional |
28 | 1 |
29 | |
30 | Set page number to retrieve. (min: 1) |
31 |
32 |
33 | | per_page |
34 | optional |
35 | 50 |
36 | |
37 | Set how many groups to retrieve for each time. (max: 100, min: 1) |
38 |
39 |
40 | | file_name |
41 | optional |
42 | |
43 | string.po |
44 | Filter orders by file name. |
45 |
46 |
47 |
48 | **Response**
49 |
50 | ```
51 | status 200 OK
52 | ```
53 | ``` json
54 | {
55 | "meta": {
56 | "status": 200,
57 | "record_count": 26
58 | },
59 | "data": [
60 | {
61 | "id": 123,
62 | "status": "in-progress",
63 | "ordered_at": "2013-08-15T08:12:40+0000",
64 | "ordered_at_timestamp":13283746583
65 | },
66 | {
67 | "id": 122,
68 | "status": "completed",
69 | "ordered_at": "2013-08-15T08:12:40+0000",
70 | "ordered_at_timestamp":13283746583
71 | },
72 | ...
73 | ]
74 | }
75 | ```
76 | [Back to top](#order)
77 |
78 | Remark: `status` can be either `pending`, `in-progress`, `completed` or `failed`. Details please refer to [Order Status](/reference/order_status.md#order-status)
79 |
80 |
81 | ### Show - retrieve details of an order
82 |
83 | GET https://platform.api.onesky.io/1/projects/:project_id/orders/:order_id
84 |
85 | **Authentication**
86 |
87 | Required. Details described [here](/README.md#authentication)
88 |
89 | **Parameters**
90 |
91 | NONE
92 |
93 | **Response**
94 |
95 | ```
96 | status 200 OK
97 | ```
98 | ``` json
99 | {
100 | "meta": {
101 | "status": 200
102 | },
103 | "data": {
104 | "id": 123,
105 | "status": "in-progress",
106 | "amount": "695.00",
107 | "files": [
108 | {
109 | "name": "string.po"
110 | },
111 | {
112 | "name": "string2.po"
113 | },
114 | ...
115 | ],
116 | "from_language": {
117 | "code": "en-US",
118 | "english_name": "English (United States)",
119 | "local_name": "English (United States)",
120 | "locale": "en",
121 | "region" : "US"
122 | },
123 | "tasks": [
124 | {
125 | "status": "completed",
126 | "to_language": {
127 | "code": "ko-KR",
128 | "english_name": "Korean",
129 | "local_name": "한국어",
130 | "locale": "ko",
131 | "region" : "KR"
132 | },
133 | "translator":{
134 | "name": "Jinny O."
135 | },
136 | "string_count": 835,
137 | "word_count": 3056,
138 | "will_complete_at": null,
139 | "will_complete_at_timestamp": null,
140 | "seconds_to_complete": 0,
141 | "completed_at": "2013-08-17T13:05:20+0000",
142 | "completed_at_timestamp": 1376744720
143 | },
144 | ...
145 | ],
146 | "order_type": "translate-only",
147 | "tone": "formal",
148 | "specialization": "general",
149 | "note": "Message to translator",
150 | "ordered_at": "2013-08-15T08:12:40+0000",
151 | "ordered_at_timestamp":13283746583
152 | }
153 | }
154 | ```
155 | Remark:
156 | - `status` of order (inside `data`) can be either `pending`, `in-progress`, `completed` or `failed`. Details please refer to [Order Status](/reference/order_status.md#order-status)
157 | - `status` of order tasks (inside `tasks`) can be either `in-progress` or `completed`. Details please refer to [Order Task Status](/reference/order_status.md#order-task-status)
158 |
159 | [Back to top](#order)
160 |
161 |
162 | ### Create - create a new order
163 |
164 | POST https://platform.api.onesky.io/1/projects/:project_id/orders
165 |
166 | **Authentication**
167 |
168 | Required. Details described [here](/README.md#authentication)
169 |
170 | **Parameters**
171 |
172 |
173 |
174 | | Name |
175 | Required? |
176 | Default |
177 | Sample |
178 | Description |
179 |
180 |
181 | | files |
182 | required |
183 | |
184 | ['string.po'] |
185 | Files to be translated in the order |
186 |
187 |
188 | | to_locale |
189 | required |
190 | |
191 | zh-TW |
192 | Target language to tranlate. Please refer to GET locales |
193 |
194 |
195 | | order_type |
196 | optional |
197 | translate-only |
198 | review-only |
199 |
200 | Specify type of order.
201 |
202 | Types:
203 |
204 | translate-only - perform translation only
205 | review-only - review translation only
206 | translate-review - perform translation and review afterwards
207 |
208 | |
209 |
210 |
211 | | is_including_not_translated |
212 | optional |
213 | true |
214 | false |
215 | Include not translated phrases to translate |
216 |
217 |
218 | | is_including_not_approved |
219 | optional |
220 | true |
221 | false |
222 | Include not approved phrases to translate |
223 |
224 |
225 | | is_including_outdated |
226 | optional |
227 | true |
228 | false |
229 | Include outdated phrases to translate that is updated since last order. |
230 |
231 |
232 | | translator_type |
233 | optional |
234 | preferred |
235 | fastest |
236 |
237 | Specify type of translator used in translation.
238 |
239 | Types:
240 |
241 | preferred - select translator who helped translated your projects previously for consistency
242 | fastest - select translator who has fewest jobs and is able to pick up your job faster
243 |
244 | |
245 |
246 |
247 | | tone |
248 | optional |
249 | not-specified |
250 | formal |
251 |
252 | Specify the tone used in translation.
253 |
254 | Currently supported:
255 |
256 | not-specified - no preference
257 | formal - translate in formal tone
258 | informal - translate in informal tone
259 |
260 | |
261 |
262 |
263 | | specialization |
264 | optional |
265 | general |
266 | game |
267 |
268 | Specify specialization in order to translate phrases in a specific area.
269 |
270 | Currently supported:
271 |
272 | general - genreal translations
273 | game - translations of game
274 |
275 | |
276 |
277 |
278 | | note |
279 | optional |
280 | |
281 | |
282 | Note to translator. |
283 |
284 |
285 |
286 | **Response**
287 |
288 | ```
289 | status 201 Created
290 | ```
291 | ``` json
292 | {
293 | "meta": {
294 | "status": 201
295 | },
296 | "data": {
297 | "id": 372,
298 | "files": [
299 | {
300 | "name": "string.po"
301 | },
302 | {
303 | "name": "string2.po"
304 | },
305 | ...
306 | ],
307 | "from_language": {
308 | "code": "en-US",
309 | "english_name": "English (United States)",
310 | "local_name": "English (United States)",
311 | "locale": "en",
312 | "region" : "US"
313 | },
314 | "to_language": {
315 | "code": "ja-JP",
316 | "english_name": "Japanese",
317 | "local_name": "日本語",
318 | "locale": "ja",
319 | "region" : "JP"
320 | },
321 | "order_type": "translate-only",
322 | "is_including_not_translated": true,
323 | "is_including_not_approved": false,
324 | "is_including_outdated": true,
325 | "tone": "formal",
326 | "specialization": "general",
327 | "note": "Message to translator",
328 | "ordered_at": "2013-08-15T08:12:40+0000",
329 | "ordered_at_timestamp":13283746583,
330 | }
331 | }
332 | ```
333 | [Back to top](#order)
334 |
--------------------------------------------------------------------------------