New in version 2.

Firefox OS Add-ons

The two main resources that are manipulated through this API are Add-ons and Add-ons Versions.

Add-on

Detail

GET /api/v2/extensions/extension/(int: id)|(string: slug)/

Note

Non public add-ons can only be viewed by their authors or extension reviewers (users with the ContentTools:AddonReview permission)

A single add-on.

Example Response:

{
  "id": 1,
  "author": "Mozilla",
  "description": null,
  "disabled": false,
  "device_types": ["firefoxos"],
  "icons": {
    "64": "https://example.com/uploads/extensions_icons/0/1-64.png?m=1a1337",
    "128": "https://example.com/uploads/extensions_icons/0/1-128.png?m=1a1337",
  }
  "latest_version": {
    "id": 1,
    "download_url": "https://example.com/downloads/extension/ce6b52d231154a27a1c54b2648c10379/1/extension-0.1.zip",
    "unsigned_download_url": "https://example.com/downloads/extension/unsigned/ce6b52d231154a27a1c54b2648c10379/1/extension-0.1.zip",
    "status": "public",
    "version": "0.1"
  },
  "last_updated": "2015-09-04T16:16:39",
  "latest_public_version": {
    "id": 1,
    "download_url": "https://example.com/downloads/extension/ce6b52d231154a27a1c54b2648c10379/1/extension-0.1.zip",
    "unsigned_download_url": "https://example.com/downloads/extension/unsigned/ce6b52d231154a27a1c54b2648c10379/1/extension-0.1.zip",
    "status": "public",
    "version": "0.1"
  },
  "mini_manifest_url": "https://example.com/extension/ce6b52d231154a27a1c54b2648c10379/manifest.json",
  "name": {
    "en-US": "My Lîttle Extension"
  },
  "slug": "my-lîttle-extension",
  "status": "public",
  "uuid": "be98056d6963461eb543bea2ddf3b9af"
}

Note

The name and description fields are user-translated fields and have a dynamic type depending on the query. See translations.

Response JSON Object:
 
  • id (int) – The add-on id.
  • author (string) – The add-on author, if specified in the manifest.
  • description (string|object|null) – The add-on description.
  • disabled (boolean) – Boolean indicating whether the developer has disabled their add-on or not.
  • device_types (string) – The devices the add-on is compatible with.
  • icons (object) – An object containing information about the app icons. The keys represent icon sizes, the values the corresponding URLs.
  • last_updated (string|null) – The latest date a version was published at for this add-on.
  • latest_version (object) – The latest add-on version available for this extension.
  • latest_public_version (object) – The latest public add-on version available for this extension.
  • mini_manifest_url (string) – The (absolute) URL to the mini-manifest for that add-on. That URL may be a 404 if the add-on is not public yet.
  • name (string|object) – The add-on name.
  • slug (string) – The add-on slug (unique string identifier that can be used instead of the id to retrieve an add-on).
  • status (string) – The add-on current status. Can be incomplete, pending, or public.
  • uuid (string) – The add-on uuid, used internally for URLs and for blocklisting.
Parameters:
  • id (int) – The add-on id
  • slug (string) – The add-on slug
Status Codes:

List

GET /api/v2/extensions/extension/

Note

Requires authentication.

A list of add-ons you have submitted.

Response JSON Object:
 
Status Codes:

Update

PATCH /api/v2/extensions/extension/(int: id)|(string: slug)/

Note

Requires authentication and ownership of the Add-on.

Update some properties of an add-on.

Parameters:
  • id (int) – The add-on id
  • slug (string) – The add-on slug.
Request JSON Object:
 
  • disabled (boolean) – Boolean indicating whether the developer has disabled their add-on or not.
  • slug (string) – The add-on slug (unique string identifier that can be used instead of the id to retrieve an add-on).
Status Codes:

Delete

DELETE /api/v2/extensions/extension/(int: id)|(string: slug)/

Note

Requires authentication. Only works on your own Add-ons.

Delete an add-on. This action is irreversible.

Blocking and Unblocking

POST /api/v2/extensions/extension/(int: id)|(string: slug)/block/

Note

Requires authentication and admin rights (Admin:%s permission).

Blocks an add-on.

When in this state the Extension should not be editable by the developers at all; not visible publicly; not searchable by users; but should be shown in the developer’s dashboard, as ‘Blocked’.

POST /api/v2/extensions/extension/(int: id)|(string: slug)/unblock/

Note

Requires authentication and admin rights (Admin:%s permission).

Unblocks an add-on. It should restore its status according to the rules below.

Add-on Versions

Detail

GET /api/v2/extensions/extension/(int: id)|(string: slug)/versions/(int: version_id)/

Note

Non public add-ons versions can only be viewed by their authors or extension reviewers (users with the ContentTools:AddonReview permission)

A single add-on version.

Example Response:

{
  "id": 1,
  "created": "2015-09-28T10:02:23",
  "download_url": "https://marketplace.firefox.com/downloads/extension/ce6b52d231154a27a1c54b2648c10379/42/extension-0.1.zip",
  "reviewer_mini_manifest_url": "https://marketplace.firefox.com/extension/reviewers/ce6b52d231154a27a1c54b2648c10379/42/manifest.json",
  "unsigned_download_url": "https://marketplace.firefox.com/downloads/extension/unsigned/ce6b52d231154a27a1c54b2648c10379/42/extension-0.1.zip",
  "status": "public",
  "version": "0.1"
}
Response JSON Object:
 
  • created (string) – The creation date for this version.
  • download_url (string) – The (absolute) URL to the latest signed package for that add-on. That URL may be a 404 if the add-on is not public.
  • reviewer_mini_manifest_url (string) – The (absolute) URL to the reviewer-specific mini_manifest URL (allowing reviewers to install a non-public version) for this version. Only users with ContentTools:AddonReview permission may access it.
  • status (string) – The add-on version current status. Can be pending, obsolete, public or rejected.
  • unsigned_download_url (string) – The (absolute) URL to the latest unsigned package for that add-on. Only the add-on author or users with ContentTools:AddonReview permission may access it.
  • version (string) – The version number for this add-on version.
