{"id":7592,"date":"2015-11-20T13:22:23","date_gmt":"2015-11-20T21:22:23","guid":{"rendered":"http:\/\/blog.mozilla.org\/addons\/?p=7592"},"modified":"2017-04-04T07:34:22","modified_gmt":"2017-04-04T14:34:22","slug":"signing-api-now-available","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/","title":{"rendered":"Signing API now available"},"content":{"rendered":"<p>Over the years, <a href=\"https:\/\/addons.mozilla.org\" target=\"_blank\">addons.mozilla.org <\/a>has had <a href=\"https:\/\/developer.mozilla.org\/Add-ons\/AMO\/Add-ons_manager_API\" target=\"_blank\">many APIs<\/a>. These are used by Firefox and other clients to provide add-on listings, blocklists, and other features. But there hasn&#8217;t really been an API that developers can interact with. As part of ongoing improvements to the site, we&#8217;ve started focusing on producing APIs for add-on developers as well.<\/p>\n<p>Our first one aims to make <a href=\"https:\/\/wiki.mozilla.org\/Add-ons\/Extension_Signing\" target=\"_blank\">add-on signing<\/a> a little easier for developers. This API enables you to upload an XPI and get back the signed add-on if it passes all the validation checks.<\/p>\n<p>To use this API, log in to <a href=\"https:\/\/addons.mozilla.org\" target=\"_blank\">addons.mozilla.org<\/a> and go to <a href=\"https:\/\/addons.mozilla.org\/developers\/addon\/api\/key\/\" target=\"_blank\">Tools &gt; Manage API Keys<\/a>. Then agree to the terms and fetch an API key and secret to use in subsequent API calls.<\/p>\n<p><a href=\"https:\/\/blog.mozilla.org\/addons\/files\/2015\/11\/Untitled3.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-7597\" src=\"https:\/\/blog.mozilla.org\/addons\/files\/2015\/11\/Untitled3.png\" alt=\"Untitled\" width=\"1042\" height=\"501\" srcset=\"https:\/\/blog.mozilla.org\/addons\/files\/2015\/11\/Untitled3.png 1042w, https:\/\/blog.mozilla.org\/addons\/files\/2015\/11\/Untitled3-252x121.png 252w, https:\/\/blog.mozilla.org\/addons\/files\/2015\/11\/Untitled3-600x288.png 600w\" sizes=\"(max-width: 1042px) 100vw, 1042px\" \/><\/a><\/p>\n<p>Once you\u2019ve done that, <a href=\"https:\/\/addons-server.readthedocs.org\/en\/latest\/topics\/api\/auth.html\" target=\"_blank\">generate authorization tokens<\/a> and use the <a href=\"https:\/\/addons-server.readthedocs.io\/en\/latest\/topics\/api\/signing.html\" target=\"_blank\">documented API<\/a> to sign your add-on.<\/p>\n<p>The documented examples use <a href=\"http:\/\/curl.haxx.se\/\">curl<\/a> to interact with the API. For example:<\/p>\n<p><code>curl https:\/\/addons.mozilla.org\/api\/v3\/addons\/my-addon\/versions\/1.0\/<br \/>\n-XPUT --form 'upload=@build\/my-addon.xpi' -H 'Authorization: JWT your-jwt-token'<\/code><\/p>\n<p>This is just the first of the APIs that we hope to add to the site and a path that we hope will lead to increased functionality throughout the add-ons ecosystem. This feature is under development, so we are keen to hear <a href=\"https:\/\/github.com\/mozilla\/addons-server\/issues\" target=\"_blank\">feedback or any issues<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Over the years, addons.mozilla.org has had many APIs. These are used by Firefox and other clients to provide add-on listings, blocklists, and other features. But there hasn&#8217;t really been an &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/\">Read more<\/a><\/p>\n","protected":false},"author":271,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[44],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Signing API now available - Mozilla Add-ons Community Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andy McKay\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/\",\"name\":\"Signing API now available - Mozilla Add-ons Community Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.mozilla.org\/addons\/files\/2015\/11\/Untitled3.png\",\"datePublished\":\"2015-11-20T21:22:23+00:00\",\"dateModified\":\"2017-04-04T14:34:22+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/7e1881db0e8a23a4a06695f8a0efd6b8\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/#primaryimage\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/files\/2015\/11\/Untitled3.png\",\"contentUrl\":\"https:\/\/blog.mozilla.org\/addons\/files\/2015\/11\/Untitled3.png\",\"width\":1042,\"height\":501},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/addons\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Signing API now available\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#website\",\"url\":\"https:\/\/blog.mozilla.org\/addons\/\",\"name\":\"Mozilla Add-ons Community Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.mozilla.org\/addons\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/7e1881db0e8a23a4a06695f8a0efd6b8\",\"name\":\"Andy McKay\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ad304e7a7d4f6fba05a81b10810fe6fd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ad304e7a7d4f6fba05a81b10810fe6fd?s=96&d=mm&r=g\",\"caption\":\"Andy McKay\"},\"description\":\"Andy is an Engineering Manager at Mozilla. As a Canadian he tweets and blogs about curling, skiing, politics, maple syrup, bears and all things from the great white north.\",\"sameAs\":[\"http:\/\/mckay.pub\",\"https:\/\/x.com\/andymckay\"],\"url\":\"https:\/\/blog.mozilla.org\/addons\/author\/amckaymozilla-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Signing API now available - Mozilla Add-ons Community Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/","twitter_misc":{"Written by":"Andy McKay","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/","url":"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/","name":"Signing API now available - Mozilla Add-ons Community Blog","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/addons\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/#primaryimage"},"image":{"@id":"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.mozilla.org\/addons\/files\/2015\/11\/Untitled3.png","datePublished":"2015-11-20T21:22:23+00:00","dateModified":"2017-04-04T14:34:22+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/7e1881db0e8a23a4a06695f8a0efd6b8"},"breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/#primaryimage","url":"https:\/\/blog.mozilla.org\/addons\/files\/2015\/11\/Untitled3.png","contentUrl":"https:\/\/blog.mozilla.org\/addons\/files\/2015\/11\/Untitled3.png","width":1042,"height":501},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/addons\/2015\/11\/20\/signing-api-now-available\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/addons\/"},{"@type":"ListItem","position":2,"name":"Signing API now available"}]},{"@type":"WebSite","@id":"https:\/\/blog.mozilla.org\/addons\/#website","url":"https:\/\/blog.mozilla.org\/addons\/","name":"Mozilla Add-ons Community Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.mozilla.org\/addons\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/7e1881db0e8a23a4a06695f8a0efd6b8","name":"Andy McKay","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/addons\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ad304e7a7d4f6fba05a81b10810fe6fd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ad304e7a7d4f6fba05a81b10810fe6fd?s=96&d=mm&r=g","caption":"Andy McKay"},"description":"Andy is an Engineering Manager at Mozilla. As a Canadian he tweets and blogs about curling, skiing, politics, maple syrup, bears and all things from the great white north.","sameAs":["http:\/\/mckay.pub","https:\/\/x.com\/andymckay"],"url":"https:\/\/blog.mozilla.org\/addons\/author\/amckaymozilla-com\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/7592"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/users\/271"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/comments?post=7592"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/posts\/7592\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/media?parent=7592"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/categories?post=7592"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/addons\/wp-json\/wp\/v2\/tags?post=7592"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}