L10n:Pontoon/API: Difference between revisions

m
 
(18 intermediate revisions by 3 users not shown)
Line 1: Line 1:
==Description==
==Description==


Exposing Pontoon's data through an API will enable external consumers to build tools, extensions and reports about translations.  In the future, the API will serve as the backend for Pontoon.NEXT's SPA front-end.  We chose an iterative approach to exposing the data.  We start small with a small number of clear-focused use-cases in mind and expand the scope in subsequent iterations.  The API is based on [http://graphql.org/ GraphQL] (see [https://wiki.mozilla.org/index.php?title=L10n:Pontoon/API&oldid=1181890#Technology discussion]).
Exposing Pontoon's data through an API will enable external consumers to build tools, extensions and reports about translations.  In the future, the API will serve as the backend for Pontoon.NEXT's front-end.  We chose an iterative approach to exposing the data.  We start small with a small number of clear-focused use-cases in mind and expand the scope in subsequent iterations.  The API is based on [http://graphql.org/ GraphQL] (see [https://wiki.mozilla.org/index.php?title=L10n:Pontoon/API&oldid=1181890#Technology discussion]).
 
The tracking bug for all work related to the API for Pontoon is {{bug|pontoon-api}}.


==Overview==
==Overview==
Line 9: Line 7:
! style="text-align: center;" | Milestone
! style="text-align: center;" | Milestone
! style="text-align: center;" | Theme
! style="text-align: center;" | Theme
! style="text-align: center;" | Date
! style="text-align: center;" | Status
! style="text-align: center;" | Status
|-
|-
| M1
| M1
| Projects and Locales
| Projects and Locales
| September 2017
| ✓
| ✓
|-
|-
| M2
| M2
| Translations
| User Notifications
| November 2017
|
|
|-
|-
| M3
| M3
| Contributors
| Statistics over time
| January 2018
|
|
|-
|-
| M4
| M4
| Authentication
| Contributors
| March 2018
|
|
|-
|-
| M5
| M5
| Mutations
| Translation Memory
| May 2018
|
|-
| M6
| Translations
|
|
|-
|-
Line 41: Line 37:
==Roadmap==
==Roadmap==


===Milestone 1===
===Milestone 1: Projects and Locales===


''Complete, deployed on October 2, 2017.''  
''Complete, deployed on October 2, 2017.''  
Line 50: Line 46:
* Stats for a project: supported locales, incomplete locales, complete locales.
* Stats for a project: supported locales, incomplete locales, complete locales.


<bugzilla>{
<bugzilla>
     "f1":"blocked",
     {
    "o1":"equals",
        "id": "1302053",
    "v1":"1395273",
        "include_fields": "id, summary, status, resolution, priority, assigned_to"
    "include_fields": "id, summary, status, resolution, assigned_to, depends_on, blocks"
    }
}</bugzilla>
</bugzilla>
 
===Milestone 2: User notifications===
 
Use-cases:
 
* [[L10n:Pontoon-Tools|Michal's Pontoon Tools extension]]
 
Queries:


===Milestone 2===
* [[L10n:Pontoon-Tools#Data_sources|See Data sources section on the Pontoon Tools wiki]]
* Authentication (only return non-public data like notifications if the API consumer is authenticated)


Main theme: translations and pagination.
===Milestone 3: Statistics over time===


Use-cases:
Use-cases:


* Report translation status of a single page on mozilla.org
* Community Health, e.g.:
** Translation progress over time.
** Unreviewed suggestions progress over time.


Queries:
Queries:


* Establish a good practice for paginating results.
* [https://docs.google.com/document/d/1FlZLe8m2sFX6-AT9u_R8D4IODzcTNfx3d1QNaFzT1MQ/edit Get a number of strings per project within a period of time].
* List all Resources for a Project.
** Or a number of words.
* List all Entities for a Resource.
 
* List all Translations into a given Locale for an Entity.
===Milestone 4: Contributors===
** Include status: approved, suggested, fuzzy.
 
** Allow filtering on status via params?
Use-cases:
** List all Translations for an Entity
* List all TranslatedResources for a ProjectLocale
** Include aggregate statistics.
** List all TranslatedResources for a Resource.
** List all TranslatedResources for a Locale.


===Milestone 3===
* [https://docs.google.com/spreadsheets/d/1-QWPJovsag4eYghkK2MMo30wa7QzOOMQkZdIjXnfZGQ/edit#gid=532595279 Number of user groups per locale].


Main theme: contributors.
Queries:


* Query a single contributor (by email? unique key?)
* Query a single contributor (by email? unique key?)
** List recent activity: date, project, action, number of affected strings
** List contributor data: email, display name, permissions, settings
** Aggregate counts of: translated, suggested, fuzzy strings across all projects
** List recent activity: date, string, action
** Aggregate counts of: translated, unreviewed, fuzzy strings across all projects
** List of projects they contribute to
** List of projects they contribute to
*** Aggregate counts of: translated, suggested, fuzzy strings for each project
*** Aggregate counts of: translated, unreviewed, fuzzy strings for each project
* List all contributors on Pontoon
* List all contributors on Pontoon
* List all contributors for a locale
* List all contributors for a locale
Line 93: Line 96:
* List all contributors for a localization (ProjectLocale)
* List all contributors for a localization (ProjectLocale)


===Milestone 4===
===Milestone 5: Translation memory===
 
Use-cases:
 
* External services.
* Mozilla translators in non-Mozilla projects.


Main theme: authentication.
Queries:


* List unread notifications for a logged-in user.
* For a given source string, locale and minimum Levenshtein ratio, return a maximum number of results.


===Milestone 5===
===Milestone 6: Translations===


Main theme: mutations.
Use-cases:


* Add a suggested translation for an Entity.
* Report translation status of a single page on mozilla.org
* Read-only data required by Pontoon.Next's Translate app
* Editing translations via Pontoon.Next's Translate app


===Milestone X===
Queries:


Main theme: statistics over time.
* Establish a good practice for paginating results.
* List all Resources for a Project.
* List all Entities for a Resource.
* List all Translations into a given Locale for an Entity.
** Include status: approved, unreviewed, fuzzy.
** Allow filtering on status via params?
** List all Translations for an Entity
* List all TranslatedResources for a ProjectLocale
** Include aggregate statistics.
** List all TranslatedResources for a Resource.
** List all TranslatedResources for a Locale.
* Add a translation for an Entity
** "approved" if the permissions are high enough
** "unreviewed" otherwise
* Approve/reject a suggestion.
 
<bugzilla>{
    "f1":"blocked",
    "o1":"equals",
    "v1":"1409704",
    "include_fields": "id, summary, status, resolution, priority, assigned_to"
}</bugzilla>


* [https://public.etherpad-mozilla.org/p/pontoon.api.historic.source.string.data Use case and Early rumblings].
==Ideas==
A list of ideas to consider for future milestones.


==Contact==
==Contact==
Confirmed users
1,276

edits