{
  "endpoint": "PollHandler",
  "preferredHttpPath": "p",
  "alternateHttpPaths": [
    "HttpPoll"
  ],
  "summary": "Poll-related APIs.",
  "description": "Polls come in two forms, standalone and implicitly associated with another entity.  \n            Standalone polls have a title, description, and a set of choices, each with an ID value and a display value.  \n            Implicit polls are available for any entity--they don\u0027t have a fixed set of choices, a title, or a description, but otherwise function the same.  \n            Poll \u0022selections\u0022 can be made on either type of poll.  \n            Selections are a string (often just a character) that is either the choice ID (if a standalone poll), or whatever you want it to be for implicit polls.  \n            Unicode characters are supported too, so we can use \u00220\u0022 and \u00221\u0022 for like and dislike, or we can use \uD83D\uDC4D and \uD83D\uDC4E directly.   \n            Poll selection details and summaries are available for both standalone polls and other entities.  \n            The poll summary contains a list of all the choices that have been made and how many users have selected that choice (so this can be used to show the number of likes, dislikes, loves, laughs, etc.).  \n            Poll details contain a list of each user that\u0027s made a selection, the choice they selected, and when they selected it (they can change their mind, but that removes any previous entry), so this can be used to show a list of who reacted with what reaction and when they did so.",
  "apis": [
    {
      "name": "PutMyPollSelection",
      "httpMethod": "PUT",
      "httpPathRegex": "^/poll/(?<scope>[^?/&]+)/(?<pollOrEntityTypeId>[^?/&]+)/(?<pollOrEntityId>[^?/&]+)/myselection",
      "subPathPattern": "/poll/{scope}/{pollOrEntityTypeId}/{pollOrEntityId}/myselection",
      "summary": "Submits a poll selection for the currently-authenticated user.",
      "description": "Poll selections can be made on a standalone poll, or an another scoped entity.\n            When using a poll for reactions on photos, for example, the scope is the <see cref=\"T:PicMeModel.CollectionId\" />, and the entity ID is the <see cref=\"T:PicMeModel.UploadId\" />.",
      "parameters": [
        {
          "name": "scope",
          "required": true,
          "type": "DataScope",
          "description": "The <see cref=\"T:AmbientServices.DataScope\" /> for the discussion or entity.  (Scopes are kind of like namespaces).  To avoid path parsing issues with empty path segments, use '::' when using the global scope.  When the scope is empty, ie. the discussion is a global (presumably public) discussion."
        },
        {
          "name": "pollOrEntityTypeId",
          "required": true,
          "type": "RecordTypeId",
          "description": "The <see cref=\"T:AmbientServices.RecordTypeId\" /> of the entity indicated by <paramref name=\"pollOrEntityId\" />."
        },
        {
          "name": "pollOrEntityId",
          "required": true,
          "type": "String",
          "description": "A string that is either a <see cref=\"T:AmbientServices.PollId\" /> or another entity ID for which selections can be made."
        },
        {
          "name": "selectedChoiceId",
          "required": true,
          "type": "String",
          "description": "The choice ID string selected by the user (empty string indicates a reaction retraction).  Must not contain any of the following characters: colon, slash, backslash."
        }
      ],
      "return": {
        "type": "PutPollSelectionResponse",
        "description": "A <see cref=\"T:PicMeApi.PutPollSelectionResponse\" /> containing the response."
      }
    },
    {
      "name": "DeleteMyPollSelection",
      "httpMethod": "DELETE",
      "httpPathRegex": "^/poll/(?<scope>[^?/&]+)/(?<pollOrEntityTypeId>[^?/&]+)/(?<pollOrEntityId>[^?/&]+)/myselection",
      "subPathPattern": "/poll/{scope}/{pollOrEntityTypeId}/{pollOrEntityId}/myselection",
      "summary": "Deletes a poll selection for the currently-authenticated user.",
      "description": "Poll selections can be made on a standalone poll, or an another scoped entity.\n            When using a poll for reactions on photos, for example, the scope is the <see cref=\"T:PicMeModel.CollectionId\" />, and the entity ID is the <see cref=\"T:PicMeModel.UploadId\" />.",
      "parameters": [
        {
          "name": "scope",
          "required": true,
          "type": "DataScope",
          "description": "The <see cref=\"T:AmbientServices.DataScope\" /> for the discussion or entity.  (Scopes are kind of like namespaces).  To avoid path parsing issues with empty path segments, use '::' when using the global scope.  When the scope is empty, ie. the discussion is a global (presumably public) discussion."
        },
        {
          "name": "pollOrEntityTypeId",
          "required": true,
          "type": "RecordTypeId",
          "description": "The <see cref=\"T:AmbientServices.RecordTypeId\" /> of the entity indicated by <paramref name=\"pollOrEntityId\" />."
        },
        {
          "name": "pollOrEntityId",
          "required": true,
          "type": "String",
          "description": "A string that is either a <see cref=\"T:AmbientServices.PollId\" /> or another entity ID for which selections can be made."
        }
      ],
      "return": {
        "type": "PutPollSelectionResponse",
        "description": "A <see cref=\"T:PicMeApi.PutPollSelectionResponse\" /> containing the response."
      }
    },
    {
      "name": "GetMyPollSelection",
      "httpMethod": "GET",
      "httpPathRegex": "^/poll/(?<scope>[^?/&]+)/(?<pollOrEntityTypeId>[^?/&]+)/(?<pollOrEntityId>[^?/&]+)/myselection",
      "subPathPattern": "/poll/{scope}/{pollOrEntityTypeId}/{pollOrEntityId}/myselection",
      "summary": "Gets any poll selection for the currently-authenticated user.",
      "description": "Poll selections can be made on a standalone poll, or an another scoped entity.\n            When using a poll for reactions on photos, for example, the scope is the <see cref=\"T:PicMeModel.CollectionId\" />, and the entity ID is the <see cref=\"T:PicMeModel.UploadId\" />.",
      "parameters": [
        {
          "name": "scope",
          "required": true,
          "type": "DataScope",
          "description": "The <see cref=\"T:AmbientServices.DataScope\" /> for the discussion or entity.  (Scopes are kind of like namespaces).  To avoid path parsing issues with empty path segments, use '::' when using the global scope.  When the scope is empty, ie. the discussion is a global (presumably public) discussion."
        },
        {
          "name": "pollOrEntityTypeId",
          "required": true,
          "type": "RecordTypeId",
          "description": "The <see cref=\"T:AmbientServices.RecordTypeId\" /> of the entity indicated by <paramref name=\"pollOrEntityId\" />."
        },
        {
          "name": "pollOrEntityId",
          "required": true,
          "type": "String",
          "description": "A string that is either a <see cref=\"T:AmbientServices.PollId\" /> or another entity ID for which selections can be made."
        }
      ],
      "return": {
        "type": "GetPollSelectionResponse",
        "description": "A <see cref=\"T:PicMeApi.GetPollSelectionResponse\" /> containing the response."
      }
    },
    {
      "name": "ListPollSelections",
      "httpMethod": "GET",
      "httpPathRegex": "^/poll/(?<scope>[^?/&]+)/(?<pollOrEntityTypeId>[^?/&]+)/(?<pollOrEntityId>[^?/&]+)/selections",
      "subPathPattern": "/poll/{scope}/{pollOrEntityTypeId}/{pollOrEntityId}/selections",
      "summary": "Lists the poll selection details.",
      "parameters": [
        {
          "name": "scope",
          "required": true,
          "type": "DataScope",
          "description": "The <see cref=\"T:AmbientServices.DataScope\" /> for the discussion or entity.  (Scopes are kind of like namespaces).  To avoid path parsing issues with empty path segments, use '::' when using the global scope.  When the scope is empty, ie. the discussion is a global (presumably public) discussion."
        },
        {
          "name": "pollOrEntityTypeId",
          "required": true,
          "type": "RecordTypeId",
          "description": "The <see cref=\"T:AmbientServices.RecordTypeId\" /> of the entity indicated by <paramref name=\"pollOrEntityId\" />."
        },
        {
          "name": "pollOrEntityId",
          "required": true,
          "type": "String",
          "description": "A string that is either a <see cref=\"T:AmbientServices.PollId\" /> or another entity ID for which selections can be made."
        },
        {
          "name": "continuation",
          "required": false,
          "type": "String?",
          "description": "An optional string returned from a previous call that will continue listing from where the previous call left off."
        }
      ],
      "return": {
        "type": "ListPollSelectionsResponse",
        "description": "A <see cref=\"T:PicMeApi.ListPollSelectionsResponse\" /> containing the response."
      }
    },
    {
      "name": "ListPollResultSummary",
      "httpMethod": "GET",
      "httpPathRegex": "^/poll/(?<scope>[^?/&]+)/(?<pollOrEntityTypeId>[^?/&]+)/(?<pollOrEntityId>[^?/&]+)/summary",
      "subPathPattern": "/poll/{scope}/{pollOrEntityTypeId}/{pollOrEntityId}/summary",
      "summary": "Lists the poll results summary.",
      "parameters": [
        {
          "name": "scope",
          "required": true,
          "type": "DataScope",
          "description": "The <see cref=\"T:AmbientServices.DataScope\" /> for the discussion or entity.  (Scopes are kind of like namespaces).  To avoid path parsing issues with empty path segments, use '::' when using the global scope.  When the scope is empty, ie. the discussion is a global (presumably public) discussion."
        },
        {
          "name": "pollOrEntityTypeId",
          "required": true,
          "type": "RecordTypeId",
          "description": "The <see cref=\"T:AmbientServices.RecordTypeId\" /> of the entity indicated by <paramref name=\"pollOrEntityId\" />."
        },
        {
          "name": "pollOrEntityId",
          "required": true,
          "type": "String",
          "description": "A string that is either a <see cref=\"T:AmbientServices.PollId\" /> or another entity ID for which selections can be made."
        }
      ],
      "return": {
        "type": "ListPollResultSummaryResponse",
        "description": "A <see cref=\"T:PicMeApi.ListPollResultSummaryResponse\" /> containing the response."
      }
    },
    {
      "name": "PatchPoll",
      "httpMethod": "PATCH",
      "httpPathRegex": "^/poll/i/(?<scope>[^?/&]+)/(?<pollId>[^?/&]+)",
      "subPathPattern": "/poll/i/{scope}/{pollId}",
      "summary": "Patches a standalone poll.",
      "parameters": [
        {
          "name": "scope",
          "required": true,
          "type": "DataScope",
          "description": "The <see cref=\"T:AmbientServices.DataScope\" /> for the discussion or entity.  (Scopes are kind of like namespaces).  To avoid path parsing issues with empty path segments, use '::' when using the global scope.  When the scope is empty, ie. the discussion is a global (presumably public) discussion."
        },
        {
          "name": "pollId",
          "required": true,
          "type": "PollId",
          "description": "The <see cref=\"T:AmbientServices.PollId\" /> of the poll being patched."
        },
        {
          "name": "body",
          "required": true,
          "type": "PatchPollBody",
          "description": "The <see cref=\"T:PicMeApi.PatchPollBody\" /> containing the partial new poll data."
        }
      ],
      "return": {
        "type": "PatchPollResponse",
        "description": "A <see cref=\"T:PicMeApi.PatchPollResponse\" /> containing the response."
      }
    },
    {
      "name": "DeletePoll",
      "httpMethod": "DELETE",
      "httpPathRegex": "^/poll/i/(?<scope>[^?/&]+)/(?<pollId>[^?/&]+)",
      "subPathPattern": "/poll/i/{scope}/{pollId}",
      "summary": "Deletes the specified standalone poll.",
      "parameters": [
        {
          "name": "scope",
          "required": true,
          "type": "DataScope",
          "description": "The <see cref=\"T:AmbientServices.DataScope\" /> for the discussion or entity.  (Scopes are kind of like namespaces).  To avoid path parsing issues with empty path segments, use '::' when using the global scope.  When the scope is empty, ie. the discussion is a global (presumably public) discussion."
        },
        {
          "name": "pollId",
          "required": true,
          "type": "PollId",
          "description": "The <see cref=\"T:AmbientServices.PollId\" /> of the poll being patched."
        }
      ],
      "return": {
        "type": "DeletePollResponse",
        "description": "A <see cref=\"T:PicMeApi.DeletePollResponse\" /> containing the response."
      }
    },
    {
      "name": "CreatePoll",
      "httpMethod": "POST",
      "httpPathRegex": "^/poll/i/(?<scope>[^?/&]+)",
      "subPathPattern": "/poll/i/{scope}",
      "summary": "Creates a standalone poll.",
      "parameters": [
        {
          "name": "scope",
          "required": true,
          "type": "DataScope",
          "description": "The <see cref=\"T:AmbientServices.DataScope\" /> for the discussion or entity.  (Scopes are kind of like namespaces).  To avoid path parsing issues with empty path segments, use '::' when using the global scope.  When the scope is empty, ie. the discussion is a global (presumably public) discussion."
        },
        {
          "name": "body",
          "required": true,
          "type": "CreatePollBody",
          "description": "The <see cref=\"T:PicMeApi.CreatePollBody\" /> from the body of the request."
        }
      ],
      "return": {
        "type": "CreatePollResponse",
        "description": "A <see cref=\"T:PicMeApi.CreatePollResponse\" /> containing the response."
      }
    },
    {
      "name": "ListPolls",
      "httpMethod": "GET",
      "httpPathRegex": "^/poll/i/(?<scope>[^?/&]+)",
      "subPathPattern": "/poll/i/{scope}",
      "summary": "Lists standalone polls that the user has rights to.",
      "parameters": [
        {
          "name": "scope",
          "required": true,
          "type": "DataScope",
          "description": "The <see cref=\"T:AmbientServices.DataScope\" /> for the discussion or entity.  (Scopes are kind of like namespaces).  To avoid path parsing issues with empty path segments, use '::' when using the global scope.  When the scope is empty, ie. the discussion is a global (presumably public) discussion."
        },
        {
          "name": "filter",
          "required": false,
          "type": "PollQuery?",
          "description": "An optional <see cref=\"T:PicMeApi.PollQuery\" /> indicating attributes of the polls to be listed."
        },
        {
          "name": "itemsPerPage",
          "required": false,
          "type": "Int32",
          "description": "The number of items to list per page."
        },
        {
          "name": "continuation",
          "required": false,
          "type": "String?",
          "description": "A string from the previous call that will allow the caller to continue listing where the previous call left off."
        },
        {
          "name": "forUserId",
          "required": false,
          "type": "UserId?",
          "description": "An optional <see cref=\"T:AmbientServices.UserId\" /> whose polls will be listed.  If specified, the caller must be a root administrator."
        }
      ],
      "return": {
        "type": "ListPollsResponse",
        "description": "A <see cref=\"T:PicMeApi.ListPollsResponse\" /> containing the response."
      }
    }
  ],
  "types": [
    {
      "name": "DataScope",
      "summary": "A string that contains a data scope which distinguishes one set of data (records or indexes) from another.\n            It can be part or all of one or more record identifiers or paths, or any other unique string, but must not contain embedded NUL characters.",
      "type": "proxy",
      "representedBy": "String"
    },
    {
      "name": "RecordTypeId",
      "summary": "A struct that holds a record type identifier.\n            Record type identifiers uniquely identify a specific type of record, but take care, as they can be environment-specific (ie. the same type can have different record type identifiers in different environments).",
      "type": "proxy",
      "representedBy": "String"
    },
    {
      "name": "PutPollSelectionResponse",
      "summary": "A record containing the response to <see cref=\"M:PicMeApi.PollApis.PutMyPollSelection(AmbientServices.Auth,AmbientServices.IFileSystem,AmbientServices.Database,PicMeApi.AuthData,AmbientServices.DataScope,AmbientServices.RecordTypeId,System.String,System.String)\" />."
    },
    {
      "name": "GetPollSelectionResponse",
      "summary": "A record containing the response to <see cref=\"M:PicMeApi.PollApis.GetMyPollSelection(AmbientServices.Auth,AmbientServices.Database,PicMeApi.AuthData,AmbientServices.DataScope,AmbientServices.RecordTypeId,System.String)\" />.",
      "type": "composite",
      "members": [
        {
          "name": "selection",
          "type": "PollSelection?",
          "summary": "The selection made by the user, or null if the user has not made a selection yet."
        }
      ]
    },
    {
      "name": "PollSelection",
      "summary": "A record containing the details for a poll selection.",
      "type": "composite",
      "members": [
        {
          "name": "choiceId",
          "type": "String",
          "summary": "The short string indicating the choice made by this user.  If the string is empty, it represents a user that previously voted and then removed their vote selection."
        },
        {
          "name": "userInfo",
          "type": "ActorInfo",
          "summary": "The <see cref=\"T:AmbientServices.ActorInfo\" /> of the user who made the choice."
        },
        {
          "name": "choiceTime",
          "type": "DateTime",
          "summary": "The <see cref=\"T:System.DateTime\" /> (in UTC) indicating when the specified user made the specified choice."
        }
      ]
    },
    {
      "name": "ActorInfo",
      "summary": "A record containing basic information about a collaborating actor, usually a co-participant in some activity.",
      "type": "composite",
      "members": [
        {
          "name": "userId",
          "type": "ActorId",
          "summary": "The <see cref=\"P:AmbientServices.ActorInfo.UserId\" /> of this user."
        },
        {
          "name": "unavailable",
          "type": "Boolean",
          "summary": "Whether the user's information is available or not.  If not available, an anonymous placeholder name will be used."
        },
        {
          "name": "name",
          "type": "String",
          "summary": "The user's name."
        },
        {
          "name": "getProfilePicture",
          "type": "Uri?",
          "summary": "A <see cref=\"T:System.Uri\" /> that can be used to retrieve the user's profile picture if one is available, or null if there is no profile picture for this user."
        },
        {
          "name": "externalIds",
          "type": "ExternalEntityIdentifier[]?",
          "summary": "An optional array of <see cref=\"T:AmbientServices.ExternalEntityIdentifier\" /> identifying this user account in external systems."
        }
      ]
    },
    {
      "name": "ExternalEntityIdentifier",
      "summary": "A record that contains an external system identifier and an identifier for a specific item in that system.",
      "type": "composite",
      "members": [
        {
          "name": "externalSystemId",
          "type": "String",
          "summary": "A string that uniquely identifies an external system, often a reverse domain name like 'com.facebook' or 'com.venmo'."
        },
        {
          "name": "externalItemId",
          "type": "String",
          "summary": "A string that uniquely identifies an item in that external system."
        }
      ]
    },
    {
      "name": "ActorId",
      "summary": "A struct that holds an actor identifier, which identifies either a single user or both an actor (actual) and effective (proxied) user.",
      "type": "proxy",
      "representedBy": "String"
    },
    {
      "name": "ListPollSelectionsResponse",
      "summary": "A record containing the response to <see cref=\"M:PicMeApi.PollApis.ListPollSelections(AmbientServices.Auth,AmbientServices.Database,PicMeApi.AuthData,AmbientServices.DataScope,AmbientServices.RecordTypeId,System.String,System.String)\" />.",
      "type": "composite",
      "members": [
        {
          "name": "selections",
          "type": "PollSelection[]",
          "summary": "The <see cref=\"T:PicMeApi.PollSelection\" />s for each poll choice (choices not included should be assumed to be zero)."
        },
        {
          "name": "continuation",
          "type": "String?",
          "summary": "A string that can be used to get more results in case there were a lot of poll results."
        }
      ]
    },
    {
      "name": "ListPollResultSummaryResponse",
      "summary": "A record containing the response to <see cref=\"M:PicMeApi.PollApis.ListPollResultSummary(AmbientServices.Auth,AmbientServices.Database,PicMeApi.AuthData,AmbientServices.DataScope,AmbientServices.RecordTypeId,System.String)\" />.",
      "type": "composite",
      "members": [
        {
          "name": "results",
          "type": "PollSummaryEntry[]",
          "summary": "The <see cref=\"T:PicMeApi.PollSummaryEntry\" /> for each poll choice (choices not included should be assumed to be zero)."
        }
      ]
    },
    {
      "name": "PollSummaryEntry",
      "summary": "A record containing the summary (ie. counts) for one poll choice.",
      "type": "composite",
      "members": [
        {
          "name": "choiceId",
          "type": "String",
          "summary": "The short string indicating a choice made by the users counted in <see cref=\"P:PicMeApi.PollSummaryEntry.Count\" />.  If the string is empty, it represents a user that previously voted and then removed their vote selection."
        },
        {
          "name": "count",
          "type": "Int32",
          "summary": "The number of users making that choice."
        }
      ]
    },
    {
      "name": "PollId",
      "summary": "A struct that holds a Compact poll id.",
      "type": "proxy",
      "representedBy": "String"
    },
    {
      "name": "PatchPollBody",
      "summary": "A record containing the structure of the body for the <see cref=\"M:PicMeApi.PollApis.PatchPoll(AmbientServices.Auth,AmbientServices.Database,PicMeApi.AuthData,AmbientServices.DataScope,AmbientServices.PollId,PicMeApi.PatchPollBody)\" /> API.\n            Any parts of the structure may be left unspecified, which will cause the existing value to be retained.",
      "type": "composite",
      "members": [
        {
          "name": "name",
          "type": "String?",
          "summary": "The name of the poll."
        },
        {
          "name": "description",
          "type": "Text?",
          "summary": "A description or instructions for the poll."
        },
        {
          "name": "choices",
          "type": "PollChoice[]?",
          "summary": "An array containing the available choices for the poll.  Note that changing the available choices will rename them for any votes already cast."
        },
        {
          "name": "startDate",
          "type": "DateTime?",
          "summary": "An optional <see cref=\"T:System.DateTime\" /> indicating the UTC time after which votes in the poll should start being accepted."
        },
        {
          "name": "endDate",
          "type": "DateTime?",
          "summary": "An optional <see cref=\"T:System.DateTime\" /> indicating the UTC time after which votes in the poll should end being accepted."
        }
      ]
    },
    {
      "name": "PollChoice",
      "summary": "A record containing information about a possible poll choice",
      "type": "composite",
      "members": [
        {
          "name": "choiceId",
          "type": "String",
          "summary": "A unique short string (often a single character) use to store and index the choice made by a user."
        },
        {
          "name": "choiceDisplay",
          "type": "String",
          "summary": "The unique string to display to the user that corresponds to this choice."
        }
      ]
    },
    {
      "name": "Text",
      "summary": "A struct that holds a string of text that should be indexed as words rather than as a single complete string because it is expected to be longer, possibly multi-line.",
      "type": "proxy",
      "representedBy": "String"
    },
    {
      "name": "PatchPollResponse",
      "summary": "The response for <see cref=\"M:PicMeApi.PollApis.PatchPoll(AmbientServices.Auth,AmbientServices.Database,PicMeApi.AuthData,AmbientServices.DataScope,AmbientServices.PollId,PicMeApi.PatchPollBody)\" />.",
      "type": "composite",
      "members": [
        {
          "name": "poll",
          "type": "Poll"
        }
      ]
    },
    {
      "name": "Poll",
      "summary": "A record containing the database schema for a standalone poll.",
      "type": "composite",
      "members": [
        {
          "name": "pollId",
          "type": "PollId",
          "summary": "The <see cref=\"P:PicMeModel.Poll.PollId\" /> for the poll.  Ignored as an input."
        },
        {
          "name": "pollGlobalId",
          "type": "RecordGlobalId",
          "summary": "The <see cref=\"T:AmbientServices.RecordGlobalId\" /> for the poll.  Ignored as an input."
        },
        {
          "name": "creatorUserId",
          "type": "ActorId",
          "summary": "The <see cref=\"T:AmbientServices.ActorId\" /> of the user that created the poll.  Ignored as an input."
        },
        {
          "name": "creationTime",
          "type": "DateTime",
          "summary": "The <see cref=\"T:System.DateTime\" /> when the poll was created.  Ignored as an input."
        },
        {
          "name": "modifierUserId",
          "type": "ActorId",
          "summary": "The <see cref=\"T:AmbientServices.ActorId\" /> of the user that modified the poll.  Ignored as an input."
        },
        {
          "name": "modificationTime",
          "type": "DateTime",
          "summary": "The <see cref=\"T:System.DateTime\" /> when this poll record was modified.  Ignored as an input."
        },
        {
          "name": "startDate",
          "type": "DateTime?",
          "summary": "An optional <see cref=\"T:System.DateTime\" /> that polling starts."
        },
        {
          "name": "endDate",
          "type": "DateTime?",
          "summary": "An optional <see cref=\"T:System.DateTime\" /> that polling ends."
        },
        {
          "name": "name",
          "type": "String",
          "summary": "The poll's name (indexed as a whole)."
        },
        {
          "name": "description",
          "type": "Text",
          "summary": "A description or instructions for the poll."
        },
        {
          "name": "choices",
          "type": "PollChoice[]",
          "summary": "The poll's choices."
        }
      ]
    },
    {
      "name": "RecordGlobalId",
      "summary": "A structured replacement for <see cref=\"T:AmbientServices.RecordIdentifier\" /> that contains the same data, a type-qualified and parent-qualified global identifier for a database record.\n            Records may be children of other records, and this identifier contains the path to the parent in addition to the path to the child record.\n            An example of a record that is a child of another record is an upload within a collection.",
      "type": "proxy",
      "representedBy": "String"
    },
    {
      "name": "DeletePollResponse",
      "summary": "A record containing the response after deleting a colleciton.",
      "type": "composite",
      "members": [
        {
          "name": "pollId",
          "type": "PollId",
          "summary": "The <see cref=\"P:PicMeApi.DeletePollResponse.PollId\" /> for the poll to be deleted."
        },
        {
          "name": "pollGlobalId",
          "type": "RecordGlobalId",
          "summary": "The <see cref=\"T:AmbientServices.RecordGlobalId\" /> for the poll."
        }
      ]
    },
    {
      "name": "CreatePollBody",
      "summary": "A record containing the structure of the body for the <see cref=\"M:PicMeApi.PollApis.CreatePoll(AmbientServices.Auth,AmbientServices.Database,PicMeApi.AuthData,AmbientServices.DataScope,PicMeApi.CreatePollBody)\" /> API.",
      "type": "composite",
      "members": [
        {
          "name": "name",
          "type": "String",
          "summary": "The name of the poll."
        },
        {
          "name": "description",
          "type": "Text",
          "summary": "A description or instructions for the poll."
        },
        {
          "name": "choices",
          "type": "PollChoice[]",
          "summary": "An array containing the available choices for the poll."
        },
        {
          "name": "startDate",
          "type": "DateTime?",
          "summary": "An optional <see cref=\"T:System.DateTime\" /> indicating the UTC time after which votes in the poll should start being accepted."
        },
        {
          "name": "endDate",
          "type": "DateTime?",
          "summary": "An optional <see cref=\"T:System.DateTime\" /> indicating the UTC time after which votes in the poll should end being accepted."
        }
      ]
    },
    {
      "name": "CreatePollResponse",
      "summary": "The response for <see cref=\"M:PicMeApi.PollApis.CreatePoll(AmbientServices.Auth,AmbientServices.Database,PicMeApi.AuthData,AmbientServices.DataScope,PicMeApi.CreatePollBody)\" />.",
      "type": "composite",
      "members": [
        {
          "name": "pollId",
          "type": "PollId",
          "summary": "The <see cref=\"P:PicMeApi.CreatePollResponse.PollId\" /> for the new standalone poll."
        },
        {
          "name": "pollGlobalId",
          "type": "RecordGlobalId",
          "summary": "The <see cref=\"T:AmbientServices.RecordGlobalId\" /> for the new standalone poll."
        }
      ]
    },
    {
      "name": "PollQuery",
      "summary": "A record that holds information about an upload query.",
      "type": "composite",
      "members": [
        {
          "name": "creationTime",
          "type": "DateTimeRange?",
          "summary": "An optional <see cref=\"T:AmbientServices.DateTimeRange\" /> indicating when the desired polls were created."
        },
        {
          "name": "creatorUserId",
          "type": "ActorId?",
          "summary": "An optional <see cref=\"T:AmbientServices.ActorId\" /> who is the creator of the desired polls."
        },
        {
          "name": "modificationTime",
          "type": "DateTimeRange?",
          "summary": "An optional <see cref=\"T:AmbientServices.DateTimeRange\" /> indicating when the desired polls was modified."
        },
        {
          "name": "name",
          "type": "String?",
          "summary": "An optional string whose value should match the name of the polls."
        },
        {
          "name": "description",
          "type": "Text?",
          "summary": "An optional <see cref=\"T:AmbientServices.Text\" /> whose value should match the description of the polls."
        },
        {
          "name": "isEmpty",
          "type": "Boolean",
          "summary": "Checks to see if anything at all is specified in the query (an empty query will have no filters in it)."
        }
      ]
    },
    {
      "name": "DateTimeRange",
      "summary": "A struct that holds a date-time range.  Serialized as the ISO 8601 start and end dates separated by two dashes.",
      "type": "proxy",
      "representedBy": "String"
    },
    {
      "name": "UserId",
      "summary": "A struct that holds a user identifier.",
      "type": "proxy",
      "representedBy": "String"
    },
    {
      "name": "ListPollsResponse",
      "summary": "A record containing the response from the <see cref=\"M:PicMeApi.PollApis.ListPolls(AmbientServices.Auth,AmbientServices.Database,AmbientServices.IFileSystem,PicMeApi.AuthData,AmbientServices.DataScope,PicMeApi.PollQuery,System.Int32,System.String,System.Nullable{AmbientServices.UserId})\" /> API.",
      "type": "composite",
      "members": [
        {
          "name": "polls",
          "type": "ListedPoll[]",
          "summary": "An array of <see cref=\"T:PicMeApi.ListedPoll\" /> objects, one for each poll the user has access to."
        },
        {
          "name": "continuation",
          "type": "String?",
          "summary": "An optional string from the response to a previous call that can be used to continue the list with the next page of results."
        }
      ]
    },
    {
      "name": "ListedPoll",
      "summary": "A record containing the data for a poll returned in a list of polls.",
      "type": "composite",
      "members": [
        {
          "name": "poll",
          "type": "Poll",
          "summary": "The <see cref=\"P:PicMeApi.ListedPoll.Poll\" /> contining the poll data."
        },
        {
          "name": "userRights",
          "type": "CollectionRights",
          "summary": "The <see cref=\"T:AmbientServices.CollectionRights\" /> indicating what rights the user has on the poll."
        },
        {
          "name": "userParticipationRights",
          "type": "CollectionRights",
          "summary": "The <see cref=\"T:AmbientServices.CollectionRights\" /> indicating what rights the user has on the uploads within the poll."
        }
      ]
    },
    {
      "name": "CollectionRights",
      "summary": "A multivalued enumeration of collection rights that indicate what rights a guest user has on a collection and it's related objects.\n            Do not change the names here.  They are converted to character representations based on the names here.",
      "type": "enum",
      "flags": true,
      "enumValues": [
        {
          "name": "None",
          "summary": "The user is not allowed any kind of access to the uploads.",
          "value": 0
        },
        {
          "name": "List",
          "summary": "The user is allowed to list the uploads.",
          "value": 1
        },
        {
          "name": "Read",
          "summary": "The user is allowed to read the uploads.",
          "value": 2
        },
        {
          "name": "Create",
          "summary": "The user is allowed to create the uploads.",
          "value": 4
        },
        {
          "name": "Update",
          "summary": "The user is allowed to update the uploads.",
          "value": 8
        },
        {
          "name": "Delete",
          "summary": "The user is allowed to delete the uploads.",
          "value": 16
        },
        {
          "name": "ShareWithOthers",
          "summary": "The user is allowed to share their other rights to the uploads with others.",
          "value": 32
        },
        {
          "name": "UploadEverything",
          "summary": "The user is allowed to do anything with the uploads.",
          "value": 255
        },
        {
          "name": "CollectionList",
          "summary": "The user is allowed to list the collection.",
          "value": 256
        },
        {
          "name": "CollectionRead",
          "summary": "The user is allowed to read the collection.",
          "value": 512
        },
        {
          "name": "CollectionCreate",
          "summary": "The user is allowed to create the collection.",
          "value": 1024
        },
        {
          "name": "CollectionUpdate",
          "summary": "The user is allowed to update the collection.",
          "value": 2048
        },
        {
          "name": "CollectionDelete",
          "summary": "The user is allowed to delete the collection.",
          "value": 4096
        },
        {
          "name": "CollectionShareWithOthers",
          "summary": "The user is allowed to share their other rights to the collection with others.",
          "value": 8192
        },
        {
          "name": "CollectionEverything",
          "summary": "The user is allowed to do anything with the collection.",
          "value": 65280
        },
        {
          "name": "SubcollectionList",
          "summary": "The user is allowed to list the subcollections.",
          "value": 65536
        },
        {
          "name": "SubcollectionRead",
          "summary": "The user is allowed to read the subcollections.",
          "value": 131072
        },
        {
          "name": "SubcollectionCreate",
          "summary": "The user is allowed to create the subcollections.",
          "value": 262144
        },
        {
          "name": "SubcollectionUpdate",
          "summary": "The user is allowed to update the subcollections.",
          "value": 524288
        },
        {
          "name": "SubcollectionDelete",
          "summary": "The user is allowed to delete the subcollections.",
          "value": 1048576
        },
        {
          "name": "SubcollectionShareWithOthers",
          "summary": "The user is allowed to share their other rights to the subcollections with others.",
          "value": 2097152
        },
        {
          "name": "SubcollectionEverything",
          "summary": "The user is allowed to do anything with the subcollections.",
          "value": 16711680
        },
        {
          "name": "Everything",
          "summary": "The user is allowed to do anything with the collection, its subfolders, and its uploads.",
          "value": -1
        }
      ]
    }
  ]
}