Parameters:
  • id (int) – The add-on id
  • slug (string) – The add-on slug
  • version_id (int) – The add-on version id
Status Codes:

List

GET /api/v2/extensions/extension/(int: id)|(string: slug)/versions/

Note

Non public add-ons versions can only be viewed by their authors or extension reviewers (users with the ContentTools:AddonReview permission)

A list of versions attached to an add-on.

Response JSON Object:
 
Status Codes:

Delete

DELETE /api/v2/extensions/extension/(int: id)|(string: slug)/versions/(int: version_id)/

Note

Requires authentication. Only works on versions attached to your your own add-ons.

Delete an add-on version. This action is irreversible.

Add-on Statuses

  • There are 5 possible values for the status property of an add-on: public, pending, rejected, incomplete or blocked.
  • There are 4 possible values for the status property on an add-on version: public, obsolete, pending, rejected.

Add-on status directly depend on the status of its versions:

  • Add-ons that are blocked never change.
  • Add-ons with at least one public version are public.
  • Add-ons with no public version and at least one pending version are pending.
  • Add-ons with no public or pending version, and at least one rejected version are rejected.
  • Add-ons with no public, pending or rejected version are incomplete.

Blocked Add-ons are hidden from the public. Reviewers and developers may still access them, but can not make any modifications to them, only admins can.

In addition, Add-ons also have a disabled property that can be set to true by the developer to disable the add-on. Disabled add-ons are hidden from the public and do not appear in the reviewers queue, but retain their original status so they can be re-enabled by just switching disabled back to false.

Add-on and Add-on Version Submission

Submitting an Add-on or an Add-on Version is done in two steps. The client must be logged in for all these steps and the user submitting the add-on or the add-on version must have accepted the terms of use.

  1. Validate your package. The validation will return a validation id.
  2. Post your add-on or your add-on version using the validation id obtained during the previous step. This will create an add-on or an add-on version and populate the data with the contents of the manifest.

Validation

Note

The validation API does not require you to be authenticated, however you cannot create add-ons from those unauthenticated validations. To validate and then submit an add-on you must be authenticated with the same account for both steps.

POST /api/v2/extensions/validation/

Validate your add-on. The zip file containting your add-on should be sent as the POST body directly. A validation result is returned.

Request Headers:
 
Status Codes:
GET /api/v2/extensions/validation/(string: id)/

Response

A single validation result. You should poll this API until it returns a result with the processed property set to true before moving on with the submission process.

Response JSON Object:
 
  • id (string) – the id of the validation.
  • processed (boolean) – if the validation has been processed.
  • valid (boolean) – if the validation passed.
  • validation (string) – the resulting validation messages if it failed.
Status Codes:

Add-on Creation

POST /api/v2/extensions/extension/

Note

Requires authentication and a successful validation result.

Create an add-on. Note that an add-on version is created automatically for you. An add-on is returned. Icons are processed asynchronously; as a result, the json data returned might not contain the final URL for the icons at this time.

Request JSON Object:
 
  • validation_id (string) – the id of the validation result for your add-on.
  • message (optional) (string) – Notes for reviewers about the submission.
Status Codes:

Add-on Version Creation

POST /api/v2/extensions/extension/(int: id)|(string: slug)/versions/

Note

Requires authentication, ownership of the add-on (which must not be in disabled state) and a successful validation result.

Create an add-on version.

Request JSON Object:
 
  • validation_id (string) – the id of the validation result for your add-on version.
  • message (optional) (string) – Notes for reviewers about the submission.
Parameters:
  • id (int) – The add-on id
  • slug (string) – The add-on slug
Status Codes:

Add-ons Review Queue

Any add-on that is not disabled by its developer, and has at least one pending version is shown in the review queue, even if the add-on itself is currently public.

Add-ons are not directly published or rejected, Add-ons Versions are. Usually the add-on latest_version is the version that needs to be reviewed.

Once a version is published, rejected or deleted, the parent Add-on status can change as described above.

List

GET /api/v2/extensions/queue/

Note

Requires authentication and the ContentTools:AddonReview permission.

The list of add-ons in the review queue.

Response JSON Object:
 
Status Codes:

Publishing

POST /api/v2/extensions/extension/(int: id)|(string: slug)/versions/(int: id)/publish/

Publish an add-on version. Its file will be signed, its status updated to public.

Parameters:
  • id (int) – The add-on id
  • slug (string) – The add-on slug
  • version_id (int) – The add-on version id
  • message (optional) (string) – Reviewer notes about publishing
Status Codes:

Rejecting

POST /api/v2/extensions/extension/(int: id)|(string: slug)/versions/(int: id)/reject/

Reject an add-on version. Its status will be updated to rejected. The developer will have to submit it a new version with the issues fixed.

Parameters:
  • id (int) – The add-on id
  • slug (string) – The add-on slug
  • version_id (int) – The add-on version id
  • message (optional) (string) – Reviewer notes about rejecting
Status Codes: