{"swagger":"2.0","info":{"description":"User REST API for PEACH","version":"3.0.0","title":"User data REST API","contact":{"name":"Peach team","url":"http://peach.ebu.io/","email":"noir@ebu.ch"},"license":{"name":"Copyright (c) 2014, EBU-UER Technology & Innovation","url":"https://git.ebu.io/pipe/identity-provider/blob/develop/LICENSE.txt"}},"host":"peach-staging.ebu.io","basePath":"/","tags":[{"name":"gdpr-controller","description":"Data management API (version 1)"},{"name":"health-controller","description":"health chech API"},{"name":"playlist-controller-v-2","description":"Playlist API (version 2)"},{"name":"playlist-controller-v-3","description":"Playlist API (version 3)"},{"name":"preference-controller","description":"Preference API (version 1)"},{"name":"profile-controller-v-3","description":"Profile API (version 3)"},{"name":"user-history-controller-v-2","description":"User history API (version 2)"}],"paths":{"/api/data":{"delete":{"tags":["gdpr-controller"],"summary":"Delete all user data","operationId":"deleteAllUserDataUsingDELETE","produces":["*/*"],"responses":{"200":{"description":"OK"},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false}},"/api/data/export":{"get":{"tags":["gdpr-controller"],"summary":"List all available user data exports","operationId":"getAllAvaillableDataExportsUsingGET","produces":["*/*"],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/ExportStatus"}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"post":{"tags":["gdpr-controller"],"summary":"Start an export of all user data","operationId":"startDataExportUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"exportRequest","description":"exportRequest","required":true,"schema":{"$ref":"#/definitions/ExportRequest"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ExportStatus"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"delete":{"tags":["gdpr-controller"],"summary":"Delete all user exports' (zip)","operationId":"deleteAllExportUsingDELETE","produces":["*/*"],"responses":{"200":{"description":"OK"},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false}},"/api/data/export/public/{key}":{"get":{"tags":["gdpr-controller"],"summary":"Download an export (zip) by its key","operationId":"getDataExportUsingGET","produces":["*/*"],"parameters":[{"name":"key","in":"path","description":"key","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/InputStreamResource"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/api/data/export/{key}":{"delete":{"tags":["gdpr-controller"],"summary":"Delete an export (zip) by its key","operationId":"deleteExportUsingDELETE","produces":["*/*"],"parameters":[{"name":"key","in":"path","description":"key","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false}},"/api/history":{"get":{"tags":["user-history-controller-v-2"],"summary":"Get user history","description":"About pagination\n?before=1000&before_item_id=b on {\"item_id\":\"a\",\"date\":1000},{\"item_id\":\"b\",\"date\":1000},{\"item_id\":\"c\",\"date\":1000} only third item\nbut ?before=1000 wouldn't returns any item","operationId":"getHistoryUsingGET","produces":["*/*"],"parameters":[{"name":"after","in":"query","description":"Only element watch after a given timestamp (including) that timestamp will be returned","required":false,"type":"integer","format":"int64","allowEmptyValue":false},{"name":"before","in":"query","description":"Only element watch before a given timestamp (excluding except if before_item_id is set) that timestamp will be returned","required":false,"type":"integer","format":"int64","allowEmptyValue":false},{"name":"before_item_id","in":"query","description":"Used if before parameter is set","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Limit the number of returned element","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"with_deleted","in":"query","description":"Also return deleted items","required":false,"type":"boolean","allowEmptyValue":false}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/History"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"post":{"tags":["user-history-controller-v-2"],"summary":"Add an item to user history","operationId":"addHistoryItemUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"item","description":"item","required":true,"schema":{"$ref":"#/definitions/NewItem"}}],"responses":{"200":{"description":"Ok","schema":{"$ref":"#/definitions/Item"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"429":{"description":"Two concurrent HTTP requests tried to update the same history."}},"deprecated":false},"delete":{"tags":["user-history-controller-v-2"],"summary":"Delete the whole user history","operationId":"deleteAllHistoryUsingDELETE","produces":["*/*"],"responses":{"200":{"description":"OK"},"204":{"description":"Ok"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"description":"Two concurrent HTTP requests tried to update the same history."}},"deprecated":false}},"/api/history/batch":{"post":{"tags":["user-history-controller-v-2"],"summary":"Add batch of items to user history","operationId":"addBatchUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"batch","description":"batch","required":true,"schema":{"$ref":"#/definitions/HistoryItemBatch"}}],"responses":{"200":{"description":"OK"},"201":{"description":"Created"},"204":{"description":"Ok"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"429":{"description":"Two concurrent HTTP requests tried to update the same history."}},"deprecated":false}},"/api/history/positions":{"get":{"tags":["user-history-controller-v-2"],"summary":"Get last playback position by media id","description":"About pagination\n?before=1000&before_item_id=b on {\"item_id\":\"a\",\"date\":1000},{\"item_id\":\"b\",\"date\":1000},{\"item_id\":\"c\",\"date\":1000} only third item\nbut ?before=1000 wouldn't returns any item","operationId":"getHistoryLastPlaybackPositionsUsingGET","produces":["*/*"],"parameters":[{"name":"after","in":"query","description":"Only element watch after a given timestamp (including) that timestamp will be returned","required":false,"type":"integer","format":"int64","allowEmptyValue":false},{"name":"before","in":"query","description":"Only element watch before a given timestamp (excluding except if before_item_id is set) that timestamp will be returned","required":false,"type":"integer","format":"int64","allowEmptyValue":false},{"name":"before_item_id","in":"query","description":"Used if before parameter is set","required":false,"type":"string","allowEmptyValue":false},{"name":"item_ids","in":"query","description":"A list of item id separated by commas","required":false,"type":"string","allowEmptyValue":false,"x-example":"item_1,item2"},{"name":"limit","in":"query","description":"Limit the number of returned element","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"return_missing","in":"query","description":"Also return deleted items","required":false,"type":"boolean","allowEmptyValue":false},{"name":"with_deleted","in":"query","description":"Also return deleted items","required":false,"type":"boolean","allowEmptyValue":false}],"responses":{"200":{"description":"OK","schema":{"type":"object","additionalProperties":{"type":"number","format":"float"}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/api/history/v2":{"get":{"tags":["user-history-controller-v-2"],"summary":"Get user history","description":"About pagination\n?before=1000&before_item_id=b on {\"item_id\":\"a\",\"date\":1000},{\"item_id\":\"b\",\"date\":1000},{\"item_id\":\"c\",\"date\":1000} only third item\nbut ?before=1000 wouldn't returns any item","operationId":"getHistoryUsingGET_1","produces":["*/*"],"parameters":[{"name":"after","in":"query","description":"Only element watch after a given timestamp (including) that timestamp will be returned","required":false,"type":"integer","format":"int64","allowEmptyValue":false},{"name":"before","in":"query","description":"Only element watch before a given timestamp (excluding except if before_item_id is set) that timestamp will be returned","required":false,"type":"integer","format":"int64","allowEmptyValue":false},{"name":"before_item_id","in":"query","description":"Used if before parameter is set","required":false,"type":"string","allowEmptyValue":false},{"name":"limit","in":"query","description":"Limit the number of returned element","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"with_deleted","in":"query","description":"Also return deleted items","required":false,"type":"boolean","allowEmptyValue":false}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/History"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"post":{"tags":["user-history-controller-v-2"],"summary":"Add an item to user history","operationId":"addHistoryItemUsingPOST_1","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"item","description":"item","required":true,"schema":{"$ref":"#/definitions/NewItem"}}],"responses":{"200":{"description":"Ok","schema":{"$ref":"#/definitions/Item"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"429":{"description":"Two concurrent HTTP requests tried to update the same history."}},"deprecated":false},"delete":{"tags":["user-history-controller-v-2"],"summary":"Delete the whole user history","operationId":"deleteAllHistoryUsingDELETE_1","produces":["*/*"],"responses":{"200":{"description":"OK"},"204":{"description":"Ok"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"description":"Two concurrent HTTP requests tried to update the same history."}},"deprecated":false}},"/api/history/v2/batch":{"post":{"tags":["user-history-controller-v-2"],"summary":"Add batch of items to user history","operationId":"addBatchUsingPOST_1","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"batch","description":"batch","required":true,"schema":{"$ref":"#/definitions/HistoryItemBatch"}}],"responses":{"200":{"description":"OK"},"201":{"description":"Created"},"204":{"description":"Ok"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"429":{"description":"Two concurrent HTTP requests tried to update the same history."}},"deprecated":false}},"/api/history/v2/positions":{"get":{"tags":["user-history-controller-v-2"],"summary":"Get last playback position by media id","description":"About pagination\n?before=1000&before_item_id=b on {\"item_id\":\"a\",\"date\":1000},{\"item_id\":\"b\",\"date\":1000},{\"item_id\":\"c\",\"date\":1000} only third item\nbut ?before=1000 wouldn't returns any item","operationId":"getHistoryLastPlaybackPositionsUsingGET_1","produces":["*/*"],"parameters":[{"name":"after","in":"query","description":"Only element watch after a given timestamp (including) that timestamp will be returned","required":false,"type":"integer","format":"int64","allowEmptyValue":false},{"name":"before","in":"query","description":"Only element watch before a given timestamp (excluding except if before_item_id is set) that timestamp will be returned","required":false,"type":"integer","format":"int64","allowEmptyValue":false},{"name":"before_item_id","in":"query","description":"Used if before parameter is set","required":false,"type":"string","allowEmptyValue":false},{"name":"item_ids","in":"query","description":"A list of item id separated by commas","required":false,"type":"string","allowEmptyValue":false,"x-example":"item_1,item2"},{"name":"limit","in":"query","description":"Limit the number of returned element","required":false,"type":"integer","format":"int32","allowEmptyValue":false},{"name":"return_missing","in":"query","description":"Also return deleted items","required":false,"type":"boolean","allowEmptyValue":false},{"name":"with_deleted","in":"query","description":"Also return deleted items","required":false,"type":"boolean","allowEmptyValue":false}],"responses":{"200":{"description":"OK","schema":{"type":"object","additionalProperties":{"type":"number","format":"float"}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/api/history/v2/{itemId}":{"delete":{"tags":["user-history-controller-v-2"],"summary":"Delete one item in user history by its technical id","operationId":"deleteItemByBusinessIdUsingDELETE","produces":["*/*"],"parameters":[{"name":"itemId","in":"path","description":"Item business id","required":false,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"Ok"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"description":"Two concurrent HTTP requests tried to update the same history."}},"deprecated":false}},"/api/history/{id}":{"delete":{"tags":["user-history-controller-v-2"],"summary":"Delete one item in user history by its technical id (deprecated, not available in API V2)","operationId":"deleteItemByTechnicalIdUsingDELETE","produces":["*/*"],"parameters":[{"name":"id","in":"path","description":"Item technical id","required":false,"type":"integer","format":"int32"}],"responses":{"200":{"description":"OK"},"204":{"description":"Ok"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"429":{"description":"Two concurrent HTTP requests tried to update the same history."}},"deprecated":false}},"/api/playlist/v2":{"get":{"tags":["playlist-controller-v-2"],"summary":"Get all the playlists for the logged user","operationId":"getPlaylistsUsingGET","produces":["*/*"],"parameters":[{"name":"withSystemDefaultPlaylistName","in":"query","description":"withSystemDefaultPlaylistName","required":false,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/RetrievedPlaylists"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"post":{"tags":["playlist-controller-v-2"],"summary":"Create an empty playlist","operationId":"createPlaylistUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"newPlaylist","description":"newPlaylist","required":true,"schema":{"$ref":"#/definitions/NewPlaylist"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/PlaylistMetaData"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"delete":{"tags":["playlist-controller-v-2"],"summary":"Delete all user playlist","operationId":"deleteAllPlaylistsUsingDELETE","produces":["*/*"],"responses":{"200":{"description":"OK"},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false}},"/api/playlist/v2/new/bookmarks":{"post":{"tags":["playlist-controller-v-2"],"summary":"Create a playlist with a first element","operationId":"createPlaylistWithContentUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"newPlaylistWithContent","description":"newPlaylistWithContent","required":true,"schema":{"$ref":"#/definitions/NewPlaylistWithContent"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/BookmarksIds"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/api/playlist/v2/{playlistId}/bookmarks":{"get":{"tags":["playlist-controller-v-2"],"summary":"Get playlist content","operationId":"getPlaylistContentUsingGET","produces":["*/*"],"parameters":[{"name":"playlistId","in":"path","description":"playlistId","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/FullPlaylist"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"post":{"tags":["playlist-controller-v-2"],"summary":"Add an item to a playlist identified by its technical Id","operationId":"addContentToPlaylistUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"mediaForPlaylist","description":"mediaForPlaylist","required":true,"schema":{"$ref":"#/definitions/NewMediaForPlaylistV2"}},{"name":"playlistId","in":"path","description":"playlistId","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Bookmark"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"delete":{"tags":["playlist-controller-v-2"],"summary":"Delete a playlist by its technical id","operationId":"deleteAllPlaylistContentUsingDELETE","produces":["*/*"],"parameters":[{"name":"playlistId","in":"path","description":"playlistId","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false}},"/api/playlist/v2/{playlistId}/bookmarks/{bookmarks_id}":{"delete":{"tags":["playlist-controller-v-2"],"summary":"Delete a bookmarks in a playlist identified by its playlist technical id and bookmarks technical id","operationId":"deletePlaylistContentUsingDELETE","produces":["*/*"],"parameters":[{"name":"bookmarks_id","in":"path","description":"bookmarks_id","required":true,"type":"integer","format":"int32"},{"name":"playlistId","in":"path","description":"playlistId","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false}},"/api/playlist/v2/{playlist_id}":{"delete":{"tags":["playlist-controller-v-2"],"summary":"Delete a playlist by its technical id","operationId":"deletePlaylistUsingDELETE","produces":["*/*"],"parameters":[{"name":"playlist_id","in":"path","description":"playlist_id","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false}},"/api/playlist/v3":{"get":{"tags":["playlist-controller-v-3"],"summary":"Get all the playlist metadata's for the logged user","operationId":"getAllPlaylistMetadataUsingGET","produces":["*/*"],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/RetrievedPlaylistsV3"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"delete":{"tags":["playlist-controller-v-3"],"summary":"Delete all user playlist (except watch later)","description":"That operation doesn't delete watch later playlist","operationId":"deleteAllPlaylistsUsingDELETE_1","produces":["*/*"],"responses":{"200":{"description":"OK"},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false}},"/api/playlist/v3/new/bookmarks":{"post":{"tags":["playlist-controller-v-3"],"summary":"Create a playlist with a first element","operationId":"createPlaylistWithContentUsingPOST_1","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"newPlaylistWithContent","description":"newPlaylistWithContent","required":true,"schema":{"$ref":"#/definitions/NewPlaylistWithContentV3"}}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/BookmarkV3"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/api/playlist/v3/{playlistBusinessId}":{"get":{"tags":["playlist-controller-v-3"],"summary":"Get playlist by business id","operationId":"getPlaylistUsingGET","produces":["*/*"],"parameters":[{"name":"playlistBusinessId","in":"path","description":"playlistBusinessId","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/FullPlaylistV3"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"post":{"tags":["playlist-controller-v-3"],"summary":"Create an empty playlist or update an existing one","operationId":"createPlaylistUsingPOST_1","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"playlistAttributes","description":"playlistAttributes","required":true,"schema":{"$ref":"#/definitions/PlaylistAttributesV3"}},{"name":"playlistBusinessId","in":"path","description":"playlistBusinessId","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/PlaylistMetaDataV3"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"delete":{"tags":["playlist-controller-v-3"],"summary":"Delete a playlist by its technical id","operationId":"deleteUserPlaylistByBusinessIdUsingDELETE","produces":["*/*"],"parameters":[{"name":"playlistBusinessId","in":"path","description":"playlistBusinessId","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false}},"/api/playlist/v3/{playlistBusinessId}/bookmarks":{"post":{"tags":["playlist-controller-v-3"],"summary":"Add an item to a playlist identified by its technical Id. To store data in watch later playlist, use watch_later as {playlistBusinessId}","operationId":"addContentToPlaylistUsingPOST_1","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"mediaForPlaylist","description":"mediaForPlaylist","required":true,"schema":{"$ref":"#/definitions/NewMediaForPlaylistV3"}},{"name":"playlistBusinessId","in":"path","description":"playlistBusinessId","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/BookmarkV3"}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"put":{"tags":["playlist-controller-v-3"],"summary":"Add a batch of items to a playlist identified by its technical Id","operationId":"addBatchContentToPlaylistUsingPUT","consumes":["application/json"],"produces":["*/*"],"parameters":[{"in":"body","name":"mediaForPlaylistBatch","description":"mediaForPlaylistBatch","required":true,"schema":{"type":"array","items":{"$ref":"#/definitions/NewMediaForPlaylistV3"}}},{"name":"playlistBusinessId","in":"path","description":"playlistBusinessId","required":true,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"$ref":"#/definitions/BookmarkV3"}}},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"delete":{"tags":["playlist-controller-v-3"],"summary":"Delete all or partial playlist content","operationId":"deletePlaylistContentUsingDELETE_2","produces":["*/*"],"parameters":[{"name":"ids","in":"query","description":"A comma separated list of ID","required":false,"type":"string","allowEmptyValue":false,"x-example":"1,42,69"},{"name":"mediaIds","in":"query","description":"A comma separated list of media ID","required":false,"type":"string","allowEmptyValue":false,"x-example":"media_01,media_42,media_25"},{"name":"playlistBusinessId","in":"path","description":"playlistBusinessId","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false}},"/api/playlist/v3/{playlistBusinessId}/bookmarks/{bookmarkId}":{"delete":{"tags":["playlist-controller-v-3"],"summary":"Delete a bookmarks in a playlist identified by its playlist technical id and bookmarks technical id","operationId":"deletePlaylistContentUsingDELETE_1","produces":["*/*"],"parameters":[{"name":"bookmarkId","in":"path","description":"bookmarkId","required":true,"type":"integer","format":"int32"},{"name":"playlistBusinessId","in":"path","description":"playlistBusinessId","required":true,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false}},"/api/preference":{"get":{"tags":["preference-controller"],"summary":"Get all user's preferences keys","operationId":"getPreferencesUsingGET","produces":["*/*"],"responses":{"200":{"description":"OK","schema":{"type":"array","items":{"type":"string"}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/api/preference/{key}":{"get":{"tags":["preference-controller"],"summary":"Get a preference specified by its key, either entirely or just a subset definied by a jsonpath expression","operationId":"getPreferenceByJsonPathUsingGET","produces":["*/*"],"parameters":[{"name":"jsonpath","in":"query","description":"jsonPath expression evaluated against the result before returning it","required":false,"type":"string","allowEmptyValue":false,"x-example":"kids[0].profile.age"},{"name":"key","in":"path","description":"Preference Key","required":false,"type":"string","x-example":"sport"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/JsonNode"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"put":{"tags":["preference-controller"],"summary":"Create or update the content on the preference","description":"Preference data could ben any valid object Json. Array are not allowed at the root of the object: otherwise some update would become impossible (like adding a new property at the root)","operationId":"setPreferenceUsingPUT","consumes":["application/json"],"produces":["*/*"],"parameters":[{"name":"key","in":"path","description":"Preference Key","required":false,"type":"string"},{"in":"body","name":"preferenceData","description":"Preference data","required":false,"schema":{"$ref":"#/definitions/JsonNode"}}],"responses":{"200":{"description":"OK"},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"delete":{"tags":["preference-controller"],"summary":"Delete a preference specified by its key, either entirely or just a subset definied by a jsonpath expression","operationId":"deletePreferenceUsingDELETE","produces":["*/*"],"parameters":[{"name":"jsonPath expression evaluated against the preference for partial deletion","in":"query","description":"jsonpath","required":false,"type":"string","allowEmptyValue":false,"x-example":"kids[0].profile.age"},{"name":"key","in":"path","description":"Preference Key","required":false,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false}},"/api/preference/{key}/{path}":{"get":{"tags":["preference-controller"],"summary":"Get a preference specified by its key and a sub path","description":"Path is used to restrict the scope of the request. It can contains fieldnames and array indexes.\nFor instance '/players/0/age' returns 42 on following preference:\n{\"players\": [{\"name\": \"bob\",\"age\": \"42\"}]}\nNote: jsonpath query param is not supported in combination with path so we cannot end with several way to access the same node. When a path is present, jsonpath query parameter is ignored","operationId":"getPreferenceByJsonPointerSwaggerUsingGET","produces":["*/*"],"parameters":[{"name":"key","in":"path","description":"Preference Key","required":false,"type":"string","x-example":"sport"},{"name":"path","in":"path","description":"path used to restrict the scope of the request","required":false,"type":"string","x-example":"/players/0/age"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/JsonNode"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"post":{"tags":["preference-controller"],"summary":"Update a preference part under the specified path with the body of the request","operationId":"updateSubPreferenceSwaggerUsingPOST","consumes":["application/json"],"produces":["*/*"],"parameters":[{"name":"key","in":"path","description":"Preference Key","required":false,"type":"string"},{"in":"body","name":"partialUpdate","description":"Content to use for update, must be under a 'payload' key like {\"payload\" : \"Some new value\"} or {\"payload\" : {\"name\" : \"John Doe\"}}","required":false,"schema":{"$ref":"#/definitions/PartialUpdate"}},{"name":"path","in":"path","description":"Path defining the location in the json to update the content, can contain fieldnames and array indexes","required":false,"type":"string","x-example":"players/0/firstname"}],"responses":{"200":{"description":"OK"},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"put":{"tags":["preference-controller"],"summary":"Replace a preference part under the specified path with the body of the request","operationId":"putSubPreferenceSwaggerUsingPUT","consumes":["application/json"],"produces":["*/*"],"parameters":[{"name":"key","in":"path","description":"Preference Key","required":false,"type":"string"},{"name":"path","in":"path","description":"Path defining the location in the json to place the new content, can contain fieldnames and array indexes","required":false,"type":"string"},{"in":"body","name":"preferenceData","description":"preferenceData","required":true,"schema":{"$ref":"#/definitions/JsonNode"}}],"responses":{"200":{"description":"OK"},"201":{"description":"Created"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"delete":{"tags":["preference-controller"],"summary":"Get a preference specified by its key and a jsonPointer","operationId":"deletePreferenceByJsonPointerSwaggerUsingDELETE","produces":["*/*"],"parameters":[{"name":"key","in":"path","description":"Preference Key","required":false,"type":"string"},{"name":"path","in":"path","description":"path used to rectrict the scope of the request, can contain fieldnames and array indexes","required":false,"type":"string"}],"responses":{"200":{"description":"OK"},"204":{"description":"No Content"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"deprecated":false}},"/api/profile/v3":{"get":{"tags":["profile-controller-v-3"],"summary":"Get user profile","operationId":"getProfileUsingGET","produces":["*/*"],"parameters":[{"name":"Authorization","in":"header","description":"Authorization","required":false,"type":"string"},{"name":"Token-Type","in":"header","description":"Token-Type","required":false,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Profile"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false},"put":{"tags":["profile-controller-v-3"],"summary":"Update user profile","operationId":"updateProfileUsingPUT","consumes":["application/json"],"produces":["application/json"],"parameters":[{"name":"Authorization","in":"header","description":"Authorization","required":false,"type":"string"},{"name":"Token-Type","in":"header","description":"Token-Type","required":false,"type":"string"},{"in":"body","name":"profileData","description":"profileData","required":true,"schema":{"$ref":"#/definitions/UpdateProfileData"}}],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"201":{"description":"Created"},"204":{"description":"Ok","schema":{"type":"string"}},"400":{"description":"bad update data"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}},"/api/profile/v3/public/{publicUserId}":{"get":{"tags":["profile-controller-v-3"],"summary":"Get user public profile","operationId":"getPublicProfileUsingGET","produces":["*/*"],"parameters":[{"name":"publicUserId","in":"path","description":"publicUserId","required":true,"type":"string"}],"responses":{"200":{"description":"Ok","schema":{"$ref":"#/definitions/PublicProfile"}},"400":{"description":"not valid UUIDv4!"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"409":{"description":"service disabled"}},"deprecated":false}},"/health/":{"get":{"tags":["health-controller"],"summary":"returns \"Status: UP :)\" if APIs and database are available.","operationId":"getUsingGET","produces":["*/*"],"responses":{"200":{"description":"OK","schema":{"type":"string"}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"deprecated":false}}},"definitions":{"Bookmark":{"type":"object","properties":{"date":{"type":"integer","format":"int64"},"id":{"type":"integer","format":"int32"},"media_id":{"type":"string"}},"title":"Bookmark"},"BookmarkV3":{"type":"object","properties":{"date":{"type":"integer","format":"int64","example":1543302087000,"description":"Override server date (if date < server date)"},"id":{"type":"integer","format":"int32","example":42,"description":"A technical unique identifier to retrieve item in the playlist. Could be used to delete a specified bookmark"},"itemId":{"type":"string","example":"urn:1234","description":"Item business id"}},"title":"BookmarkV3"},"BookmarksIds":{"type":"object","properties":{"bookmark_id":{"type":"integer","format":"int32","example":42,"description":"Bookmark technical id"},"playlist_id":{"type":"string","example":"54759eb3c090d83494e2d804","description":"Playlist technical id"}},"title":"BookmarksIds"},"ExportRequest":{"type":"object","properties":{"callbackUrl":{"type":"string","example":"http://localhost/data","description":"GDPR manager callback url"},"fileName":{"type":"string","example":"myData.zip","description":"Export file name"}},"title":"ExportRequest"},"ExportStatus":{"type":"object","properties":{"createdOn":{"type":"integer","format":"int64"},"key":{"type":"string"},"publicUrl":{"type":"string"},"url":{"type":"string"}},"title":"ExportStatus"},"File":{"type":"object","properties":{"absolute":{"type":"boolean"},"absoluteFile":{"$ref":"#/definitions/File"},"absolutePath":{"type":"string"},"canonicalFile":{"$ref":"#/definitions/File"},"canonicalPath":{"type":"string"},"directory":{"type":"boolean"},"file":{"type":"boolean"},"freeSpace":{"type":"integer","format":"int64"},"hidden":{"type":"boolean"},"name":{"type":"string"},"parent":{"type":"string"},"parentFile":{"$ref":"#/definitions/File"},"path":{"type":"string"},"totalSpace":{"type":"integer","format":"int64"},"usableSpace":{"type":"integer","format":"int64"}},"title":"File"},"FullPlaylist":{"type":"object","properties":{"bookmarks":{"type":"array","items":{"$ref":"#/definitions/Bookmark"}},"id":{"type":"string"},"name":{"type":"string"},"system":{"type":"boolean"}},"title":"FullPlaylist"},"FullPlaylistV3":{"type":"object","properties":{"bookmarks":{"type":"array","items":{"$ref":"#/definitions/BookmarkV3"}},"businessId":{"type":"string","example":"54759eb3c090d83494e2d804","description":"The playlist business id, might be the same as business id (if not sent by client)"},"id":{"type":"string","example":"54759eb3c090d83494e2d804","description":"The playlist technical id"},"name":{"type":"string","example":"My favorite show","description":"The playlist name"},"type":{"type":"string","example":false,"description":"Playlist type could be standard or watch_later"}},"title":"FullPlaylistV3"},"History":{"type":"object","properties":{"data":{"type":"array","description":"sub part of User history depending on filter applied","items":{"$ref":"#/definitions/Item"}},"last_update":{"type":"integer","format":"int64","example":1529584498803,"description":"Last time the history was updated"},"next":{"type":"string","example":"?after=1529584498803&limit=2","description":"URI path to get new item (if applicable)"},"total":{"type":"integer","format":"int32","example":1,"description":"Number of item returned"}},"title":"History"},"HistoryItemBatch":{"type":"object","properties":{"data":{"type":"array","description":"List of item to be added/updated","items":{"$ref":"#/definitions/NewItem"}}},"title":"HistoryItemBatch"},"InputStream":{"type":"object","title":"InputStream"},"InputStreamResource":{"type":"object","properties":{"description":{"type":"string"},"file":{"$ref":"#/definitions/File"},"filename":{"type":"string"},"inputStream":{"$ref":"#/definitions/InputStream"},"open":{"type":"boolean"},"readable":{"type":"boolean"},"uri":{"$ref":"#/definitions/URI"},"url":{"$ref":"#/definitions/URL"}},"title":"InputStreamResource"},"Item":{"type":"object","properties":{"date":{"type":"integer","format":"int64","example":1529573461123,"description":"when item was added/last updated in user history"},"deleted":{"type":"boolean","example":false,"description":"True if the item had been deleted"},"device_id":{"type":"string","example":"2b6f0cc904d137be2e1730235f5664094b831186","description":"Id of device that was used to add that item into history"},"id":{"type":"integer","format":"int32","example":12,"description":"technical id deprecated"},"item_id":{"type":"string","example":"video:42","description":"item id in broacaster system"},"last_playback_position":{"type":"number","format":"float","example":12.5,"description":"Last playback position"}},"title":"Item"},"JsonNode":{"type":"object","properties":{"array":{"type":"boolean"},"bigDecimal":{"type":"boolean"},"bigInteger":{"type":"boolean"},"binary":{"type":"boolean"},"boolean":{"type":"boolean"},"containerNode":{"type":"boolean"},"double":{"type":"boolean"},"float":{"type":"boolean"},"floatingPointNumber":{"type":"boolean"},"int":{"type":"boolean"},"integralNumber":{"type":"boolean"},"long":{"type":"boolean"},"missingNode":{"type":"boolean"},"nodeType":{"type":"string","enum":["ARRAY","BINARY","BOOLEAN","MISSING","NULL","NUMBER","OBJECT","POJO","STRING"]},"null":{"type":"boolean"},"number":{"type":"boolean"},"object":{"type":"boolean"},"pojo":{"type":"boolean"},"short":{"type":"boolean"},"textual":{"type":"boolean"},"valueNode":{"type":"boolean"}},"title":"JsonNode"},"NewItem":{"type":"object","properties":{"date":{"type":"integer","format":"int64","example":1529573461123,"description":"when item was added/last updated in user history"},"deleted":{"type":"boolean","example":false,"description":"True if the item had been deleted"},"device_id":{"type":"string","example":"2b6f0cc904d137be2e1730235f5664094b831186","description":"Id of device that was used to add that item into history"},"item_id":{"type":"string","example":"video:42","description":"item id in broacaster system"},"last_playback_position":{"type":"number","format":"float","example":12.5,"description":"Last playback position"}},"title":"NewItem"},"NewMediaForPlaylistV2":{"type":"object","properties":{"date":{"type":"integer","format":"int64","example":1543302087000,"description":"override server date (if date < server time)"},"media_id":{"type":"string","example":"video:1234","description":"Media business Id"}},"title":"NewMediaForPlaylistV2"},"NewMediaForPlaylistV3":{"type":"object","properties":{"date":{"type":"integer","format":"int64","example":1543302087000,"description":"override server date (if date < server time)"},"itemId":{"type":"string","example":"video:1234","description":"Item business Id"}},"title":"NewMediaForPlaylistV3"},"NewPlaylist":{"type":"object","properties":{"name":{"type":"string","example":"Favorite shows","description":"The playlist name"},"system":{"type":"boolean","description":"To flag the playlist as system"}},"title":"NewPlaylist"},"NewPlaylistWithContent":{"type":"object","properties":{"media_id":{"type":"string","example":"urn:42","description":"The media business id"},"name":{"type":"string","example":"My favorites series","description":"The playlist given name"}},"title":"NewPlaylistWithContent"},"NewPlaylistWithContentV3":{"type":"object","required":["businessId","itemId","name"],"properties":{"businessId":{"type":"string","example":"002ebf12-a125-5ddf-a739-67c3c5d20177","description":"The playlist business id"},"date":{"type":"integer","format":"int64","example":273369600000000,"description":"The item added to playlist timestamp in ms"},"itemId":{"type":"string","example":"urn:42","description":"The item business id"},"name":{"type":"string","example":"My favorites series","description":"The playlist given name"}},"title":"NewPlaylistWithContentV3"},"PartialUpdate":{"type":"object","properties":{"payload":{"$ref":"#/definitions/JsonNode"}},"title":"PartialUpdate"},"PlaylistAttributesV3":{"type":"object","properties":{"name":{"type":"string","example":"Favorite shows","description":"The playlist name"}},"title":"PlaylistAttributesV3"},"PlaylistMetaData":{"type":"object","properties":{"id":{"type":"string","example":"54759eb3c090d83494e2d804","description":"Playlist technical id"},"name":{"type":"string","example":"Favorite shows","description":"The playlist name"},"system":{"type":"boolean","description":"To flag the playlist as system"}},"title":"PlaylistMetaData"},"PlaylistMetaDataV3":{"type":"object","properties":{"businessId":{"type":"string","example":"e7fae142-5c2f-11e9-8647-d663bd873d93","description":"business id shared with the client"},"name":{"type":"string","example":"Favorite shows","description":"The playlist name"},"type":{"type":"string","example":"standard","description":"A playlist type might be standard or watch_later"}},"title":"PlaylistMetaDataV3"},"Profile":{"type":"object","properties":{"birthdate":{"type":"string","example":"1978-08-31","description":"User birthdate (format yyyy-mm-dd)"},"contactEmail":{"type":"string","example":"john.doe@gmail.com","description":"User contact email: by default local login otherwise one of the email for social login (if there is one)"},"displayName":{"type":"string","example":"John Doe","description":"Display name"},"firstName":{"type":"string","example":"Johne","description":"User first name"},"gender":{"type":"string","example":"male","description":"User gender ","enum":["male","female"]},"hasFacebookLogin":{"type":"boolean","example":true,"description":"Indicate if the user has a facebook login"},"hasGoogleLogin":{"type":"boolean","example":true,"description":"Indicate if the user has a google login"},"hasLocalLogin":{"type":"boolean","example":true,"description":"Indicate if the user has a local login"},"hasSocialLogin":{"type":"boolean","example":true,"description":"Indicate if the user has at lease a social login"},"id":{"type":"string","example":42,"description":"User Id"},"language":{"type":"string","example":"en","description":"User langage using 2 letter iso code"},"lastName":{"type":"string","example":"Doe","description":"User last name"},"login":{"type":"string","example":"john.doe@isp.com","description":"User login"},"publicUid":{"type":"string","example":"ebf127a8-5c3f-4612-a8d7-89c61cf68f25","description":"User public Id"},"socialEmails":{"type":"array","example":['john.doe@gmail.com','john.doe@isp.com'],"description":"All social account email the user has","items":{"type":"string"}},"verified":{"type":"boolean","example":true,"description":"Indicate if local login email had been verified"}},"title":"Profile"},"PublicProfile":{"type":"object","properties":{"firstname":{"type":"string"},"lastname":{"type":"string"}},"title":"PublicProfile"},"RetrievedPlaylists":{"type":"object","properties":{"playlists":{"type":"array","items":{"$ref":"#/definitions/PlaylistMetaData"}}},"title":"RetrievedPlaylists"},"RetrievedPlaylistsV3":{"type":"object","properties":{"playlists":{"type":"array","items":{"$ref":"#/definitions/PlaylistMetaDataV3"}}},"title":"RetrievedPlaylistsV3"},"URI":{"type":"object","properties":{"absolute":{"type":"boolean"},"authority":{"type":"string"},"fragment":{"type":"string"},"host":{"type":"string"},"opaque":{"type":"boolean"},"path":{"type":"string"},"port":{"type":"integer","format":"int32"},"query":{"type":"string"},"rawAuthority":{"type":"string"},"rawFragment":{"type":"string"},"rawPath":{"type":"string"},"rawQuery":{"type":"string"},"rawSchemeSpecificPart":{"type":"string"},"rawUserInfo":{"type":"string"},"scheme":{"type":"string"},"schemeSpecificPart":{"type":"string"},"userInfo":{"type":"string"}},"title":"URI"},"URL":{"type":"object","properties":{"authority":{"type":"string"},"content":{"type":"object"},"defaultPort":{"type":"integer","format":"int32"},"file":{"type":"string"},"host":{"type":"string"},"path":{"type":"string"},"port":{"type":"integer","format":"int32"},"protocol":{"type":"string"},"query":{"type":"string"},"ref":{"type":"string"},"userInfo":{"type":"string"}},"title":"URL"},"UpdateProfileData":{"type":"object","properties":{"birthdate":{"type":"string","example":"2018-08-31","description":"User date for birth using yyyy-mm-dd format"},"firstName":{"type":"string","example":"John","description":"User first name"},"gender":{"type":"string","example":"female","description":"A value in [male, female]"},"language":{"type":"string","example":"en","description":"Iso local"},"lastName":{"type":"string","example":"Doe","description":"User last name"}},"title":"UpdateProfileData"}}}