├── .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 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
NameRequired?DefaultSampleDescription
screenshotsrequiredPlease refer to screenshots
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 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
NameDescription
pendingOrder will be proceeded automatically after all import tasks completed.
in-progressOrder is proceeding.
completedOrder completed that means all translation tasks are finished.
failedOrder failed to process due to insufficient credit.
28 | 29 | 30 | ### Order Task Status 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
NameDescription
pendingOrder of task is waiting for strings import tasks to finish.
in-progressTranslation in progress
completedTranslation task completed
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 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 52 | 53 |
NameRequired?DefaultSampleDescription
pageoptional1Set page number to retrieve. (min: 1)
per_pageoptional50Set how many groups to retrieve for each time. (max: 100, min: 1)
statusoptionalallin-progress 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 |
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 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
NameRequired?SampleDescription
namerequiredA unique name to identify where the image located at your website, apps, blogs, etc... (Hints: path of the webpage)
imagerequiredBase64 encoded image data in Data URI scheme structure. Please reference to Data URI scheme and Base64
tagsrequiredTranslations bind to the screenshot. Please refer to tags
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 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 |
NameRequired?SampleDescription
keyrequiredKey of the translation
xrequiredX-axis of the translation component
yrequiredY-axis of the translation component
widthrequiredWidth of the translation component
heightrequiredHeight of the translation component
fileoptionalen.ymlName of the string file
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 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 72 | 73 |
NameRequired?DefaultSampleDescription
filesrequired['string.po']Files to be translated in the order
to_localerequiredzh-TWTarget language to tranlate. Please refer to GET locales
is_including_not_translatedoptionaltruefalseInclude not translated phrases to translate
is_including_not_approvedoptionaltruefalseInclude not approved phrases to translate
is_including_outdatedoptionaltruefalseInclude outdated phrases to translate that is updated since last order.
specializationoptionalgeneralgame 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 |
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 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 |
NameRequired?DefaultDescription
collection_keyrequiredUnique key to a phrase collection
string_keyrequiredUnique key to string within a phrase collection
stringrequiredString to be translated
descriptionoptionalDescription of string
length_limitoptional[no limit]Set the length limit for translator
length_limit - type(required if length_limit provided) 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 |
length_limit - value(required if length_limit provided)Value either used as absolute characters limited or to calculate the limitation
length_limit - is_exceed_allowedoptionaltrueWhether allow translation exceeding the length limit a little
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 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 42 | 43 |
NameTypeDescription
api_keystringYour own API public key
timestampintegerCurrent unix timestamp (GMT+0) in seconds
dev_hashstring 38 | Calculate with timestamp and api_secret 39 |
40 | Formula: md5(concatenate(<timestamp>, <api_secret>)) 41 |
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 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
NameRequired?DefaultSampleDescription
pageoptional1Set page number to retrieve. (min: 1)
per_pageoptional50Set how many groups to retrieve for each time. (max: 100, min: 1)
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 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 |
NameRequired?DefaultSampleDescription
filerequiredFile attached to an phrase collection
collection_keyrequiredquestion_001Specify an phrase collection to attach
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 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 |
NameRequired?DefaultSampleDescription
collection_keyrequiredquestion_001Specify an phrase collection to attach
namerequiredq001-answer1.jpgName of the attachment
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 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 |
NameRequired?DefaultSampleDescription
collection_keyrequiredquestion_001Specify an phrase collection to attach
namerequiredq001-answer1.jpgName of the attachment
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 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |
NameRequired?DefaultSampleDescription
pageoptional1Set page number to retrieve. (min: 1)
per_pageoptional50Set how many groups to retrieve for each time. (max: 100, min: 1)
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 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 |
NameRequired?DefaultSampleDescription
namerequiredName of the project group
localeoptionalenzh-TWLocale code of the project group base language. Please refer to GET locales
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 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 |
NameRequired?DefaultSampleDescription
project_typerequiredwebsitePlease refer to GET project_type
nameoptionalProject name
descriptionoptionalProject description
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 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 |
NameRequired?DefaultSampleDescription
nameoptionalNew project name
descriptionoptionalNew project description
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 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
NameRequired?DefaultSampleDescription
pageoptional1Set page number to retrieve. (min: 1)
per_pageoptional50Set how many groups to retrieve for each time. (max: 100, min: 1)
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 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 |
NameRequired?DefaultSampleDescription
filerequiredFile contains strings to translate
file_formatrequiredIOS_STRINGSSpecify the input format. Please refer to format list
localeoptional[base language]zh-TWSpecify the input language. If locale is different from base language, the strings will add to translation strings. Please refer to GET locales
is_keeping_all_stringsoptionaltrueFor 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.
is_allow_translation_same_as_originaloptionalfalseThis 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.
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 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 |
NameRequired?DefaultSampleDescription
file_namerequiredstring.poSpecify name of file to delete.
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 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |
NameRequired?DefaultSampleDescription
pageoptional1Set page number to retrieve. (min: 1)
per_pageoptional50Set how many groups to retrieve for each time. (max: 100, min: 1)
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 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 |
NameRequired?DefaultSampleDescription
collection_keyrequiredquestion_001Specify key of a phrase collection to show
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 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 |
NameRequired?DefaultSampleDescription
collectionsrequiredSpecify strings in phrase collections. Format please refer to Phrase Collection format
is_keeping_all_stringsoptionaltrueWhether 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.
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 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 |
NameRequired?DefaultSampleDescription
collection_keyrequiredquestion_001Specify key of a phrase collection to delete
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 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 |
NameRequired?DefaultSampleDescription
pageoptional1Set page number to retrieve. (min: 1)
per_pageoptional50Set how many groups to retrieve for each time. (max: 100, min: 1)
projectoptionalFilter the list by project which the feedback belongs to.
localeoptionalenzh-TWFilter the list by locale. Please refer to GET locales
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 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 |
NameRequired?DefaultSampleDescription
urlrequiredurl of the webpage
localerequiredTranslated string language. Please refer to GET locales
screenshotrequiredbase64 encoded image content
user_typerequiredSubmitter user type, user, employee or proofreader
projectoptionalThe project that the feedback belongs to.
emailoptionalUser email to reply.
commentoptionalComment on feedback
blocksoptionalBlocks array to create
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 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
NameRequired?DefaultSampleDescription
pageoptional1Set page number to retrieve. (min: 1)
per_pageoptional50Set how many groups to retrieve for each time. (max: 100, min: 1)
file_nameoptionalstring.poFilter orders by file name.
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 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 |
NameRequired?DefaultSampleDescription
filesrequired['string.po']Files to be translated in the order
to_localerequiredzh-TWTarget language to tranlate. Please refer to GET locales
order_typeoptionaltranslate-onlyreview-only 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 |
is_including_not_translatedoptionaltruefalseInclude not translated phrases to translate
is_including_not_approvedoptionaltruefalseInclude not approved phrases to translate
is_including_outdatedoptionaltruefalseInclude outdated phrases to translate that is updated since last order.
translator_typeoptionalpreferredfastest 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 |
toneoptionalnot-specifiedformal 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 |
specializationoptionalgeneralgame 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 |
noteoptionalNote to translator.
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 | --------------------------------------------------------------------------------