L10n:Pontoon/API: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(→‎Milestone 4: link to Pontoon Tools wiki page)
mNo edit summary
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]).


==Overview==
==Overview==
Line 7: 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;" | Tracking bug
! style="text-align: center;" | Status
! style="text-align: center;" | Status
|-
|-
| M1
| M1
| Projects and Locales
| Projects and Locales
| September 2017
|
| ✓
| ✓
|-
|-
| M2
| M2
| Translations (Read-Only)
| User Notifications
| November 2017
| {{bug|1409704}}
|
|
|-
|-
| M3
| M3
| Translations (Write)
| Contributors
| January 2018
|
|
|
|-
|-
| M4
| M4
| User Notifications
| Translation Memory
| March 2018
|
|
|
|-
|-
| M5
| M5
| Contributors
| Translations
| May 2018
|
|
|
|-
|-
Line 67: Line 55:


===Milestone 2===
===Milestone 2===
Main theme: user notifications.
Use-cases:
* [[L10n:Pontoon-Tools|Michal's Pontoon Tools extension]]
Queries:
* List unread notifications for a logged-in user.
===Milestone 3===
Main theme: contributors.
* Query a single contributor (by email? unique key?)
** List recent activity: date, project, action, number of affected strings
** Aggregate counts of: translated, unreviewed, fuzzy strings across all projects
** List of projects they contribute to
*** Aggregate counts of: translated, unreviewed, fuzzy strings for each project
* List all contributors on Pontoon
* List all contributors for a locale
* List all contributors for a project
* List all contributors for a localization (ProjectLocale)
* One common use case from the past: [https://docs.google.com/spreadsheets/d/1-QWPJovsag4eYghkK2MMo30wa7QzOOMQkZdIjXnfZGQ/edit#gid=532595279 Number of user groups per locale].
* Statistics over time. [https://public.etherpad-mozilla.org/p/pontoon.api.historic.source.string.data Early rumblings and a use case].
===Milestone 4===
Main theme: translation memory.
Use-cases:
* Input parameters: source string, locale, minimum Levenshtein ratio, maximum number of results.
Queries:
*
===Milestone 5===


Main theme: read-only translations and pagination.
Main theme: read-only translations and pagination.
Line 81: Line 110:
* List all Entities for a Resource.
* List all Entities for a Resource.
* List all Translations into a given Locale for an Entity.
* List all Translations into a given Locale for an Entity.
** Include status: approved, suggested, fuzzy.
** Include status: approved, unreviewed, fuzzy.
** Allow filtering on status via params?
** Allow filtering on status via params?
** List all Translations for an Entity
** List all Translations for an Entity
Line 95: Line 124:
     "include_fields": "id, summary, status, resolution, priority, assigned_to"
     "include_fields": "id, summary, status, resolution, priority, assigned_to"
}</bugzilla>
}</bugzilla>
===Milestone 3===
Main theme: authenticated mutations.


Use-cases:
Use-cases:
Line 108: Line 133:
* Add a translation for an Entity
* Add a translation for an Entity
** "approved" if the permissions are high enough
** "approved" if the permissions are high enough
** "suggested" otherwise
** "unreviewed" otherwise
* Approve/reject a suggestion.
* Approve/reject a suggestion.
===Milestone 4===
Main theme: user notifications.
Use-cases:
* [[L10n:Pontoon-Tools|Michal's Pontoon Tools extension]]
Queries:
* List unread notifications for a logged-in user.
===Milestone 5===
Main theme: contributors.
* Query a single contributor (by email? unique key?)
** List recent activity: date, project, action, number of affected strings
** Aggregate counts of: translated, suggested, fuzzy strings across all projects
** List of projects they contribute to
*** Aggregate counts of: translated, suggested, fuzzy strings for each project
* List all contributors on Pontoon
* List all contributors for a locale
* List all contributors for a project
* List all contributors for a localization (ProjectLocale)
* One [https://docs.google.com/spreadsheets/d/1-QWPJovsag4eYghkK2MMo30wa7QzOOMQkZdIjXnfZGQ/edit#gid=532595279 common use case] from the past.


==Ideas==
==Ideas==
A list of ideas to consider for future milestones.
A list of ideas to consider for future milestones.
* Translation Memory. Input parameters: source string, locale, minimum Levenshtein ratio, maximum number of results.
* Statistics over time. [https://public.etherpad-mozilla.org/p/pontoon.api.historic.source.string.data Early rumblings and a use case].


==Contact==
==Contact==

Revision as of 20:11, 5 July 2018

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 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 GraphQL (see discussion).

Overview

Milestone Theme Status
M1 Projects and Locales
M2 User Notifications
M3 Contributors
M4 Translation Memory
M5 Translations

File a new API bug. All open API bugs.

Dependency tree for all milestones.

Roadmap

Milestone 1

Complete, deployed on October 2, 2017.

In the first iteration we'd like to make some data stored in Pontoon openly available for third-parties. The goals is to create an API endpoint supporting queries related to aggregate statistics per locale and per project. The main driver is the use case from bug 1302053:

  • Stats for a locale: supported projects, status of each project.
  • Stats for a project: supported locales, incomplete locales, complete locales.
Full Query
ID Summary Status Resolution Priority Assigned to
1302053 Expose project status and information through API RESOLVED FIXED P3 Staś Małolepszy :stas

1 Total; 0 Open (0%); 1 Resolved (100%); 0 Verified (0%);


Milestone 2

Main theme: user notifications.

Use-cases:

Queries:

  • List unread notifications for a logged-in user.

Milestone 3

Main theme: contributors.

  • Query a single contributor (by email? unique key?)
    • List recent activity: date, project, action, number of affected strings
    • Aggregate counts of: translated, unreviewed, fuzzy strings across all projects
    • List of projects they contribute to
      • Aggregate counts of: translated, unreviewed, fuzzy strings for each project
  • List all contributors on Pontoon
  • List all contributors for a locale
  • List all contributors for a project
  • List all contributors for a localization (ProjectLocale)
  • One common use case from the past: Number of user groups per locale.

Milestone 4

Main theme: translation memory.

Use-cases:

  • Input parameters: source string, locale, minimum Levenshtein ratio, maximum number of results.

Queries:

Milestone 5

Main theme: read-only translations and pagination.

Use-cases:

  • Report translation status of a single page on mozilla.org
  • Read-only data required by Pontoon.Next's Translate app

Queries:

  • 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.
Full Query
ID Summary Status Resolution Priority Assigned to
1408625 [API] Query for a project of a particular locale RESOLVED MOVED P3
1409711 [API] Establish a good practice for paginating results. RESOLVED MOVED P3
1409723 [API] Expose Resources and TranslatedResources RESOLVED MOVED P3
1409724 [API] Expose Entities and Translations RESOLVED MOVED P3

4 Total; 0 Open (0%); 4 Resolved (100%); 0 Verified (0%);


Use-cases:

  • Editing translations via Pontoon.Next's Translate app

Queries:

  • Add a translation for an Entity
    • "approved" if the permissions are high enough
    • "unreviewed" otherwise
  • Approve/reject a suggestion.

Ideas

A list of ideas to consider for future milestones.

Contact

Role Name IRC
Feature Owner Staś Małolepszy stas
Product Owner Matjaž Horvat mathjazz
Reviewer Adrian Gaudebert adrian
Mailing list
tools-l10n
IRC
#pontoon