SlideShare a Scribd company logo
1 of 38
Download to read offline
Tech Talk Live: Alfresco Public API
Update
April 3, 2013

Peter Monks, pmonks@alfresco.com
Greg Melahn, greg.melahn@alfresco.com
Agenda
•    Overview
•    What’s New
•    Demo of the API in Action
•    Roadmap
•    Questions and Answers
Overview
Folder, file, content   Networks, sites,
and metadata            people, comments,
manipulation and        tags, activities, …
search
Overview
Overview
 •  API URLs are structured:
     –  Tenant
     –  API scope
     –  API name
     –  API version
     –  Entity type*

https://api.alfresco.com/acme.com/public/alfresco/ versions/1/sites



     * The notion of entity types doesn’t apply to CMIS.
Overview
•  The entity type URL represents a
   collection of all instances of that entity
  –  The collection may or may not be retrievable
     via a GET
•  Each instance of an entity can be
   accessed via the collection URL with an Id
   appended
 .../acme.com/public/alfresco/versions/1/sites/mullet-gallery
Overview
  •  Entity types may also be nested
.../acme.com/public/alfresco/versions/1/sites/mullet-gallery/members




  •  The same rule about retrieving instances
     by Id applies
   .../acme.com/public/alfresco/versions/1/sites/mullet-gallery/
                    members/pmonks@alfresco.com
Overview
•  Creating a new entity instance:
  –  POST to the collection URL
•  Updating an entity instance:
  –  PUT to the instance URL
•  Deleting an entity instance:
  –  DELETE against the instance URL


•  These rules apply regardless of whether
   it’s a top-level or nested collection
Overview
As of today:
•  Only the “public” API scope is exposed
•  API names are:
  –  alfresco
  –  CMIS
•  Alfresco top-level entity types are:
  –  sites
  –  people
  –  tags
  –  nodes
Overview
•  Over time the API will grow simply by
   adding new entity types
•  All new entity types will follow the same
   rules
•  The APIs (tenants, API scopes, API
   names, API versions, entity types, etc.)
   are fully discoverable
  –  No more relying on Alfresco version numbers!
What’s New
•  oAuth Key Improvements
•  Favorites API
•  Site Membership Request API
oAuth Key Improvements
•  Refresh keys last longer – now 28 Days
•  Still secure, but more convenient!
•  Users returning from leave won’t need to
   re-authenticate
{
    "access_token":"ad299019-c308-4588-84e6-fc76ee73fb35",
    "token_type":"Bearer",
    "expires_in":3600,
    "refresh_token":"                                    ",
    "scope":"public_api"
}
Favorites API
•  Favorites (    ) or Favourites (   )?
•  A new Entity Type
•  A new Collection under Person
  –  people/<personId>/favorites!
•  Sites, Folders and Files can be made
   Favorites
•  Introduction of the WHERE parameter for
   filtering of the favorites result set
Entity Type
Property     Type        JSON Type   Description

targetGuid   id          string      The guid of the
                                     entity that is a
                                     favorite


createdAt    date time   string      The date and
                                     time the object
                                     was made a
                                     favorite

target       object      object      The object that
                                     is a favorite.
                                     This can be
                                     site, a folder or
                                     a file
API Patterns
•  Getting favorites
   –  HTTP GET people/<personId>/favorites!
•  Getting a favorite
   –  HTTP GET people/<personId>/favorites/
      <targetGuid>!
•  Adding a favorite
   –  HTTP POST people/<personId>/favorites!
•  Removing a favorite
   •  HTTP DELETE people/<personId>/favorites/
      <targetGuid>!

 No PUT needed because the Favorite entity has no properties that can be modified by the
 client.
Example – Getting Favorites
Request

    HTTP GET people/fred.bloggs@example.com/favorites




