"Credentials used to identify and authenticate a share token" input ShareTokenCredentials { token: String! password: String } "A token used to publicly access an album or media" type ShareToken { id: ID! token: String! "The user who created the token" owner: User! "Optional expire date" expire: Time "Whether or not a password is needed to access the share" hasPassword: Boolean! "The album this token shares" album: Album "The media this token shares" media: Media } extend type Query { "Fetch a share token containing an `Album` or `Media`" shareToken(credentials: ShareTokenCredentials!): ShareToken! "Check if the `ShareToken` credentials are valid" shareTokenValidatePassword(credentials: ShareTokenCredentials!): Boolean! } extend type Mutation { "Generate share token for album" shareAlbum(albumId: ID!, expire: Time, password: String): ShareToken! @isAuthorized "Generate share token for media" shareMedia(mediaId: ID!, expire: Time, password: String): ShareToken! @isAuthorized "Delete a share token by it's token value" deleteShareToken(token: String!): ShareToken! @isAuthorized "Set a password for a token, if null is passed for the password argument, the password will be cleared" protectShareToken(token: String!, password: String): ShareToken! @isAuthorized "Set a Expiration Time for a token" setExpireShareToken(token: String!,expire: Time):ShareToken! @isAuthorized }