DefinitelyTyped/types/microsoft-live-connect/index.d.ts
Ben Salili-James 3ddcd3ee3e Use gender-neutral pronouns (#39053)
* Use gender-neutral pronouns

* Minor tweaks to comments

* Remove 'their' artifact

* Revert Dojo (failing package)
2019-10-14 08:58:56 -07:00

2340 lines
80 KiB
TypeScript

// Type definitions for Microsoft Live Connect v5.0
// Project: http://msdn.microsoft.com/en-us/library/live/hh243643.aspx
// Definitions by: John Vilk <https://github.com/jvilk>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="winjs" />
/// <reference types="winrt" />
declare namespace Microsoft.Live {
//#region REST Object Information
/**
* Sub object of REST objects that contains information about a user.
*/
interface IUserInfo {
/**
* The name of the user.
*/
name: string;
/**
* The Live ID of the user.
*/
id: string;
}
/**
* Sub object of REST objects that contains information about who the
* item is shared with.
*/
interface ISharedWith {
/**
* A localized string that contains info about who can access the
* item. The options are:
* - People I selected
* - Just me
* - Everyone (public)
* - Friends
* - My friends and their friends
* - People with a link
* The default is Just me.
*/
access: string;
}
/**
* Convenience interface for when you have a bunch of objects of different
* types in a single collection. You discriminate between them using their
* 'type' field.
*/
interface IObject {
/**
* The object's type.
*/
type: string;
}
/**
* Contains a collection of one type of object.
*/
interface IObjectCollection<T> {
/**
* An array container for objects when a collection of objects is
* returned.
*/
data: T[];
}
/**
* The Album object contains info about a user's albums in Microsoft
* SkyDrive. Albums are stored at the root level of a user's SkyDrive
* directory, and can contain combinations of photos, videos, audio, files,
* and folders. The Live Connect REST API supports reading Album objects.
* Use the wl.photos scope to read a user's Album objects. Use the
* wl.skydrive scope to read a user's files. Use the wl.contacts_photos
* scope to read any albums, photos, videos, and audio that other users have
* shared with the user.
*/
interface IAlbum {
/**
* The Album object's ID.
*/
id: string;
/**
* Info about the user who authored the album.
*/
from: IUserInfo;
/**
* The name of the album.
*/
name: string;
/**
* A description of the album, or null if no description is specified.
*/
description: string;
/**
* The resource ID of the parent.
*/
parent_id: string;
/**
* The URL to upload items to the album, hosted in SkyDrive. Requires
* the wl.skydrive scope.
*/
upload_location: string;
/**
* A value that indicates whether this album can be embedded. If this
* album can be embedded, this value is true; otherwise, it is false.
*/
is_embeddable: boolean;
/**
* The total number of items in the album.
*/
count: number;
/**
* A URL of the album, hosted in SkyDrive.
*/
link: string;
/**
* The type of object; in this case, "album".
*/
type: string;
/**
* The object that contains permissions info for the album. Requires the
* wl.skydrive scope.
*/
shared_with: ISharedWith;
/**
* The time, in ISO 8601 format, at which the album was created.
*/
created_time: string;
/**
* The time, in ISO 8601 format, that the system updated the album last.
*/
updated_time: string;
/**
* The time, in ISO 8601 format, that the file was last updated.
*/
client_updated_time: string;
}
/**
* Represents a new album.
*/
interface INewAlbum {
/**
* The name of the album.
*/
name: string;
/**
* A description of the album.
*/
description?: string;
}
/**
* The Audio object contains info about a user's audio in SkyDrive. The Live
* Connect REST API supports creating, reading, updating, and deleting Audio
* objects. Use the wl.skydrive scope to read Audio objects. Use the
* wl.contacts_skydrive scope to read any audio that other users have shared
* with the user. Use the wl.skydrive_update scope to create, update, or
* delete Audio objects.
*/
interface IAudio {
/**
* The Audio object's ID.
*/
id: string;
/**
* Info about the user who uploaded the audio.
*/
from: IUserInfo;
/**
* The name of the audio.
*/
name: string;
/**
* A description of the audio, or null if no description is specified.
*/
description: string;
/**
* The id of the folder in which the audio is currently stored.
*/
parent_id: string;
/**
* The size, in bytes, of the audio.
*/
size: number;
/**
* The URL to use to upload a new audio to overwrite the existing audio.
*/
upload_location: string;
/**
* The number of comments associated with the audio.
*/
comments_count: number;
/**
* A value that indicates whether comments are enabled for the audio. If
* comments can be made, this value is true; otherwise, it is false.
*/
comments_enabled: boolean;
/**
* A value that indicates whether this audio can be embedded. If this
* audio can be embedded, this value is true; otherwise, it is false.
*/
is_embeddable: boolean;
/**
* The URL to use to download the audio from SkyDrive.
* Warning
* This value is not persistent. Use it immediately after making the
* request, and avoid caching.
*/
source: string;
/**
* A URL to view the item on SkyDrive.
*/
link: string;
/**
* The type of object; in this case, "audio".
*/
type: string;
/**
* The audio's title.
*/
title: string;
/**
* The audio's artist name.
*/
artist: string;
/**
* The audio's album name.
*/
album: string;
/**
* The artist name of the audio's album.
*/
album_artist: string;
/**
* The audio's genre.
*/
genre: string;
/**
* The audio's playing time, in milliseconds.
*/
duration: number;
/**
* A URL to view the audio's picture on SkyDrive.
*/
picture: string;
/**
* The object that contains permission info.
*/
shared_with: ISharedWith;
/**
* The time, in ISO 8601 format, at which the audio was created.
*/
created_time: string;
/**
* The time, in ISO 8601 format, at which the audio was last updated.
*/
updated_time: string;
}
/**
* Represents a new audio item.
*/
interface INewAudio {
/**
* The name of the audio.
*/
name: string;
/**
* A description of the audio.
*/
description?: string;
/**
* The audio's title.
*/
title?: string;
/**
* The audio's artist name.
*/
artist?: string;
/**
* The audio's album name.
*/
album?: string;
/**
* The artist name of the audio's album.
*/
album_artist?: string;
/**
* The audio's genre.
*/
genre?: string;
}
/**
* The Calendar object contains info about a user's Outlook.com calendar.
* The Live Connect REST API supports creating, reading, updating, and
* deleting calendars. Use the wl.calendars scope to read a user's Calendar
* objects. Use the wl.calendars_update scope to create Calendar objects for
* a user. Use the wl.contacts_calendars scope to read a user's friends'
* Calendar objects.
*/
interface ICalendar {
/**
* The Calendar object's ID.
*/
id: string;
/**
* Name of the calendar.
*/
name: string;
/**
* Description of the calendar.
*/
description: string;
/**
* The time, in ISO 8601 format, at which the calendar was created.
*/
created_time: string;
/**
* The time, in ISO 8601 format, that the calendar was last updated.
*/
updated_time: string;
/**
* Info about the user who owns the calendar.
*/
from: IUserInfo;
/**
* A value that indicates whether this calendar is the default calendar.
* If this calendar is the default calendar, this value is true;
* otherwise, it is false.
*/
is_default: boolean;
/**
* A public subscription URL with which Live Connect will synchronize
* properties and events periodically for this calendar. A NULL value
* indicates that this is not a subscribed calendar.
*/
subscription_location: string;
/**
* Role and permissions that are granted to the user for the calendar.
* The possible values are:
* - free_busy: The user can see only free/busy info.
* - limited_details: The user can see a subset of all details.
* - read: The user can only read the content of the calendar events.
* - read_write: The user can read and write calendar and events.
* - co_owner: The user is co-owner of this calendar.
* - owner: The user is the owner of this calendar.
*/
permissions: string;
}
/**
* Represents a new calendar item.
*/
interface INewCalendar {
/**
* Name of the calendar.
*/
name: string;
/**
* Description of the calendar.
*/
description?: string;
}
/**
* Represents a request to create a new calendar that subscribes to the
* given iCal calendar.
*/
interface INewCalendarSubscription {
/**
* Name of the calendar.
*/
name: string;
/**
* A public subscription URL with which Live Connect will synchronize
* properties and events periodically for this calendar.
*/
subscription_location: string;
}
/**
* The Comment object contains info about comments that are associated with
* a photo, audio, or video on SkyDrive. The Live Connect REST API supports
* reading Comment objects. Use the wl.photos scope to read Comment objects.
* Use the wl.contacts_photos scope to read the Comment objects that are
* associated with any albums, photos, and videos that other users have
* shared with the user.
*/
interface IComment {
/**
* The Comment object's id.
*/
id: string;
/**
* Info about the user who created the comment.
*/
from: IUserInfo;
/**
* The text of the comment. The maximum length of a comment is 10,000
* characters.
*/
message: string;
/**
* The time, in ISO 8601 format, at which the comment was created.
*/
created_time: string;
}
/**
* Represents a new comment.
*/
interface INewComment {
/**
* The text of the comment. The maximum length of a comment is 10,000
* characters.
*/
message: string;
}
/**
* The Contact object contains info about a user's Outlook.com contacts. The
* Live Connect REST API supports reading Contact objects.
*/
interface IContact {
/**
* The Contact object's ID.
*/
id: string;
/**
* The contact's first name, or null if no first name is specified.
*/
first_name: string;
/**
* The contact's last name, or null if no last name is specified.
*/
last_name: string;
/**
* The contact's full name, formatted for location.
*/
name: string;
/**
* A value that indicates whether the contact is set as a friend. If the
* contact is a friend, this value is true; otherwise, it is false.
*/
is_friend: boolean;
/**
* A value that indicates whether the contact is set as a favorite
* contact. If the contact is a favorite, this value is true; otherwise,
* it is false.
*/
is_favorite: boolean;
/**
* The contact's ID, if the contact has one. If not, this value is null.
*/
user_id: string;
/**
* An array containing a SHA-256 hash for each of the contact's email
* addresses. For more info, see Friend finder.
*/
email_hashes: string[];
/**
* The time, in ISO 8601 format, at which the user last updated the
* data.
*/
updated_time: string;
/**
* The day of the contact's birth date, or null if no birth date is
* specified.
*/
birth_day: number;
/**
* The month of the contact's birth date, or null if no birth date is
* specified.
*/
birth_month: number;
}
/**
* Represents a new contact.
*/
interface INewContact {
/**
* The contact's first name.
*/
first_name?: string;
/**
* The contact's last name.
*/
last_name?: string;
/**
* An array that contains the contact's work info.
*/
work?: {
employer: {
name: string;
}
}[];
/**
* The contact's email addresses.
*/
emails?: {
/**
* The contact's preferred email address.
*/
preferred?: string;
/**
* The contact's personal email address.
*/
personal?: string;
/**
* The contact's business email address.
*/
business?: string;
/**
* The contact's "alternate" email address.
*/
other?: string;
};
}
/**
* The Error object contains info about an error that is returned by the
* Live Connect APIs.
*/
interface IError {
/**
* Info about the error.
*/
error: {
/**
* The error code.
*/
code: string;
/**
* The error message.
*/
message: string;
};
}
/**
* The Event object contains info about events on a user's Outlook.com
* calendars. The Live Connect REST API supports creating Event objects. Use
* the wl.events_create scope to create Event objects on the user's default
* calendar only. Use the wl.calendars scope to read Event objects on the
* user's calendars. Use wl.calendars_update to create Event objects on any
* of the user's calendars. Use the wl.contacts_calendars scope to read
* Event objects from the user's friend's calendars.
*/
interface IEvent {
/**
* The ID of the event.
*/
id: string;
/**
* The name of the event, with a maximum length of 255 characters. This
* structure is required.
*/
name: string;
/**
* The time, in ISO 8601 format, at which the event was created.
*/
created_time: string;
/**
* The time, in ISO 8601 format, at which the event was updated. This
* structure is visible only in the Event object that is returned if the
* event was successfully created.
*/
updated_time: string;
/**
* A description of the event, with a maximum length of 32,768
* characters. This structure is required.
*/
description: string;
/**
* The ID of the calendar that contains the event.
*/
calendar_id: string;
/**
* The object that contains the name and ID of the organizer.
*/
from: IUserInfo;
/**
* The start time, in ISO 8601 format, of the event. When the event is
* being read, the time will be the user's local time, in ISO 8601
* format.
*/
start_time: string;
/**
* The end time, in ISO 8601 format, of the event. If no end time is
* specified, the default value is 30 minutes after start_time. This
* structure is optional when creating an event. When the event is being
* read, the time will be the user's local time, in ISO 8601 format.
*/
end_time: string;
/**
* The name of the location at which the event will take place. The
* maximum length is 1,000 characters.
*/
location: string;
/**
* A value that specifies whether the event is an all-day event. If the
* event is an all-day event, this value is true; otherwise, it is
* false. If this structure is missing, the default value is false.
*/
is_all_day_event: boolean;
/**
* A value that specifies whether the event is recurring. If the event
* is recurring, this value is true; otherwise, it is false.
*/
is_recurrent: boolean;
/**
* The text description of the recurrence pattern, for example, "Occurs
* every week on Tuesday". The value is Null if this is not a recurrent
* event.
*/
recurrence: string;
/**
* The time, in minutes, before the event for the reminder alarm.
*/
reminder_time: number;
/**
* The user's availability status for the event. Valid values are:
* - free
* - busy
* - tentative
* - out_of_office
* @default "free"
*/
availability: string;
/**
* A value that specifies whether the event is publicly visible. Valid
* values are:
* - public the event is visible to anyone who can view the calendar.
* - private the event is visible only to the event owner.
* @default "public"
*/
visibility: string;
}
/**
* Represents a new event.
*/
interface INewEvent {
/**
* The name of the event, with a maximum length of 255 characters. This
* structure is required.
*/
name: string;
/**
* A description of the event, with a maximum length of 32,768
* characters. This structure is required.
*/
description: string;
/**
* The start time of the event. When the event is being read, the time
* will be the user's local time, in ISO 8601 format.
* Can be a date string, or a Date object.
*/
start_time: any;
/**
* The end time of the event. If no end time is specified, the default
* value is 30 minutes after start_time. This structure is optional when
* creating an event. When the event is being read, the time will be the
* user's local time, in ISO 8601 format.
* Can be a date string, or a Date object.
*/
end_time?: any;
/**
* The name of the location at which the event will take place. The
* maximum length is 1,000 characters.
*/
location?: string;
/**
* A value that specifies whether the event is an all-day event. If the
* event is an all-day event, this value is true; otherwise, it is
* false. If this structure is missing, the default value is false.
*/
is_all_day_event?: boolean;
/**
* The time, in minutes, before the event for the reminder alarm.
*/
reminder_time?: number;
/**
* The user's availability status for the event. Valid values are:
* - free
* - busy
* - tentative
* - out_of_office
* @default "free"
*/
availability?: string;
/**
* A value that specifies whether the event is publicly visible. Valid
* values are:
* - public the event is visible to anyone who can view the calendar.
* - private the event is visible only to the event owner.
* @default "public"
*/
visibility?: string;
}
/**
* Response received after successfully creating a new event.
*/
interface INewEventResponse {
/**
* The name of the event, with a maximum length of 255 characters. This
* structure is required.
*/
name: string;
/**
* A description of the event, with a maximum length of 32,768
* characters. This structure is required.
*/
description: string;
/**
* The start time, in ISO 8601 format, of the event. When the event is
* being read, the time will be the user's local time, in ISO 8601
* format.
*/
start_time: string;
/**
* The end time, in ISO 8601 format, of the event. If no end time is
* specified, the default value is 30 minutes after start_time. This
* structure is optional when creating an event. When the event is being
* read, the time will be the user's local time, in ISO 8601 format.
*/
end_time: string;
/**
* The name of the location at which the event will take place. The
* maximum length is 1,000 characters.
*/
location: string;
/**
* A value that specifies whether the event is an all-day event. If the
* event is an all-day event, this value is true; otherwise, it is
* false. If this structure is missing, the default value is false.
*/
is_all_day_event: boolean;
/**
* A value that specifies whether the event is recurring. If the event
* is recurring, this value is true; otherwise, it is false.
*/
is_recurrent: boolean;
/**
* The text description of the recurrence pattern, for example, "Occurs
* every week on Tuesday". The value is Null if this is not a recurrent
* event.
*/
recurrence: string;
/**
* The time, in minutes, before the event for the reminder alarm.
*/
reminder_time: number;
/**
* The user's availability status for the event. Valid values are:
* - free
* - busy
* - tentative
* - out_of_office
* @default "free"
*/
availability: string;
/**
* A value that specifies whether the event is publicly visible. Valid
* values are:
* - public the event is visible to anyone who can view the calendar.
* - private the event is visible only to the event owner.
* @default "public"
*/
visibility: string;
/**
* The time, in ISO 8601 format, at which the event was updated. This
* structure is visible only in the Event object that is returned if the
* event was successfully created.
*/
updated_time: string;
}
/**
* The File object contains info about a user's files in SkyDrive. The Live
* Connect REST API supports creating, reading, updating, and deleting File
* objects. Use the wl.skydrive scope to read File objects. Use the
* wl.contacts_skydrive scope to read any files that other users have shared
* with the user. Use the wl.skydrive_update scope to create, update, or
* delete File objects.
*/
interface IFile {
/**
* The File object's ID.
*/
id: string;
/**
* Info about the user who uploaded the file.
*/
from: IUserInfo;
/**
* The name of the file.
*/
name: string;
/**
* A description of the file, or null if no description is specified.
*/
description: string;
/**
* The ID of the folder the file is currently stored in.
*/
parent_id: string;
/**
* The size, in bytes, of the file.
*/
size: number;
/**
* The URL to upload file content hosted in SkyDrive.
* Note: This structure is not available if the file is an Microsoft
* Office OneNote notebook.
*/
upload_location: string;
/**
* The number of comments that are associated with the file.
*/
comments_count: number;
/**
* A value that indicates whether comments are enabled for the file. If
* comments can be made, this value is true; otherwise, it is false.
*/
comments_enabled: boolean;
/**
* A value that indicates whether this file can be embedded. If this
* file can be embedded, this value is true; otherwise, it is false.
*/
is_embeddable: boolean;
/**
* The URL to use to download the file from SkyDrive.
* Warning: This value is not persistent. Use it immediately after
* making the request, and avoid caching.
* Note: This structure is not available if the file is an Office
* OneNote notebook.
*/
source: string;
/**
* A URL to view the item on SkyDrive.
*/
link: string;
/**
* The type of object; in this case, "file".
* Note: If the file is a Office OneNote notebook, the type structure is
* set to "notebook".
*/
type: string;
/**
* Object that contains permission info.
*/
shared_with: ISharedWith;
/**
* The time, in ISO 8601 format, at which the file was created.
*/
created_time: string;
/**
* The time, in ISO 8601 format, that the system updated the file last.
*/
updated_time: string;
/**
* The time, in ISO 8601 format, that the client machine updated the
* file last.
*/
client_updated_time: string;
/**
* Sorts the items to specify the following criteria: updated, name,
* size, or default.
*/
sort_by: string;
}
/**
* Success response to a new file creation request.
*/
interface INewFileResponse {
/**
* ID of the new item.
*/
id: string;
/**
* The file's name and file extension.
*/
name: string;
/**
* URL where the item can be downloaded from.
*/
source: string;
}
/**
* Returns when you perform a GET request to /FILE_ID/content.
*/
interface IFileDownloadLink {
/**
* A URL download link for the file.
*/
location: string;
}
/**
* The Folder object contains info about a user's folders in SkyDrive.
* Folders can contain combinations of photos, videos, audio, and
* subfolders. The Live Connect REST API supports reading Folder objects.
* Use the wl.photos scope to read Folder objects. Use the
* wl.contacts_photos scope to read any albums, photos, videos, and audio
* that other users have shared with the user.
*/
interface IFolder {
/**
* The Folder object's ID.
*/
id: string;
/**
* Info about the user who created the folder.
*/
from: IUserInfo;
/**
* The name of the folder.
*/
name: string;
/**
* A description of the folder, or null if no description is specified.
*/
description: string;
/**
* The total number of items in the folder.
*/
count: number;
/**
* The URL of the folder, hosted in SkyDrive.
*/
link: string;
/**
* The resource ID of the parent.
*/
parent_id: string;
/**
* The URL to upload items to the folder hosted in SkyDrive. Requires
* the wl.skydrive scope.
*/
upload_location: string;
/**
* A value that indicates whether this folder can be embedded. If this
* folder can be embedded, this value is true; otherwise, it is false.
*/
is_embeddable: boolean;
/**
* The type of object; in this case, "folder".
*/
type: string;
/**
* The time, in ISO 8601 format, at which the folder was created.
*/
created_time: string;
/**
* The time, in ISO 8601 format, that the system updated the file last.
*/
updated_time: string;
/**
* The time, in ISO 8601 format, that the client machine updated the
* file last.
*/
client_updated_time: string;
/**
* Permissions info for the folder. Requires the wl.skydrive scope.
*/
shared_with: ISharedWith;
/**
* Sorts the items to specify the following criteria: updated, name,
* size, or default.
*/
sort_by: string;
}
/**
* Represents a new folder.
*/
interface INewFolder {
/**
* The name of the folder.
*/
name: string;
/**
* A description of the folder.
*/
description?: string;
/**
* Sorts the items to specify the following criteria: updated, name,
* size, or default.
*/
sort_by?: string;
}
/**
* The Friend object contains info about a user's friends. A Friend object
* represents a user's contact whose is_friend value is set to true. The
* Live Connect REST API supports reading Friend objects.
*/
interface IFriend {
/**
* The friend's ID.
*/
id: string;
/**
* The friend's full name, formatted for locale.
*/
name: string;
}
/**
* The Permissions object contains a list of scopes, showing those scopes to
* which the user has consented. The response body contains a JSON object
* that lists all consented scopes as a name/value pair. Each scope to which
* the user consented is present as a key.
*/
interface IPermissions {
[scope: string]: number;
}
/**
* Information about an image.
*/
interface IImageInfo {
/**
* The height, in pixels, of this image of this particular size.
*/
height: number;
/**
* The width, in pixels, of this image of this particular size.
*/
width: number;
/**
* The width, in pixels, of this image of this particular size.
*/
source: string;
/**
* The type of this image of this particular size. Valid values are:
* full (maximum size: 2048 x 2048 pixels)
* - normal (maximum size 800 x 800 pixels)
* - album (maximum size 176 x 176 pixels)
* - small (maximum size 96 x 96 pixels)
*/
type: string;
}
/**
* Represents location information.
*/
interface ILocation {
/**
* The latitude portion of the location, expressed as positive (north)
* or negative (south) degrees relative to the equator.
*/
latitude: number;
/**
* The longitude portion of the location expressed as positive (east) or
* negative (west) degrees relative to the Prime Meridian.
*/
longitude: number;
/**
* The altitude portion of the location, expressed as positive (above)
* or negative (below) values relative to sea level, in units of
* measurement as determined by the camera.
*/
altitude: number;
}
/**
* The Photo object contains info about a user's photos on SkyDrive. The
* Live Connect REST API supports creating, reading, updating, and deleting
* Photo objects. Use the wl.photos scope to read Photo objects. Use the
* wl.contacts_photos scope to read any albums, photos, videos, and audio
* that other users have shared with the user. Use the wl.skydrive_update
* scope to create, update, or delete Photo objects.
*/
interface IPhoto {
/**
* The Photo object's ID.
*/
id: string;
/**
* Info about the user who uploaded the photo.
*/
from: IUserInfo;
/**
* The file name of the photo.
*/
name: string;
/**
* A description of the photo, or null if no description is specified.
*/
description: string;
/**
* The ID of the folder where the item is stored.
*/
parent_id: string;
/**
* The size, in bytes, of the photo.
*/
size: number;
/**
* The number of comments associated with the photo.
*/
comments_count: number;
/**
* A value that indicates whether comments are enabled for the photo. If
* comments can be made, this value is true; otherwise, it is false.
*/
comments_enabled: boolean;
/**
* The number of tags on the photo.
*/
tags_count: number;
/**
* A value that indicates whether tags are enabled for the photo. If
* users can tag the photo, this value is true; otherwise, it is false.
*/
tags_enabled: boolean;
/**
* A value that indicates whether this photo can be embedded. If this
* photo can be embedded, this value is true; otherwise, it is false.
*/
is_embeddable: boolean;
/**
* A URL of the photo's picture.
*/
picture: string;
/**
* The download URL for the photo.
* Warning: This value is not persistent. Use it immediately after
* making the request, and avoid caching.
*/
source: string;
/**
* The URL to upload photo content hosted in SkyDrive. This value is
* returned only if the wl.skydrive scope is present.
*/
upload_location: string;
/**
* Info about various sizes of the photo.
*/
images: IImageInfo[];
/**
* A URL of the photo, hosted in SkyDrive.
*/
link: string;
/**
* The date, in ISO 8601 format, on which the photo was taken, or null
* if no date is specified.
*/
when_taken: string;
/**
* The height, in pixels, of the photo.
*/
height: number;
/**
* The width, in pixels, of the photo.
*/
width: number;
/**
* The type of object; in this case, "photo".
*/
type: string;
/**
* The location where the photo was taken.
* Note: The location object is not available for shared photos.
*/
location: ILocation;
/**
* The manufacturer of the camera that took the photo.
*/
camera_make: string;
/**
* The brand and model number of the camera that took the photo.
*/
camera_model: string;
/**
* The f-number that the photo was taken at.
*/
focal_ratio: number;
/**
* The focal length that the photo was taken at, typically expressed in
* millimeters for newer lenses.
*/
focal_length: number;
/**
* The numerator of the shutter speed (for example, the "1" in "1/15 s")
* that the photo was taken at.
*/
exposure_numerator: number;
/**
* The denominator of the shutter speed (for example, the "15" in "1/15
* s") that the photo was taken at.
*/
exposure_denominator: number;
/**
* The object that contains permissions info for the photo.
*/
shared_with: ISharedWith;
/**
* The time, in ISO 8601 format, at which the photo was created.
*/
created_time: string;
/**
* The time, in ISO 8601 format, at which the photo was last updated.
*/
updated_time: string;
}
/**
* The Search object contains info about the objects found in a user's
* SkyDrive that match the search query. See Search query parameters for
* info about formatting a search query request.
*/
interface ISearch {
/**
* An array of file and folder objects found in a user's SkyDrive that
* match the search query.
*/
data: IObject[];
/**
* The path strings that reference the next and previous sets in a
* paginated response.
*/
paging?: {
/**
* Path string for the next set of results.
*/
next?: string;
/**
* Path string for the previous set of results.
*/
previous?: string;
};
}
/**
* The Tag object contains info about tags that are associated with a photo
* or a video on SkyDrive. The Live Connect REST API supports reading Tag
* objects. Use the wl.photos, and wl.skydrive scopes to read Tag objects.
* Use the wl.contacts_photos and wl.contacts_skydrive scopes to read the
* Tag objects that are associated with any photos that other users have
* shared with the user.
*/
interface ITag {
/**
* The Tag object's ID.
*/
id: string;
/**
* The user object for the tagged person.
*/
user: IUserInfo;
/**
* The center of the tag's horizontal position, measured as a
* floating-point percentage from 0 to 100, from the left edge of the
* photo. This value is not returned for Video objects.
*/
x: number;
/**
* The center of the tag's vertical position, measured as a
* floating-point percentage from 0 to 100, from the top edge of the
* photo. This value is not returned for Video objects.
*/
y: number;
/**
* The time, in ISO 8601 format, at which the tag was created.
*/
created_time: string;
}
/**
* Contains work information for one employer.
*/
interface IWorkInfo {
/**
* Info about the user's employer.
*/
employer: {
/**
* The name of the user's employer, or null if the employer's name
* is not specified.
*/
name: string;
};
/**
* Info about the user's work position.
*/
position: {
/**
* The name of the user's work position, or null if the name of the
* work position is not specified.
*/
name: string;
};
}
/**
* Information about one postal address.
*/
interface IPostalAddress {
/**
* The street address, or null if one is not specified.
*/
street: string;
/**
* The second line of the street address, or null if one is not
* specified.
*/
street_2: string;
/**
* The city of the address, or null if one is not specified.
*/
city: string;
/**
* The state of the address, or null if one is not specified.
*/
state: string;
/**
* The postal code of the address, or null if one is not specified.
*/
postal_code: string;
/**
* The region of the address, or null if one is not specified.
*/
region: string;
}
/**
* The User object contains info about a user. The Live Connect REST API
* supports reading User objects.
*/
interface IUser {
/**
* The user's ID.
*/
id: string;
/**
* The user's full name.
*/
name: string;
/**
* The user's first name.
*/
first_name: string;
/**
* The user's last name.
*/
last_name: string;
/**
* The user's gender, or null if no gender is specified.
*/
gender: string;
/**
* The URL of the user's profile page.
*/
link: string;
/**
* The day of the user's birth date, or null if no birth date is
* specified.
*/
birth_day: number;
/**
* The month of the user's birth date, or null if no birth date is
* specified.
*/
birth_month: number;
/**
* The year of the user's birth date, or null if no birth date is
* specified.
*/
birth_year: number;
/**
* An array that contains the user's work info.
*/
work: IWorkInfo[];
/**
* The user's email addresses.
*/
emails: {
/**
* The user's preferred email address, or null if one is not
* specified.
*/
preferred: string;
/**
* The email address that is associated with the account.
*/
account: string;
/**
* The user's personal email address, or null if one is not
* specified.
*/
personal: string;
/**
* The user's business email address, or null if one is not
* specified.
*/
business: string;
/**
* The user's "alternate" email address, or null if one is not
* specified.
*/
other: string;
};
/**
* The user's postal addresses.
*/
addresses: {
/**
* The user's personal postal address.
*/
personal: IPostalAddress;
/**
* The user's business postal address.
*/
business: IPostalAddress;
};
/**
* The user's phone numbers.
*/
phones: {
/**
* The user's personal phone number, or null if one is not
* specified.
*/
personal: string;
/**
* The user's business phone number, or null if one is not
* specified.
*/
business: string;
/**
* The user's mobile phone number, or null if one is not specified.
*/
mobile: string;
};
/**
* The user's locale code.
*/
locale: string;
/**
* The time, in ISO 8601 format, at which the user last updated the
* object.
*/
updated_time: string;
}
/**
* The Video object contains info about a user's videos on SkyDrive. The
* Live Connect REST API supports creating, reading, updating, and deleting
* Video objects. Use the wl.photos scope to read Video objects. Use the
* wl.contacts_photos scope to read albums, photos, and videos that other
* users have shared with the user. Use the wl.skydrive_update scope to
* create, update, or delete Video objects.
*/
interface IVideo {
/**
* The Video object's ID.
*/
id: string;
/**
* Info about the user who uploaded the video.
*/
from: IUserInfo;
/**
* The file name of the video.
*/
name: string;
/**
* A description of the video, or null if no description is specified.
*/
description: string;
/**
* The id of the folder where the item is stored.
*/
parent_id: string;
/**
* The size, in bytes, of the video.
*/
size: number;
/**
* The number of comments that are associated with the video.
*/
comments_count: number;
/**
* A value that indicates whether comments are enabled for the video. If
* comments can be made, this value is true; otherwise, it is false.
*/
comments_enabled: boolean;
/**
* The number of tags on the video.
*/
tags_count: number;
/**
* A value that indicates whether tags are enabled for the video. If
* tags can be set, this value is true; otherwise, it is false.
*/
tags_enabled: boolean;
/**
* A value that indicates whether this video can be embedded. If this
* video can be embedded, this value is true; otherwise, it is false.
*/
is_embeddable: boolean;
/**
* A URL of a picture that represents the video.
*/
picture: string;
/**
* The download URL for the video.
* Warning: This value is not persistent. Use it immediately after
* making the request, and avoid caching.
*/
source: string;
/**
* The URL to upload video content, hosted in SkyDrive. This value is
* returned only if the wl.skydrive scope is present.
*/
upload_location: string;
/**
* A URL of the video, hosted in SkyDrive.
*/
link: string;
/**
* The height, in pixels, of the video.
*/
height: number;
/**
* The width, in pixels, of the video.
*/
width: number;
/**
* The duration, in milliseconds, of the video run time.
*/
duration: number;
/**
* The bit rate, in bits per second, of the video.
*/
bitrate: number;
/**
* The type of object; in this case, "video".
*/
type: string;
/**
* The object that contains permission info.
*/
shared_with: ISharedWith;
/**
* The time, in ISO 8601 format, at which the video was created.
*/
created_time: string;
/**
* The time, in ISO 8601 format, at which the video was last updated.
*/
updated_time: string;
}
//#endregion REST Object Information
//#region API Properties Interfaces
/**
* 'Properties' object passed into the WL.api method.
*/
interface IAPIProperties {
/**
* Contains the path to the REST API object. For information on
* specifying paths for REST objects, see REST reference.
* http://msdn.microsoft.com/en-us/library/live/hh243648.aspx
*/
path: string;
/**
* An HTTP method that specifies the action required for the API call.
* These actions are standard REST API actions: "COPY", "GET", "MOVE",
* "PUT", "POST", and "DELETE".
* @default "GET"
*/
method?: string;
/**
* A JSON object that specifies the REST API request body. The body
* property is used only for "POST" and "PUT" requests.
*/
body?: any;
}
/**
* 'Properties' object passed into the WL.backgroundDownload method.
*/
interface IBackgroundDownloadProperties {
/**
* The path to the file to download. For information on specifying paths
* for REST objects, see REST reference.
* http://msdn.microsoft.com/en-us/library/live/hh243648.aspx
*/
path: string;
/**
* The file output object to which the downloaded file data is written.
*/
file_output?: Windows.Storage.StorageFile;
}
/**
* 'Properties' object passed into the WL.backgroundUpload method.
*/
interface IBackgroundUploadProperties {
/**
* The path to the file to upload.
*/
path: string;
/**
* The name of the file to upload.
*/
file_name?: string;
/**
* The file input object to read the file from. Can be a
* Windows.Storage.StorageFile or an IFile.
*/
file_input?: any;
/**
* The file input stream to read the file from.
*/
stream_input?: Windows.Storage.Streams.IInputStream;
/**
* Indicates whether the uploaded file should overwrite an existing
* copy. Specify "true" to overwrite, "false" to not overwrite and for
* the WL.backgroundUpload method call to fail, or "rename" to not
* overwrite and enable SkyDrive to assign a new name to the uploaded
* file.
* @default "false".
*/
overwrite?: string;
}
/**
* 'Properties' object passed into the WL.download method.
*/
interface IDownloadProperties {
/**
* The path to the file to download. For information on specifying paths
* for REST objects, see REST reference.
* http://msdn.microsoft.com/en-us/library/live/hh243648.aspx
*/
path: string;
}
/**
* 'Properties' object passed into the WL.fileDialog method.
*/
interface IFileDialogProperties {
/**
* Specifies the type of SkyDrive file picker to display. Specify "open"
* to display the download version of the file picker. Specify "save"
* to display the upload version of the file picker.
*/
mode: string;
/**
* Specify only if the mode property is set to "open". Specifies how
* many files the user can select to download. Specify "single" for a
* single file. Specify "multi" for multiple files.
* @default "single"
*/
select?: string;
/**
* The color pallette to use for the file picker. Specify "white",
* "grey", or "transparent".
* @default "white"
*/
lightbox?: string;
}
/**
* 'Properties' object passed into the WL.init method.
*/
interface IInitProperties {
/**
* Web apps: Required.
* Specifies your app's OAuth client ID for web apps.
*
* Windows Store apps using JavaScript: not needed.
*/
client_id?: string;
/**
* Contains the default redirect URI to be used for OAuth
* authentication. For web apps, the OAuth server redirects to this URI
* during the OAuth flow.
*
* For Windows Store apps using JavaScript, specifying this value will
* enable the library to return the authentication token.
*/
redirect_uri?: string;
/**
* The scope values used to determine which portions of user data the
* app has access to, if the user consents.
*
* For a single scope, use this format: scope: "wl.signin". For multiple
* scopes, use this format: scope: ["wl.signin", "wl.basic"].
*/
scope?: any;
/**
* If set to "true", the library logs error info to the web browser
* console and notifies your app by means of the wl.log event.
* @default true
*/
logging?: boolean;
/**
* Web apps: optional.
* Windows Store apps using JavaScript: not applicable.
* If set to "true", the library attempts to retrieve the user's sign-in
* status from Live Connect.
* @default true
*/
status?: boolean;
/**
* Web apps: optional.
* Windows Store apps using JavaScript: not applicable.
* Specifies the OAuth response type value. If set to "token", the
* client receives the access token directly. If set to "code", the
* client receives an authorization code, and the app server that serves
* the redirect_uri page should retrieve the access_token from the OAuth
* server by using the authorization code and client secret.
*
* You can only set response_type to "code" for web apps.
* @default "token"
*/
response_type?: string;
/**
* Web apps: optional.
* Windows Store apps using JavaScript: not applicable.
* If set to "true", the library specifies a secure attribute when
* writing a cookie on an HTTPS page.
* @default "false"
*/
secure_cookie?: string;
}
/**
* 'Properties' object passed into the WL.login method.
*/
interface ILoginProperties {
/**
* This parameter only applies to web apps.
* Contains the redirect URI to be used for OAuth authentication. This
* value overrides the default redirect URI that is provided in the call
* to WL.init.
*/
redirect_uri?: string;
/**
* Specifies the scopes to which the user who is signing in consents.
*
* For a single scope, use this format: scope: "wl.signin". For multiple
* scopes, use this format: scope: ["wl.signin", "wl.basic"].
*
* If no scope is provided, the scope value of WL.init is used. If no
* scope is provided in WL.init or WL.login, WL.login returns an error.
*
* Note WL.login can request the "wl.offline_access" scope, but it
* requires a server-side implementation, and the WL.init function must
* set its response_type property to "code". For more info, see
* Server-side scenarios.
* http://msdn.microsoft.com/en-us/library/live/hh243649.aspx
*/
scope: any;
/**
* Windows Store apps using JavaScript: not applicable.
* Web apps: Optional. If the WL.init function's response_type object is
* set to "code" and the app uses server-flow authentication, the state
* object here can be used to track the web app's calling state on the
* web app server side. For more info, see the description of the state
* query parameter in the Server-side scenarios topic's "Getting an
* authorization code" section.
* http://msdn.microsoft.com/en-us/library/live/hh243649.aspx
*/
state?: string;
}
/**
* 'Properties' object passed into the WL.ui method.
*/
interface IUIProperties {
/**
* Specifies the type of button to display. Specify "signin" to display
* the Live Connect sign-in button. Specify "skydrivepicker" to display
* the SkyDrive button.
*/
name: string;
/**
* The value of the id attribute of the <div> tag to display the button
* in.
*/
element: string;
/**
* Windows Store apps using JavaScript: not applicable.
* Web apps: Optional. If the name property is set to "signin", the
* WL.init function's response_type property is set to "code", and the
* app uses server-flow authentication, the state object here can be
* used to track the web app's calling state on the web app server side.
* For more info, see the description of the state query parameter in
* the Server-side scenarios topic's "Getting an authorization code"
* section.
* http://msdn.microsoft.com/en-us/library/live/hh243649.aspx
*/
state?: string;
}
/**
* 'Properties' object passed into the WL.ui method when 'name' is set to
* 'skydrivepicker'.
*/
interface ISkyDrivePickerProperies extends IUIProperties {
/**
* The type of SkyDrive file picker button to display. Specify "save" to
* display the upload button. Specify "open" to display the download
* button.
*/
mode: string;
/**
* Required if the mode property is set to "open". Specifies how many
* files the user can select to download. Specify "single" for a single
* file. Specify "multi" for multiple files.
* @default "single"
*/
select?: string;
/**
* Defines the color pallette used for the file picker button. Valid
* values are "white" and "blue".
* @default "white"
*/
theme?: string;
/**
* Defines the color pallette used for the file picker dialog box. Valid
* values are "white", "gray", and "transparent".
* @default "white"
*/
lightbox?: string;
/**
* If the mode property is set to "save", specifies the function to call
* after the user clicks either Save or Cancel in the file picker. If
* the mode property is set to "open", specifies the function to call
* after the user clicks either Open or Cancel in the file picker.
*/
onselected?: Function;
/**
* Specifies the function to call if the selected files cannot be
* successfully uploaded or downloaded.
*/
onerror?: Function;
}
/**
* 'Properties' object passed into the WL.ui method when 'name' is set to
* 'signin'.
*/
interface ISignInProperties extends IUIProperties {
/**
* Defines the brand, or type of icon, to be used with the Live Connect
* sign-in button.
* @default "windows"
*/
brand?: string;
/**
* Defines the color pallette used for the sign-in button. For Windows
* Store apps using JavaScript, valid values are "dark" and "light".
* For web apps, valid values are "blue" and "white".
*/
theme?: string;
/**
* Defines the type of button.
* @default "signin"
*/
type?: string;
/**
* If the value of the type property is set to "custom", this value
* specifies the sign-in text to be displayed in the button.
*/
sign_in_text?: string;
/**
* If the value of the type property is "custom", this value specifies
* the sign-out text to be displayed in the button.
*/
sign_out_text?: string;
/**
* Specifies the function to call after the user completes the sign-in
* process.
*/
onloggedin?: Function;
/**
* Specifies the function to call after the user completes the sign-out
* process.
*/
onloggedout?: Function;
/**
* Specifies the function to call whenever there is any error while the
* sign-in control is initializing or while the user is signing in.
*/
onerror?: Function;
}
/**
* 'Properties' object passed into the WL.upload method.
*/
interface IUploadProperties {
/**
* The path to the file to upload.
*/
path: string;
/**
* The id attribute of the <input> tag containing info about the file to
* upload.
*/
element: string;
/**
* Indicates whether the uploaded file should overwrite an existing
* copy. Specify true or "true" to overwrite, false or "false" to not
* overwrite and for the WL.upload method call to fail, or "rename" to
* not overwrite and enable SkyDrive to assign a new name to the
* uploaded file.
* @default "false"
*/
overwrite?: string;
}
//#endregion API Properties Interfaces
/**
* Represents the user's session.
*/
interface ISession {
/**
* The user's access token.
*/
access_token: string;
/**
* The authentication token.
*/
authentication_token: string;
/**
* A list of scopes that the app has requested and that the user has
* consented to.
*
* Note: This property is not available for Windows Store apps using
* JavaScript.
*/
scope?: string[];
/**
* The amount of time remaining, in seconds, until the user's access
* token expires.
*
* Note: This property is not available for Windows Store apps using
* JavaScript.
*/
expires_in?: number;
/**
* The exact time when the session will expire. This time is expressed
* in the number of seconds since 1 January, 1970.
*
* Note: This property is not available for Windows Store apps using
* JavaScript.
*/
expires?: number;
}
/**
* Represents the user's login status.
*/
interface ILoginStatus {
/**
* The sign-in status of the user. Valid values are "connected",
* "notConnected", or "unknown".
*/
status: string;
/**
* A JSON object that contains the properties of the current session.
*/
session: ISession;
}
/**
* Represents the Microsoft.Live.API.Event object.
*/
interface IEventAPI {
/**
* Adds a handler to an event.
* @param event Required. The name of the event to which to add a
* handler.
* @param callback Required. Specifies the name of the callback function
* to handle the event.
* @returns This function can return the following errors:
* WL.Event.subscribe: The input parameter/property 'callback' must be
* included.
* WL.Event.subscribe: The input value for parameter/property 'event'
* is not valid.
*/
subscribe(event: string, callback: Function): void;
/**
* Removes a handler from an event.
* @param event Required. The name of the event from which to remove a
* handler.
* @param callback Optional. Removes the callback function from the
* event. If this parameter is omitted or is null, all callback
* functions that are registered to the event are removed. Removes the
* callback function from the specified event.
*/
unsubscribe(event: string, callback?: Function): void;
}
/**
* Returned from a successful file picker operation.
*/
interface IFilePickerResult {
/**
* Contains data concerning the user's picked files.
*/
data: {
/**
* Information on files choden in the picker.
*/
files?: IFile[];
/**
* Information on folders chosen in the picker.
*/
folders?: IFolder[];
}
}
/**
* The promise API implemented by this library.
*/
interface IPromise<T> {
/**
* Adds event listeners for particular events.
* @param onSuccess Called when the promised event successfully occurs.
* @param onError Called when the promised event fails to occur. Could
* be an IError or an IJSError.
* @param onProgress Called to indicate that the promised event is
* making progress toward completion.
*/
then(onSuccess: (response: T) => void,
onError?: (error: any) => void,
onProgress?: (progress: any) => void): IPromise<T>;
/**
* Cancels the pending request represented by the Promise, and triggers
* the error callback if the promised event has not yet occurred.
*/
cancel(): void;
}
/**
* An error returned by the JavaScript library, as opposed to an error
* object from the REST API (which we represent with IError).
*/
interface IJSError {
/**
* The error code.
*/
error: string;
/**
* A description of the error.
*/
error_description: string;
}
/**
* The Live Connect JavaScript API (Windows 8 and web), together with the
* REST API, enables apps to read, update, and share user data by using the
* JavaScript programming language. The JavaScript API (Windows 8 and web)
* provides methods for signing users in and out, getting user status,
* subscribing to events, creating UI controls, and calling the
* Representational State Transfer (REST) API.
*/
interface API {
/**
* Makes a call to the Live Connect Representational State Transfer
* (REST) API. This method encapsulates a REST API request, and then
* calls a callback function to process the response.
* @param properties Required. A JSON object that contains properties
* that are necessary to make the REST API call.
* @param callback Specifies a callback function that is executed when
* the REST API call is complete. The callback function takes the API
* response object as a parameter. The response object exposes the
* data returned from Live Connect, or, if an error occurs, an error
* property that contains the error code.
* @returns Returns a Promise object. This object's then method provides
* the onSuccess, onError, and onProgress parameters to enable your
* code to handle a successful, failed, and in-progress call to the
* corresponding WL.api method, respectively.
*/
api<T>(properties: IAPIProperties,
callback?: (response: any) => void): IPromise<T>;
/**
* Makes a call to download a file from Microsoft SkyDrive.
*
* **Important**: WL.backgroundDownload is supported only for use with
* Windows Store apps using JavaScript. If you are writing a web app,
* use WL.download instead.
* @param properties Required. A JSON object that contains properties
* that are necessary to make the REST API call.
* @param Optional. Specifies a callback function that is executed when
* the REST API call is complete. The callback function takes the API
* response object as a parameter. The response object exposes the
* data that is returned from Live Connect, or, if an error occurs, an
* error property that contains the error code.
* @returns Returns a Promise object. This object's then method accepts
* callback functions for onSuccess, onError, and onProgress to enable
* your code to handle a successful, failed, and in-progress call to
* the corresponding WL.download method, respectively.
* The onSuccess callback is passed a response object that contains
* content_type and stream properties, representing the downloaded
* file's content type and file stream, respectively.
*/
backgroundDownload<T>(properties: IBackgroundDownloadProperties,
callback?: (response: any) => void): IPromise<T>;
/**
* Makes a call to upload a file to Microsoft SkyDrive.
*
* **Important**: WL.backgroundUpload is supported only for use with
* Windows Store apps using JavaScript. If you are writing a web app,
* use WL.upload instead.
* @param properties Required. A JSON object that contains properties
* that are necessary to make the REST API call.
* @param callback Optional. Specifies a callback function that is
* executed when the REST API call is complete. The callback function
* takes the API response object as a parameter. The response object
* exposes the data returned from Live Connect, or if an error occurs,
* an error property that contains the error code.
* @returns Returns a Promise object. For Windows Store apps using
* JavaScript, this object's then method accepts callback functions
* for onSuccess, onError, and onProgress to enable your code to
* handle a successful, failed, and in-progress call to the
* corresponding WL.backgroudUpload method, respectively.
*/
backgroundUpload<T>(properties: IBackgroundUploadProperties,
callback?: (response: any) => void): IPromise<T>;
/**
* Specifies whether the current user can be signed out of their
* Microsoft account.
*
* For Windows Store apps using JavaScript, you can use this function to
* determine whether you should display a control to the user to enable
* them to sign out of their Microsoft account. If this
* function returns true, you should display the control. However, if
* this function returns false, you should not display this control, as
* attempting to sign out the user in this case will have no effect.
*
* For web apps, this function always returns true.
* @returns Returns true if the user can be signed out; otherwise,
* returns false if the user can't be signed out.
*/
canLogout(): boolean;
/**
* Makes a call to download a file from Microsoft SkyDrive.
*
* **Important**: WL.download is supported only for use with web apps.
* If you are writing a Windows Store app using JavaScript, use
* WL.backgroundDownload instead.
* @param properties Required. A JSON object that contains properties
* that are necessary to make the REST API call.
* @param callback Specifies a callback function that is executed when
* the REST API call is complete. The callback function takes the API
* response object as a parameter. The response object exposes the
* data that is returned from Live Connect, or, if an error occurs, an
* error property that contains the error code.
* @returns Returns a Promise object. This object's then method provides
* the onError parameter to enable your code to handle a failed call
* to the corresponding WL.download method.
*/
download(properties: IDownloadProperties,
callback?: (response: any) => void): IPromise<void>;
Event: IEventAPI;
/**
* Displays the Microsoft SkyDrive file picker, which enables
* JavaScript-based web apps to display a pre-built, consistent user
* interface that enables a user to select files to upload and download
* to and from their SkyDrive storage location.
* @param properties Required. A JSON object containing properties for
* displaying the button.
* @param callback Optional. A callback function that is executed after
* the user finishes interacting with the SkyDrive file picker.
* @returns Returns a Promise object. This object's then method provides
* the onSuccess and onError parameters to enable your code to handle
* a successful and failed call to the corresponding WL.fileDialog
* method, respectively.
*/
fileDialog(properties: IFileDialogProperties,
callback?: (response: any) => void): IPromise<IFilePickerResult>;
/**
* Returns the sign-in status of the current user. If the user is signed
* in and connected to your app, this function returns the session
* object. This is an asynchronous function that returns the user's
* status by contacting the Live Connect authentication web service.
* @param callback Returns the sign-in status of the current user. If
* the user is signed in and connected to your app, this function
* returns the session object. This is an asynchronous function that
* returns the user's status by contacting the Live Connect
* authentication web service.
* @param force Optional. If set to "true", the function contacts the
* Live Connect authentication web service to determine the user's
* status. If set to "false" (the default), the function can return
* the user status that is currently in memory, if there is one. If
* the user's status has already been retrieved, the library can
* return the cached value. However, you can force the library to
* retrieve current status by setting the force parameter to "true".
* @returns Returns a Promise object. This object's then method provides
* the onSuccess and onError parameters to enable your code to handle
* a successful and failed call to the corresponding WL.getLoginStatus
* method, respectively.
* In the body of the onSuccess function, a status object is returned,
* which contains the user's sign-in status and the session object.
*/
getLoginStatus(callback?: (status: ILoginStatus) => void,
force?: boolean): IPromise<ILoginStatus>;
/**
* Retrieves the current session object synchronously, if a session
* object exists. For situations in which performance is critical, such
* as page loads, use the asynchronous WL.getLoginStatus method instead.
* @returns Returns the current session as a session object instance.
*/
getSession(): ISession;
/**
* Initializes the JavaScript library. An app must call this function on
* every page before making other function calls in the library. The app
* should call this function before making function calls that subscribe
* to events. If the JavaScript library has already been initialized on
* the page, calling this function succeeds silently; the client_id and
* redirect_uri parameters are not validated.
* @param properties Required. A JSON object with initialization
* properties.
* @returns Returns a Promise object. This object's then method provides
* the onSuccess and onError parameters to enable your code to handle
* a successful and failed call to the corresponding WL.init method,
* respectively.
* When the onSuccess callback is invoked, a login status object is
* passed in as parameter that indicates the current user's login
* status.
*/
init(properties: IInitProperties): IPromise<ILoginStatus>;
/**
* Signs in the user or expands the user's list of scopes. Because this
* function can result in launching the consent page prompt, you should
* call it only in response to a user action, such as clicking a button.
* Otherwise, the user's web browser might block the popup.
*
* Typically, this function is used by apps that define their own
* sign-in controls, or by apps that ask users to grant additional
* permissions during an activity. For example, to enable a user to post
* their status to Live Connect, your app may have to prompt the
* user for permission and call this function with an expanded scope.
*
* If you call this function when the user has already consented to the
* requested scope and is already signed in, the callback function is
* invoked immediately with the current session.
* This function logs errors to the web browser console.
* @param properties Required. A JSON object with login properties.
* @param callback Optional. Specifies a callback function to execute
* when sign-in is complete. The callback function takes the status
* object as a parameter. For a description of the status object, see
* WL.getLoginStatus. If you do not specify a callback function, your
* app can still get the sign-in callback info by listening for an
* auth.sessionChange or auth.statusChange event.
* @returns Returns a Promise object. This object's then method provides
* the onSuccess, onError, and onProgress parameters to enable your
* code to handle a successful, failed, and in-progress call to the
* corresponding WL.login method, respectively.
*/
login(properties: ILoginProperties,
callback?: (status: any) => void): IPromise<ILoginStatus>;
/**
* Signs the user out of Live Connect and clears any user state that is
* maintained by the JavaScript library, such as cookies. If the user
* account is connected, this function logs out the user from the app,
* but not from the PC. This function is useful primarily for websites
* that do not use the sign-in control.
* @param callback Optional. Specifies a callback function that is
* executed when sign-out is complete. The callback function takes the
* status object as a parameter. For a description of the status
* object, see WL.getLoginStatus. If you do not specify a callback
* function, your app can still get the sign-out callback info by
* listening for an auth.sessionChange or auth.statusChange event.
* @returns Returns a Promise object. This object's then method provides
* the onSuccess, onError, and onProgress parameters to enable your
* code to handle a successful, failed, and in-progress call to the
* corresponding WL.logout method, respectively.
*/
logout(callback?: (status: ILoginStatus) => void): IPromise<ILoginStatus>;
/**
* Displays either the Live Connect sign-in button or the Microsoft
* SkyDrive file picker button. The sign-in button either prompts the
* user for their Microsoft account credentials if they are not
* signed in or else signs out the user if they are signed in. The
* file picker button displays the SkyDrive file picker to help the user
* select files to upload or download to or from their SkyDrive
* storage location.
* @param properties Required. A JSON object containing properties for
* displaying the button.
* @param callback Optional. A callback function that is executed after
* the sign-in button or file picker button is displayed.
* Note: Do not use the callback parameter to run code after the user
* finishes interacting with the sign-in button or file picker. Use a
* combination of the onselected, onloggedin, onloggedout, and onerror
* properties as previously described.
*/
ui(properties: IUIProperties, callback?: () => void): void;
/**
* Makes a call to upload a file to Microsoft SkyDrive.
*
* **Important**: WL.upload is supported only for use with web apps. If
* you are writing a Windows Store app using JavaScript, use
* WL.backgroundUpload instead.
* @param properties Required. A JSON object that contains properties
* that are necessary to make the REST API call.
* @param callback Optional. Specifies a callback function that is
* executed when the REST API call is complete. The callback function
* takes the API response object as a parameter. The response object
* exposes the data returned from Live Connect, or if an error occurs,
* an error property that contains the error code.
* @returns Returns a Promise object. This object's then method provides
* the onSuccess, onError, and onProgress parameters to enable your
* code to handle a successful, failed, and in-progress call to the
* corresponding WL.upload method, respectively; however, the
* onProgress parameter applies to newer web browsers such as Internet
* Explorer 10 only.
*/
upload<T>(properties: IUploadProperties,
callback?: (response: any) => void): IPromise<T>;
}
}
/**
* The WL object is a global object that encapsulates all functions of the
* JavaScript API (Windows 8 and web). Your app uses the WL object to call all
* of the JavaScript API (Windows 8 and web) functions.
*/
declare var WL: Microsoft.Live.API;