Paging parameters (skipCount and maxItems) can be used to control response size.
Example – Getting Favorites
       Response
          HTTP 200 OK !
               {  

     !     !    !"list" : {!
    !      !    !  "pagination" : {!
      
     !     !    !     !"count" : 3,!
      
     !     !    !     !"hasMoreItems" : false,!
     !     !    !     !"skipCount" : 0,!
      
     !     !    !     !"maxItems" : 100!
                     },!
       !   !    !    "entries" : [!
       !   !   !    {!
                      "entry" : {

                        "targetGuid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",

                        "createdAt" : "2012-07-20T21:46:09.659+0000",

                       "target": {

                          "site" :   {!
                             "id" : "foo",!
                             "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",!
       !   !   !     !       "title" : "The Foo Site",!
                               "visibility" : "PRIVATE",!
       !   !   !      !       "description" : "The Foo Site",!
       !   !   !      !     ! "role" : "SiteManager”!
       !   !   !           }!
       !   !   !        }!
       !   !   !   }

       !   !    }, … more entries (one per favorite)
Example – Getting a Favorite
Request
   HTTP GET people/fred.bloggs@example.com/favorites/
8ac18731-601b-4bb4-be1a-cd5d252cce3f!
!   !   !
Example – Getting a Favorite
       Response
          HTTP 200 OK!
      !   !   !{!
                  "entry" : {

                      "targetGuid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",

                      "createdAt" : "2012-07-20T21:46:09.659+0000",

                      "target": {

                         "site" :   {!
                           "id" : "foo",!
                           "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",!
          !   !     !      "title" : "The Foo Site",!
                           "visibility" : "PRIVATE",!
      !   !   !     !      "description" : "The Foo Site",!
      !   !   !     !     !"role" : "SiteManager”!
      !   !   !     !     }!
      !   !   !        }!
      !   !   !    }

      !   !   }


  Notice we return the role as a convenience to reduce the need for more requests later
Example – Adding a Favorite
Request
   HTTP POST people/fred.bloggs@example.com/favorites!
  {!
       "target": {

             "site" : { !
                   "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f"!
                 } !
          }

   }
Example – Adding a Favorite
       Response
          HTTP 201 Created !
      ! ! !{!
                  "entry" : {

                       "targetGuid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",

                       "createdAt" : "2012-07-20T21:46:09.659+0000",

                       "target": {

                         "site" :   {!
                           "id" : "foo",!
                           "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",!
          !   !       !    "title" : "The Foo Site",!
                           "visibility" : "PRIVATE",!
      !   !   !       !    "description" : "The Foo Site",!
      !   !   !       !    "role" : "SiteManager”!
      !   !   !       ! }!
      !   !           }!
      !   !        }

      !   !   }
Example – Removing a Favorite
Request
   HTTP DELETE people/fred.bloggs@example.com/
favorites/8ac18731-601b-4bb4-be1a-cd5d252cce3f!
!
Response
   HTTP 204 No Content!

   !
Introducing the where parameter
 •  Used to limit the response to only those
    favorites meeting certain criteria
 •  Uses an SQL like predicate, EXISTS
 •  JSON pointer syntax used as values
   –  target/file
   –  target/folder
   –  target/site
 •  e.g. where=(EXISTS(target/file)
    OR EXISTS(target/folder))

    !
Site Membership Request API
•  A new Entity Type
•  A new Collection under Person
    –  people/<personId>/site-membership-
       requests!
•  Requests to join moderated sites go into the
   approval workflow just as in the Share app
•  Requests to join public sites are implicitly granted
•  Requests to join private sites are just ignored
    –  and a 404 hides the existence of the private site
•  You can only request to join a site in your own
   network
Entity Type
Property     Type        JSON     Description
                         Type
id           id          string   The id of the site

site         object      object   The site for which this is a
                                  request
message      string      string   A message from the requester
                                  explaining why membership in
                                  the site is being requested
                                  (optional)
createdAt    date time   string   The date and time the site
                                  membership request was
                                  made
modifiedAt   date time   string   The date and time the site
                                  membership request was
                                  changed
API Patterns
•  Getting a list of site membership requests
  –  HTTP GET people/<personId>/site-membership-
     requests!
•  Requesting to join a site
  –  HTTP POST people/<personId>/site-membership-
     requests!
•  Changing a request
  –  HTTP PUT people/<personId>/site-membership-
     requests/<siteId>!
•  Withdrawing a request
  •  HTTP DELETE people/<personId>/site-membership-
     requests/<siteId>
Example – Getting a List of Site
Membership Requests
 Request
    HTTP GET people/fred.bloggs@example.com/
 site-membership-requests!
Example – Getting a List of Site
Membership Requests
      Response
         HTTP 200 OK !
                 {  

     !       !    !"list" : {!
    !        !    !  "pagination" : {!
      
     !       !    !     !"count" : 3,!
      
     !       !    !     !"hasMoreItems" : false,!
     !       !    !     !"skipCount" : 0,!
      
     !       !    !     !"maxItems" : 100!
             !    !   },!
                      "entries" : [!
                           {                                            

      !      !   !          "entry": {                                 

                                 "id" : "the-secret-site",

                                 "createdAt" : "2012-07-20T21:46:09.659+0000",

                                 "modifiedAt" : "2012-07-20T21:46:09.659+0000",

                                 "message" : "I am working on the secret project too!", !
                                 "site" : {!
                                     "id" : "the-secret-site",!
                                     "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",!
                                     "title" : "The Company’s Secret Site",!
                                     "visibility" : "MODERATED",!
                                     "description" : "The Company’s Secret Site"               !
                                 }!
                             }!
                         }, … more entries (one per request)
Example – Requesting to Join a
Site
 Request
    HTTP POST people/fred.bloggs@example.com/
 site-membership-requests!
 !
   {                                 

      "id" : "the-secret-site",

      "message" : "I am working on the secret project too!"

   }

   !
Example – Requesting to Join a
Site
    Response
       HTTP 201 Created !
                 {                                            

         !   !      !   "entry": {                                 

                                "id" : "the-secret-site",

                                "createdAt" : "2012-07-20T21:46:09.659+0000",

                                "modifiedAt" : "2012-07-20T21:46:09.659+0000",

                                "message" : "I am working on the secret project”, !
                                "site" : {!
                                    "id" : "the-secret-site",!
                                    "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",!
                                    "title" : "The Company’s Secret Site",!
                                    "visibility" : "MODERATED",!
                                    "description" : "The Company’s Secret Site"             
                                }!
                         }

                 }

!
Example – Changing a Request
to Join a Site
 Request
    HTTP PUT people/fred.bloggs@example.com/site-
 membership-requests/the-secret-site!
 !
    {                                 

       "id" : "the-secret-site",

       "message" : "I really need access!"

    }

    !
Example – Changing a Request
to Join a Site
    Response
       HTTP 200 OK!
                 {                                                   

         !   !            !   "entry": {                                 

                                      "id" : "the-secret-site",

                                      "createdAt" : "2012-07-20T21:46:09.659+0000",

                                      "modifiedAt" : "2013-04-03T16:41:11.659+0000",

                                      "message" : “I really need access!", !
                                      "site" : {!
                                          "id" : "the-secret-site",!
                                          "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",!
                                          "title" : "The Company’s Secret Site",!
                                          "visibility" : "MODERATED",!
                                          "description" : "The Company’s Secret Site"             
                                      }!
                               }

                     }

!
Example – Withdrawing a
Request to Join a Site
 Request
    HTTP DELETE people/fred.bloggs@example.com/
 site-membership-requests/the-secret-site!
 !
 Request
    HTTP 204 No Content!
The API in Action
•  Demo
Roadmap
•  Merge APIs into Alfresco Enterprise v4.2
•  New API types:
  –  User Provisioning (SCIM)
  –  Workflow (Activiti)
•  New API versions:
  –  CMIS v1.1
  –  Alfresco v2 (?)
•  New Alfresco API entity types:
  –  renditions
  –  bulk-imports (?)
Roadmap
•  Binary property support
•  Projection & transclusion improvements
   (“SELECT”)
•  Restriction improvements (“WHERE”)
•  Discoverability improvements
  –  In support of “executable documentation”
Try It Yourself
•  Register for a Developer Key
  –  http://www.alfresco.com/develop
•  Read the Documentation
  –  https://www.alfresco.com/cmis/browser?
     id=workspace%3A//SpacesStore/
     b09d212a-00c6-4ec3-9764-0eca67bb8529
Questions?

More Related Content

What's hot

Frontend for developers
Frontend for developersFrontend for developers
Frontend for developersHernan Mammana
 
Finding Restfulness - Madrid.rb April 2014
Finding Restfulness - Madrid.rb April 2014Finding Restfulness - Madrid.rb April 2014
Finding Restfulness - Madrid.rb April 2014samlown
 
Even faster web sites presentation 3
Even faster web sites presentation 3Even faster web sites presentation 3
Even faster web sites presentation 3Felipe Lavín
 
Choose Your Own Adventure: SEO For Web Developers | Unified Diff
Choose Your Own Adventure: SEO For Web Developers | Unified DiffChoose Your Own Adventure: SEO For Web Developers | Unified Diff
Choose Your Own Adventure: SEO For Web Developers | Unified DiffSteve Morgan
 
Even faster web sites
Even faster web sitesEven faster web sites
Even faster web sitesFelipe Lavín
 
WAI-ARIA is More Than Accessibility
WAI-ARIA is More Than AccessibilityWAI-ARIA is More Than Accessibility
WAI-ARIA is More Than Accessibility偉格 高
 
Wordcamp Phoenix 2012 - Custom Post Types: Now What? By Cody Helgeson
Wordcamp Phoenix 2012 - Custom Post Types: Now What? By Cody HelgesonWordcamp Phoenix 2012 - Custom Post Types: Now What? By Cody Helgeson
Wordcamp Phoenix 2012 - Custom Post Types: Now What? By Cody HelgesonCody Helgeson
 
2015 rubyconf - 百大媒體網站從 Wordpress 到 Rails 的大小事
2015 rubyconf - 百大媒體網站從 Wordpress 到 Rails 的大小事2015 rubyconf - 百大媒體網站從 Wordpress 到 Rails 的大小事
2015 rubyconf - 百大媒體網站從 Wordpress 到 Rails 的大小事Ronald Hsu
 

What's hot (15)

Frontend for developers
Frontend for developersFrontend for developers
Frontend for developers
 
Finding Restfulness - Madrid.rb April 2014
Finding Restfulness - Madrid.rb April 2014Finding Restfulness - Madrid.rb April 2014
Finding Restfulness - Madrid.rb April 2014
 
Seo tools
Seo toolsSeo tools
Seo tools
 
Even faster web sites presentation 3
Even faster web sites presentation 3Even faster web sites presentation 3
Even faster web sites presentation 3
 
Advanced Json
Advanced JsonAdvanced Json
Advanced Json
 
HTML5 & CSS3 Flag
HTML5 & CSS3 FlagHTML5 & CSS3 Flag
HTML5 & CSS3 Flag
 
Choose Your Own Adventure: SEO For Web Developers | Unified Diff
Choose Your Own Adventure: SEO For Web Developers | Unified DiffChoose Your Own Adventure: SEO For Web Developers | Unified Diff
Choose Your Own Adventure: SEO For Web Developers | Unified Diff
 
Even faster web sites
Even faster web sitesEven faster web sites
Even faster web sites
 
WAI-ARIA is More Than Accessibility
WAI-ARIA is More Than AccessibilityWAI-ARIA is More Than Accessibility
WAI-ARIA is More Than Accessibility
 
IBM Connection - customize it, #dd13
IBM Connection - customize it, #dd13IBM Connection - customize it, #dd13
IBM Connection - customize it, #dd13
 
Wordcamp Phoenix 2012 - Custom Post Types: Now What? By Cody Helgeson
Wordcamp Phoenix 2012 - Custom Post Types: Now What? By Cody HelgesonWordcamp Phoenix 2012 - Custom Post Types: Now What? By Cody Helgeson
Wordcamp Phoenix 2012 - Custom Post Types: Now What? By Cody Helgeson
 
Seo cheat sheet
Seo cheat sheetSeo cheat sheet
Seo cheat sheet
 
Websites On Speed
Websites On SpeedWebsites On Speed
Websites On Speed
 
2015 rubyconf - 百大媒體網站從 Wordpress 到 Rails 的大小事
2015 rubyconf - 百大媒體網站從 Wordpress 到 Rails 的大小事2015 rubyconf - 百大媒體網站從 Wordpress 到 Rails 的大小事
2015 rubyconf - 百大媒體網站從 Wordpress 到 Rails 的大小事
 
Seo Cheat Sheet
Seo Cheat SheetSeo Cheat Sheet
Seo Cheat Sheet
 

Viewers also liked

Installing and Getting Started with Alfresco
Installing and Getting Started with AlfrescoInstalling and Getting Started with Alfresco
Installing and Getting Started with AlfrescoWildan Maulana
 
Intro to Alfresco for Developers
Intro to Alfresco for DevelopersIntro to Alfresco for Developers
Intro to Alfresco for DevelopersJeff Potts
 
Alfresco In An Hour - Document Management, Web Content Management, and Collab...
Alfresco In An Hour - Document Management, Web Content Management, and Collab...Alfresco In An Hour - Document Management, Web Content Management, and Collab...
Alfresco In An Hour - Document Management, Web Content Management, and Collab...Alfresco Software
 
Alfresco Share Customization Made Easy With Side Labs
Alfresco Share Customization Made Easy With Side LabsAlfresco Share Customization Made Easy With Side Labs
Alfresco Share Customization Made Easy With Side LabsAlfresco Software
 
Intro to the Alfresco Public API
Intro to the Alfresco Public APIIntro to the Alfresco Public API
Intro to the Alfresco Public APIJeff Potts
 
Tech talk live on new alfresco api
Tech talk live on new alfresco apiTech talk live on new alfresco api
Tech talk live on new alfresco apiAlfresco Software
 
2140 api developer-student-guide
2140 api developer-student-guide2140 api developer-student-guide
2140 api developer-student-guideDarko Gicevski
 
MyIBBT - Project Collaboration with Alfresco Share
MyIBBT - Project Collaboration with Alfresco ShareMyIBBT - Project Collaboration with Alfresco Share
MyIBBT - Project Collaboration with Alfresco ShareAmplexor
 
Alfresco 3.0 (SPK) UI wires (core)
Alfresco 3.0 (SPK) UI wires (core)Alfresco 3.0 (SPK) UI wires (core)
Alfresco 3.0 (SPK) UI wires (core)Linton Baddeley
 
Alfresco Day Vienna 2016: Alfrescos neue Rest API
Alfresco Day Vienna 2016: Alfrescos neue Rest APIAlfresco Day Vienna 2016: Alfrescos neue Rest API
Alfresco Day Vienna 2016: Alfrescos neue Rest APIAlfresco Software
 
Getting_Started_with_Alfresco_Share_Collaboration_for_Enterprise.pdf
Getting_Started_with_Alfresco_Share_Collaboration_for_Enterprise.pdfGetting_Started_with_Alfresco_Share_Collaboration_for_Enterprise.pdf
Getting_Started_with_Alfresco_Share_Collaboration_for_Enterprise.pdfInblay Technology
 
Getting Started with CMIS
Getting Started with CMISGetting Started with CMIS
Getting Started with CMISJeff Potts
 
Intro To Alfresco Part 1
Intro To Alfresco Part 1Intro To Alfresco Part 1
Intro To Alfresco Part 1Jeff Potts
 
Alfresco in few points - Search Tutorial
Alfresco in few points - Search TutorialAlfresco in few points - Search Tutorial
Alfresco in few points - Search TutorialPASCAL Jean Marie
 
Alfresco 5.2 REST API
Alfresco 5.2 REST APIAlfresco 5.2 REST API
Alfresco 5.2 REST APIJ V
 
Enterprise Collaboration with Alfresco and Confluence Wiki Integration
Enterprise Collaboration with Alfresco and Confluence Wiki IntegrationEnterprise Collaboration with Alfresco and Confluence Wiki Integration
Enterprise Collaboration with Alfresco and Confluence Wiki Integrationrivetlogic
 
Hospital Management System
Hospital Management SystemHospital Management System
Hospital Management SystemPranil Dukare
 

Viewers also liked (17)

Installing and Getting Started with Alfresco
Installing and Getting Started with AlfrescoInstalling and Getting Started with Alfresco
Installing and Getting Started with Alfresco
 
Intro to Alfresco for Developers
Intro to Alfresco for DevelopersIntro to Alfresco for Developers
Intro to Alfresco for Developers
 
Alfresco In An Hour - Document Management, Web Content Management, and Collab...
Alfresco In An Hour - Document Management, Web Content Management, and Collab...Alfresco In An Hour - Document Management, Web Content Management, and Collab...
Alfresco In An Hour - Document Management, Web Content Management, and Collab...
 
Alfresco Share Customization Made Easy With Side Labs
Alfresco Share Customization Made Easy With Side LabsAlfresco Share Customization Made Easy With Side Labs
Alfresco Share Customization Made Easy With Side Labs
 
Intro to the Alfresco Public API
Intro to the Alfresco Public APIIntro to the Alfresco Public API
Intro to the Alfresco Public API
 
Tech talk live on new alfresco api
Tech talk live on new alfresco apiTech talk live on new alfresco api
Tech talk live on new alfresco api
 
2140 api developer-student-guide
2140 api developer-student-guide2140 api developer-student-guide
2140 api developer-student-guide
 
MyIBBT - Project Collaboration with Alfresco Share
MyIBBT - Project Collaboration with Alfresco ShareMyIBBT - Project Collaboration with Alfresco Share
MyIBBT - Project Collaboration with Alfresco Share
 
Alfresco 3.0 (SPK) UI wires (core)
Alfresco 3.0 (SPK) UI wires (core)Alfresco 3.0 (SPK) UI wires (core)
Alfresco 3.0 (SPK) UI wires (core)
 
Alfresco Day Vienna 2016: Alfrescos neue Rest API
Alfresco Day Vienna 2016: Alfrescos neue Rest APIAlfresco Day Vienna 2016: Alfrescos neue Rest API
Alfresco Day Vienna 2016: Alfrescos neue Rest API
 
Getting_Started_with_Alfresco_Share_Collaboration_for_Enterprise.pdf
Getting_Started_with_Alfresco_Share_Collaboration_for_Enterprise.pdfGetting_Started_with_Alfresco_Share_Collaboration_for_Enterprise.pdf
Getting_Started_with_Alfresco_Share_Collaboration_for_Enterprise.pdf
 
Getting Started with CMIS
Getting Started with CMISGetting Started with CMIS
Getting Started with CMIS
 
Intro To Alfresco Part 1
Intro To Alfresco Part 1Intro To Alfresco Part 1
Intro To Alfresco Part 1
 
Alfresco in few points - Search Tutorial
Alfresco in few points - Search TutorialAlfresco in few points - Search Tutorial
Alfresco in few points - Search Tutorial
 
Alfresco 5.2 REST API
Alfresco 5.2 REST APIAlfresco 5.2 REST API
Alfresco 5.2 REST API
 
Enterprise Collaboration with Alfresco and Confluence Wiki Integration
Enterprise Collaboration with Alfresco and Confluence Wiki IntegrationEnterprise Collaboration with Alfresco and Confluence Wiki Integration
Enterprise Collaboration with Alfresco and Confluence Wiki Integration
 
Hospital Management System
Hospital Management SystemHospital Management System
Hospital Management System
 

Similar to Alfresco Public API Update: What's New in Favorites and Site Membership Requests

The never-ending REST API design debate
The never-ending REST API design debateThe never-ending REST API design debate
The never-ending REST API design debateRestlet
 
The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016Restlet
 
APIs REST Usables con Hypermedia por Javier Ramirez, para codemotion
APIs REST Usables con Hypermedia por Javier Ramirez, para codemotionAPIs REST Usables con Hypermedia por Javier Ramirez, para codemotion
APIs REST Usables con Hypermedia por Javier Ramirez, para codemotionjavier ramirez
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPressTaylor Lovett
 
Crafting Evolvable Api Responses
Crafting Evolvable Api ResponsesCrafting Evolvable Api Responses
Crafting Evolvable Api Responsesdarrelmiller71
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsStormpath
 
Austin Day of Rest - Introduction
Austin Day of Rest - IntroductionAustin Day of Rest - Introduction
Austin Day of Rest - IntroductionHandsOnWP.com
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformAntonio Peric-Mazar
 
The JSON REST API for WordPress
The JSON REST API for WordPressThe JSON REST API for WordPress
The JSON REST API for WordPressTaylor Lovett
 
Beautiful REST+JSON APIs with Ion
Beautiful REST+JSON APIs with IonBeautiful REST+JSON APIs with Ion
Beautiful REST+JSON APIs with IonStormpath
 
Designing a beautiful REST json api
Designing a beautiful REST json apiDesigning a beautiful REST json api
Designing a beautiful REST json api0x07de
 
Beautiful REST and JSON APIs - Les Hazlewood
Beautiful REST and JSON APIs - Les HazlewoodBeautiful REST and JSON APIs - Les Hazlewood
Beautiful REST and JSON APIs - Les Hazlewoodjaxconf
 
Elasticsearch in hatena bookmark
Elasticsearch in hatena bookmarkElasticsearch in hatena bookmark
Elasticsearch in hatena bookmarkShunsuke Kozawa
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfAlfresco Software
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfAlfresco Software
 
apidays LIVE LONDON - Data Retrieval via APIs - Showdown of GraphQL vs ODATA ...
apidays LIVE LONDON - Data Retrieval via APIs - Showdown of GraphQL vs ODATA ...apidays LIVE LONDON - Data Retrieval via APIs - Showdown of GraphQL vs ODATA ...
apidays LIVE LONDON - Data Retrieval via APIs - Showdown of GraphQL vs ODATA ...apidays
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPressTaylor Lovett
 
Web Scraping In Ruby Utosc 2009.Key
Web Scraping In Ruby Utosc 2009.KeyWeb Scraping In Ruby Utosc 2009.Key
Web Scraping In Ruby Utosc 2009.Keyjtzemp
 

Similar to Alfresco Public API Update: What's New in Favorites and Site Membership Requests (20)

The never-ending REST API design debate
The never-ending REST API design debateThe never-ending REST API design debate
The never-ending REST API design debate
 
The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016
 
APIs REST Usables con Hypermedia por Javier Ramirez, para codemotion
APIs REST Usables con Hypermedia por Javier Ramirez, para codemotionAPIs REST Usables con Hypermedia por Javier Ramirez, para codemotion
APIs REST Usables con Hypermedia por Javier Ramirez, para codemotion
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPress
 
Crafting Evolvable Api Responses
Crafting Evolvable Api ResponsesCrafting Evolvable Api Responses
Crafting Evolvable Api Responses
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIs
 
Austin Day of Rest - Introduction
Austin Day of Rest - IntroductionAustin Day of Rest - Introduction
Austin Day of Rest - Introduction
 
REST easy with API Platform
REST easy with API PlatformREST easy with API Platform
REST easy with API Platform
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API Platform
 
The JSON REST API for WordPress
The JSON REST API for WordPressThe JSON REST API for WordPress
The JSON REST API for WordPress
 
Beautiful REST+JSON APIs with Ion
Beautiful REST+JSON APIs with IonBeautiful REST+JSON APIs with Ion
Beautiful REST+JSON APIs with Ion
 
Designing a beautiful REST json api
Designing a beautiful REST json apiDesigning a beautiful REST json api
Designing a beautiful REST json api
 
Beautiful REST and JSON APIs - Les Hazlewood
Beautiful REST and JSON APIs - Les HazlewoodBeautiful REST and JSON APIs - Les Hazlewood
Beautiful REST and JSON APIs - Les Hazlewood
 
Elasticsearch in hatena bookmark
Elasticsearch in hatena bookmarkElasticsearch in hatena bookmark
Elasticsearch in hatena bookmark
 
ApacheCon 2005
ApacheCon 2005ApacheCon 2005
ApacheCon 2005
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring Surf
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring Surf
 
apidays LIVE LONDON - Data Retrieval via APIs - Showdown of GraphQL vs ODATA ...
apidays LIVE LONDON - Data Retrieval via APIs - Showdown of GraphQL vs ODATA ...apidays LIVE LONDON - Data Retrieval via APIs - Showdown of GraphQL vs ODATA ...
apidays LIVE LONDON - Data Retrieval via APIs - Showdown of GraphQL vs ODATA ...
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPress
 
Web Scraping In Ruby Utosc 2009.Key
Web Scraping In Ruby Utosc 2009.KeyWeb Scraping In Ruby Utosc 2009.Key
Web Scraping In Ruby Utosc 2009.Key
 

More from Alfresco Software

Alfresco Day Benelux Inholland studentendossier
Alfresco Day Benelux Inholland studentendossierAlfresco Day Benelux Inholland studentendossier
Alfresco Day Benelux Inholland studentendossierAlfresco Software
 
Alfresco Day Benelux Hogeschool Inholland Records Management application
Alfresco Day Benelux Hogeschool Inholland Records Management applicationAlfresco Day Benelux Hogeschool Inholland Records Management application
Alfresco Day Benelux Hogeschool Inholland Records Management applicationAlfresco Software
 
Alfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
Alfresco Day BeNelux: Customer Success Showcase - Saxion HogescholenAlfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
Alfresco Day BeNelux: Customer Success Showcase - Saxion HogescholenAlfresco Software
 
Alfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
Alfresco Day BeNelux: Customer Success Showcase - Gemeente AmsterdamAlfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
Alfresco Day BeNelux: Customer Success Showcase - Gemeente AmsterdamAlfresco Software
 
Alfresco Day BeNelux: The success of Alfresco
Alfresco Day BeNelux: The success of AlfrescoAlfresco Day BeNelux: The success of Alfresco
Alfresco Day BeNelux: The success of AlfrescoAlfresco Software
 
Alfresco Day BeNelux: Customer Success Showcase - Credendo Group
Alfresco Day BeNelux: Customer Success Showcase - Credendo GroupAlfresco Day BeNelux: Customer Success Showcase - Credendo Group
Alfresco Day BeNelux: Customer Success Showcase - Credendo GroupAlfresco Software
 
Alfresco Day BeNelux: Digital Transformation - It's All About Flow
Alfresco Day BeNelux: Digital Transformation - It's All About FlowAlfresco Day BeNelux: Digital Transformation - It's All About Flow
Alfresco Day BeNelux: Digital Transformation - It's All About FlowAlfresco Software
 
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...Alfresco Software
 
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...Alfresco Software
 
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-KonsoleAlfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-KonsoleAlfresco Software
 
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Software
 
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...Alfresco Software
 
Alfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
Alfresco Day Vienna 2016: Partner Lightning Talk: WesternacherAlfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
Alfresco Day Vienna 2016: Partner Lightning Talk: WesternacherAlfresco Software
 
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...Alfresco Software
 
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novum
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novumAlfresco Day Vienna 2016: Partner Lightning Talk - it-novum
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novumAlfresco Software
 
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...Alfresco Software
 
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...Alfresco Software
 
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - SafranAlfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - SafranAlfresco Software
 
Alfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Alfresco Day Warsaw 2016: Advancing the Flow of Digital BusinessAlfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Alfresco Day Warsaw 2016: Advancing the Flow of Digital BusinessAlfresco Software
 
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMS
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMSAlfresco Day Warsaw 2016: Podpis elektroniczny - BMS
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMSAlfresco Software
 

More from Alfresco Software (20)

Alfresco Day Benelux Inholland studentendossier
Alfresco Day Benelux Inholland studentendossierAlfresco Day Benelux Inholland studentendossier
Alfresco Day Benelux Inholland studentendossier
 
Alfresco Day Benelux Hogeschool Inholland Records Management application
Alfresco Day Benelux Hogeschool Inholland Records Management applicationAlfresco Day Benelux Hogeschool Inholland Records Management application
Alfresco Day Benelux Hogeschool Inholland Records Management application
 
Alfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
Alfresco Day BeNelux: Customer Success Showcase - Saxion HogescholenAlfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
Alfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
 
Alfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
Alfresco Day BeNelux: Customer Success Showcase - Gemeente AmsterdamAlfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
Alfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
 
Alfresco Day BeNelux: The success of Alfresco
Alfresco Day BeNelux: The success of AlfrescoAlfresco Day BeNelux: The success of Alfresco
Alfresco Day BeNelux: The success of Alfresco
 
Alfresco Day BeNelux: Customer Success Showcase - Credendo Group
Alfresco Day BeNelux: Customer Success Showcase - Credendo GroupAlfresco Day BeNelux: Customer Success Showcase - Credendo Group
Alfresco Day BeNelux: Customer Success Showcase - Credendo Group
 
Alfresco Day BeNelux: Digital Transformation - It's All About Flow
Alfresco Day BeNelux: Digital Transformation - It's All About FlowAlfresco Day BeNelux: Digital Transformation - It's All About Flow
Alfresco Day BeNelux: Digital Transformation - It's All About Flow
 
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
 
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
 
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-KonsoleAlfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
 
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
 
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
 
Alfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
Alfresco Day Vienna 2016: Partner Lightning Talk: WesternacherAlfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
Alfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
 
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
 
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novum
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novumAlfresco Day Vienna 2016: Partner Lightning Talk - it-novum
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novum
 
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
 
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
 
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - SafranAlfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
 
Alfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Alfresco Day Warsaw 2016: Advancing the Flow of Digital BusinessAlfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Alfresco Day Warsaw 2016: Advancing the Flow of Digital Business
 
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMS
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMSAlfresco Day Warsaw 2016: Podpis elektroniczny - BMS
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMS
 

Recently uploaded

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 

Recently uploaded (20)

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 

Alfresco Public API Update: What's New in Favorites and Site Membership Requests

  • 1. Tech Talk Live: Alfresco Public API Update April 3, 2013 Peter Monks, pmonks@alfresco.com Greg Melahn, greg.melahn@alfresco.com
  • 2. Agenda •  Overview •  What’s New •  Demo of the API in Action •  Roadmap •  Questions and Answers
  • 3. Overview Folder, file, content Networks, sites, and metadata people, comments, manipulation and tags, activities, … search
  • 5. Overview •  API URLs are structured: –  Tenant –  API scope –  API name –  API version –  Entity type* https://api.alfresco.com/acme.com/public/alfresco/ versions/1/sites * The notion of entity types doesn’t apply to CMIS.
  • 6. Overview •  The entity type URL represents a collection of all instances of that entity –  The collection may or may not be retrievable via a GET •  Each instance of an entity can be accessed via the collection URL with an Id appended .../acme.com/public/alfresco/versions/1/sites/mullet-gallery
  • 7. Overview •  Entity types may also be nested .../acme.com/public/alfresco/versions/1/sites/mullet-gallery/members •  The same rule about retrieving instances by Id applies .../acme.com/public/alfresco/versions/1/sites/mullet-gallery/ members/pmonks@alfresco.com
  • 8. Overview •  Creating a new entity instance: –  POST to the collection URL •  Updating an entity instance: –  PUT to the instance URL •  Deleting an entity instance: –  DELETE against the instance URL •  These rules apply regardless of whether it’s a top-level or nested collection
  • 9. Overview As of today: •  Only the “public” API scope is exposed •  API names are: –  alfresco –  CMIS •  Alfresco top-level entity types are: –  sites –  people –  tags –  nodes
  • 10. Overview •  Over time the API will grow simply by adding new entity types •  All new entity types will follow the same rules •  The APIs (tenants, API scopes, API names, API versions, entity types, etc.) are fully discoverable –  No more relying on Alfresco version numbers!
  • 11. What’s New •  oAuth Key Improvements •  Favorites API •  Site Membership Request API
  • 12. oAuth Key Improvements •  Refresh keys last longer – now 28 Days •  Still secure, but more convenient! •  Users returning from leave won’t need to re-authenticate { "access_token":"ad299019-c308-4588-84e6-fc76ee73fb35", "token_type":"Bearer", "expires_in":3600, "refresh_token":" ", "scope":"public_api" }
  • 13. Favorites API •  Favorites ( ) or Favourites ( )? •  A new Entity Type •  A new Collection under Person –  people/<personId>/favorites! •  Sites, Folders and Files can be made Favorites •  Introduction of the WHERE parameter for filtering of the favorites result set
  • 14. Entity Type Property Type JSON Type Description targetGuid id string The guid of the entity that is a favorite createdAt date time string The date and time the object was made a favorite target object object The object that is a favorite. This can be site, a folder or a file
  • 15. API Patterns •  Getting favorites –  HTTP GET people/<personId>/favorites! •  Getting a favorite –  HTTP GET people/<personId>/favorites/ <targetGuid>! •  Adding a favorite –  HTTP POST people/<personId>/favorites! •  Removing a favorite •  HTTP DELETE people/<personId>/favorites/ <targetGuid>! No PUT needed because the Favorite entity has no properties that can be modified by the client.
  • 16. Example – Getting Favorites Request HTTP GET people/fred.bloggs@example.com/favorites Paging parameters (skipCount and maxItems) can be used to control response size.
  • 17. Example – Getting Favorites Response HTTP 200 OK ! {  
   ! ! !"list" : {!     ! ! !  "pagination" : {!        ! ! ! !"count" : 3,!        ! ! ! !"hasMoreItems" : false,!      ! ! ! !"skipCount" : 0,!        ! ! ! !"maxItems" : 100! },! ! ! ! "entries" : [! ! ! ! {! "entry" : {
      "targetGuid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",
      "createdAt" : "2012-07-20T21:46:09.659+0000",
       "target": {
    "site" : {!      "id" : "foo",! "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",! ! ! ! ! "title" : "The Foo Site",! "visibility" : "PRIVATE",! ! ! ! ! "description" : "The Foo Site",! ! ! ! ! ! "role" : "SiteManager”! ! ! ! }! ! ! ! }! ! ! ! }
 ! ! }, … more entries (one per favorite)
  • 18. Example – Getting a Favorite Request HTTP GET people/fred.bloggs@example.com/favorites/ 8ac18731-601b-4bb4-be1a-cd5d252cce3f! ! ! !
  • 19. Example – Getting a Favorite Response HTTP 200 OK! ! ! !{! "entry" : {
     "targetGuid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",
      "createdAt" : "2012-07-20T21:46:09.659+0000",
     "target": {
   "site" : {!      "id" : "foo",! "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",! ! ! ! "title" : "The Foo Site",! "visibility" : "PRIVATE",! ! ! ! ! "description" : "The Foo Site",! ! ! ! ! !"role" : "SiteManager”! ! ! ! ! }! ! ! ! }! ! ! ! }
 ! ! } Notice we return the role as a convenience to reduce the need for more requests later
  • 20. Example – Adding a Favorite Request HTTP POST people/fred.bloggs@example.com/favorites! {! "target": {
 "site" : { ! "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f"! } !  }
 }
  • 21. Example – Adding a Favorite Response HTTP 201 Created ! ! ! !{! "entry" : {
     "targetGuid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",
      "createdAt" : "2012-07-20T21:46:09.659+0000",
     "target": {
   "site" : {!      "id" : "foo",! "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",! ! ! ! "title" : "The Foo Site",! "visibility" : "PRIVATE",! ! ! ! ! "description" : "The Foo Site",! ! ! ! ! "role" : "SiteManager”! ! ! ! ! }! ! ! }! ! ! }
 ! ! }
  • 22. Example – Removing a Favorite Request HTTP DELETE people/fred.bloggs@example.com/ favorites/8ac18731-601b-4bb4-be1a-cd5d252cce3f! ! Response HTTP 204 No Content! !
  • 23. Introducing the where parameter •  Used to limit the response to only those favorites meeting certain criteria •  Uses an SQL like predicate, EXISTS •  JSON pointer syntax used as values –  target/file –  target/folder –  target/site •  e.g. where=(EXISTS(target/file) OR EXISTS(target/folder))
 !
  • 24. Site Membership Request API •  A new Entity Type •  A new Collection under Person –  people/<personId>/site-membership- requests! •  Requests to join moderated sites go into the approval workflow just as in the Share app •  Requests to join public sites are implicitly granted •  Requests to join private sites are just ignored –  and a 404 hides the existence of the private site •  You can only request to join a site in your own network
  • 25. Entity Type Property Type JSON Description Type id id string The id of the site site object object The site for which this is a request message string string A message from the requester explaining why membership in the site is being requested (optional) createdAt date time string The date and time the site membership request was made modifiedAt date time string The date and time the site membership request was changed
  • 26. API Patterns •  Getting a list of site membership requests –  HTTP GET people/<personId>/site-membership- requests! •  Requesting to join a site –  HTTP POST people/<personId>/site-membership- requests! •  Changing a request –  HTTP PUT people/<personId>/site-membership- requests/<siteId>! •  Withdrawing a request •  HTTP DELETE people/<personId>/site-membership- requests/<siteId>
  • 27. Example – Getting a List of Site Membership Requests Request HTTP GET people/fred.bloggs@example.com/ site-membership-requests!
  • 28. Example – Getting a List of Site Membership Requests Response HTTP 200 OK ! {  
   ! ! !"list" : {!     ! ! !  "pagination" : {!        ! ! ! !"count" : 3,!        ! ! ! !"hasMoreItems" : false,!      ! ! ! !"skipCount" : 0,!        ! ! ! !"maxItems" : 100! ! ! },! "entries" : [!   {                                            
       ! ! !    "entry": {                                 
            "id" : "the-secret-site",
            "createdAt" : "2012-07-20T21:46:09.659+0000",
            "modifiedAt" : "2012-07-20T21:46:09.659+0000",
            "message" : "I am working on the secret project too!", ! "site" : {! "id" : "the-secret-site",! "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",! "title" : "The Company’s Secret Site",! "visibility" : "MODERATED",! "description" : "The Company’s Secret Site"               ! }! }!            }, … more entries (one per request)
  • 29. Example – Requesting to Join a Site Request HTTP POST people/fred.bloggs@example.com/ site-membership-requests! ! {                                 
    "id" : "the-secret-site",
    "message" : "I am working on the secret project too!"
 }
 !
  • 30. Example – Requesting to Join a Site Response HTTP 201 Created ! {                                            
       ! ! !   "entry": {                                 
            "id" : "the-secret-site",
            "createdAt" : "2012-07-20T21:46:09.659+0000",
            "modifiedAt" : "2012-07-20T21:46:09.659+0000",
            "message" : "I am working on the secret project”, !    "site" : {! "id" : "the-secret-site",! "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",! "title" : "The Company’s Secret Site",! "visibility" : "MODERATED",! "description" : "The Company’s Secret Site"              }!            }
 }
 !
  • 31. Example – Changing a Request to Join a Site Request HTTP PUT people/fred.bloggs@example.com/site- membership-requests/the-secret-site! ! {                                 
    "id" : "the-secret-site",
    "message" : "I really need access!"
 }
 !
  • 32. Example – Changing a Request to Join a Site Response HTTP 200 OK! {                                            
       ! ! !   "entry": {                                 
            "id" : "the-secret-site",
            "createdAt" : "2012-07-20T21:46:09.659+0000",
            "modifiedAt" : "2013-04-03T16:41:11.659+0000",
            "message" : “I really need access!", !            "site" : {! "id" : "the-secret-site",! "guid" : "8ac18731-601b-4bb4-be1a-cd5d252cce3f",! "title" : "The Company’s Secret Site",! "visibility" : "MODERATED",! "description" : "The Company’s Secret Site"              }!            }
 }
 !
  • 33. Example – Withdrawing a Request to Join a Site Request HTTP DELETE people/fred.bloggs@example.com/ site-membership-requests/the-secret-site! ! Request HTTP 204 No Content!
  • 34. The API in Action •  Demo
  • 35. Roadmap •  Merge APIs into Alfresco Enterprise v4.2 •  New API types: –  User Provisioning (SCIM) –  Workflow (Activiti) •  New API versions: –  CMIS v1.1 –  Alfresco v2 (?) •  New Alfresco API entity types: –  renditions –  bulk-imports (?)
  • 36. Roadmap •  Binary property support •  Projection & transclusion improvements (“SELECT”) •  Restriction improvements (“WHERE”) •  Discoverability improvements –  In support of “executable documentation”
  • 37. Try It Yourself •  Register for a Developer Key –  http://www.alfresco.com/develop •  Read the Documentation –  https://www.alfresco.com/cmis/browser? id=workspace%3A//SpacesStore/ b09d212a-00c6-4ec3-9764-0eca67bb8529