2021-03-11 14:30:14 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/ *  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   GoToSocial 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   Copyright  ( C )  2021  GoToSocial  Authors  admin @ gotosocial . org 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   This  program  is  free  software :  you  can  redistribute  it  and / or  modify 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   it  under  the  terms  of  the  GNU  Affero  General  Public  License  as  published  by 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   the  Free  Software  Foundation ,  either  version  3  of  the  License ,  or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   This  program  is  distributed  in  the  hope  that  it  will  be  useful , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   but  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .   See  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   GNU  Affero  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   You  should  have  received  a  copy  of  the  GNU  Affero  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   along  with  this  program .   If  not ,  see  < http : //www.gnu.org/licenses/>. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* /  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								package  model  
						 
					
						
							
								
									
										
										
										
											2021-03-11 14:30:14 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-03-18 23:54:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Application represents a mastodon-api Application, as defined here: https://docs.joinmastodon.org/entities/application/.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Primarily, application is used for allowing apps like Tusky etc to connect to Mastodon on behalf of a user.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// See https://docs.joinmastodon.org/methods/apps/  
						 
					
						
							
								
									
										
										
										
											2021-03-11 14:30:14 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								type  Application  struct  {  
						 
					
						
							
								
									
										
										
										
											2021-03-18 23:54:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// The application ID in the db 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ID  string  ` json:"id,omitempty" ` 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-11 14:30:14 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// The name of your application. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Name  string  ` json:"name" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// The website associated with your application (url) 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-18 23:54:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Website  string  ` json:"website,omitempty" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Where the user should be redirected after authorization. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									RedirectURI  string  ` json:"redirect_uri,omitempty" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ClientID to use when obtaining an oauth token for this application (ie., in client_id parameter of https://docs.joinmastodon.org/methods/apps/) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClientID  string  ` json:"client_id,omitempty" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Client secret to use when obtaining an auth token for this application (ie., in client_secret parameter of https://docs.joinmastodon.org/methods/apps/) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClientSecret  string  ` json:"client_secret,omitempty" ` 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-11 14:30:14 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// Used for Push Streaming API. Returned with POST /api/v1/apps. Equivalent to https://docs.joinmastodon.org/entities/pushsubscription/#server_key 
							 
						 
					
						
							
								
									
										
										
										
											2021-04-19 19:42:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									VapidKey  string  ` json:"vapid_key,omitempty" ` 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-11 14:30:14 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2021-03-18 23:54:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// ApplicationCreateRequest represents a POST request to https://example.org/api/v1/apps.  
						 
					
						
							
								
									
										
										
										
											2021-03-18 23:54:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// See here: https://docs.joinmastodon.org/methods/apps/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// And here: https://docs.joinmastodon.org/client/token/  
						 
					
						
							
								
									
										
										
										
											2021-05-08 14:25:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								type  ApplicationCreateRequest  struct  {  
						 
					
						
							
								
									
										
										
										
											2021-03-18 23:54:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// A name for your application 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-15 11:58:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClientName  string  ` form:"client_name" json:"client_name" xml:"client_name" binding:"required" ` 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-18 23:54:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Where the user should be redirected after authorization. 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// To display the authorization code to the user instead of redirecting 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// to a web page, use urn:ietf:wg:oauth:2.0:oob in this parameter. 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-15 11:58:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									RedirectURIs  string  ` form:"redirect_uris" json:"redirect_uris" xml:"redirect_uris" binding:"required" ` 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-18 23:54:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Space separated list of scopes. If none is provided, defaults to read. 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-15 11:58:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Scopes  string  ` form:"scopes" json:"scopes" xml:"scopes" ` 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-18 23:54:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// A URL to the homepage of your app 
							 
						 
					
						
							
								
									
										
										
										
											2021-05-15 11:58:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Website  string  ` form:"website" json:"website" xml:"website" ` 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-18 23:54:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}