diff --git a/OpenTween/Api/DataModel/MastodonAccount.cs b/OpenTween/Api/DataModel/MastodonAccount.cs
new file mode 100644
index 000000000..3dfb2d88b
--- /dev/null
+++ b/OpenTween/Api/DataModel/MastodonAccount.cs
@@ -0,0 +1,73 @@
+// OpenTween - Client of Twitter
+// Copyright (c) 2017 kim_upsilon (@kim_upsilon)
+// All rights reserved.
+//
+// This file is part of OpenTween.
+//
+// This program is free software; you can redistribute it and/or modify it
+// under the terms of the GNU 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 General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program. If not, see , or write to
+// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+// Boston, MA 02110-1301, USA.
+
+using System.Runtime.Serialization;
+
+namespace OpenTween.Api.DataModel
+{
+ public class MastodonAccount
+ {
+ [DataMember(Name = "id")]
+ public long Id { get; set; }
+
+ [DataMember(Name = "username")]
+ public string Username { get; set; }
+
+ [DataMember(Name = "acct")]
+ public string Acct { get; set; }
+
+ [DataMember(Name = "display_name")]
+ public string DisplayName { get; set; }
+
+ [DataMember(Name = "locked")]
+ public bool Locked { get; set; }
+
+ [DataMember(Name = "created_at")]
+ public string CreatedAt { get; set; }
+
+ [DataMember(Name = "followers_count")]
+ public int FollowersCount { get; set; }
+
+ [DataMember(Name = "following_count")]
+ public int FollowingCount { get; set; }
+
+ [DataMember(Name = "statuses_count")]
+ public int StatusesCount { get; set; }
+
+ [DataMember(Name = "note")]
+ public string Note { get; set; }
+
+ [DataMember(Name = "url")]
+ public string Url { get; set; }
+
+ [DataMember(Name = "avatar")]
+ public string Avatar { get; set; }
+
+ [DataMember(Name = "avatar_static")]
+ public string AvatarStatic { get; set; }
+
+ [DataMember(Name = "header")]
+ public string Header { get; set; }
+
+ [DataMember(Name = "header_static")]
+ public string HeaderStatic { get; set; }
+ }
+}
diff --git a/OpenTween/Api/DataModel/MastodonApplication.cs b/OpenTween/Api/DataModel/MastodonApplication.cs
new file mode 100644
index 000000000..2898f7587
--- /dev/null
+++ b/OpenTween/Api/DataModel/MastodonApplication.cs
@@ -0,0 +1,34 @@
+// OpenTween - Client of Twitter
+// Copyright (c) 2017 kim_upsilon (@kim_upsilon)
+// All rights reserved.
+//
+// This file is part of OpenTween.
+//
+// This program is free software; you can redistribute it and/or modify it
+// under the terms of the GNU 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 General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program. If not, see , or write to
+// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+// Boston, MA 02110-1301, USA.
+
+using System.Runtime.Serialization;
+
+namespace OpenTween.Api.DataModel
+{
+ public class MastodonApplication
+ {
+ [DataMember(Name = "name")]
+ public string Name { get; set; }
+
+ [DataMember(Name = "website")] // Nullable
+ public string Website { get; set; }
+ }
+}
diff --git a/OpenTween/Api/DataModel/MastodonAttachment.cs b/OpenTween/Api/DataModel/MastodonAttachment.cs
new file mode 100644
index 000000000..32bba1c18
--- /dev/null
+++ b/OpenTween/Api/DataModel/MastodonAttachment.cs
@@ -0,0 +1,46 @@
+// OpenTween - Client of Twitter
+// Copyright (c) 2017 kim_upsilon (@kim_upsilon)
+// All rights reserved.
+//
+// This file is part of OpenTween.
+//
+// This program is free software; you can redistribute it and/or modify it
+// under the terms of the GNU 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 General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program. If not, see , or write to
+// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+// Boston, MA 02110-1301, USA.
+
+using System.Runtime.Serialization;
+
+namespace OpenTween.Api.DataModel
+{
+ public class MastodonAttachment
+ {
+ [DataMember(Name = "id")]
+ public long Id { get; set; }
+
+ [DataMember(Name = "type")]
+ public string Type { get; set; }
+
+ [DataMember(Name = "url")]
+ public string Url { get; set; }
+
+ [DataMember(Name = "remote_url")]
+ public string RemoteUrl { get; set; }
+
+ [DataMember(Name = "preview_url")]
+ public string PreviewUrl { get; set; }
+
+ [DataMember(Name = "text_url")]
+ public string TextUrl { get; set; }
+ }
+}
diff --git a/OpenTween/Api/DataModel/MastodonMention.cs b/OpenTween/Api/DataModel/MastodonMention.cs
new file mode 100644
index 000000000..3bc1af9dd
--- /dev/null
+++ b/OpenTween/Api/DataModel/MastodonMention.cs
@@ -0,0 +1,40 @@
+// OpenTween - Client of Twitter
+// Copyright (c) 2017 kim_upsilon (@kim_upsilon)
+// All rights reserved.
+//
+// This file is part of OpenTween.
+//
+// This program is free software; you can redistribute it and/or modify it
+// under the terms of the GNU 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 General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program. If not, see , or write to
+// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+// Boston, MA 02110-1301, USA.
+
+using System.Runtime.Serialization;
+
+namespace OpenTween.Api.DataModel
+{
+ public class MastodonMention
+ {
+ [DataMember(Name = "url")]
+ public string Url { get; set; }
+
+ [DataMember(Name = "username")]
+ public string Username { get; set; }
+
+ [DataMember(Name = "acct")]
+ public string Acct { get; set; }
+
+ [DataMember(Name = "id")]
+ public long Id { get; set; }
+ }
+}
diff --git a/OpenTween/Api/DataModel/MastodonStatus.cs b/OpenTween/Api/DataModel/MastodonStatus.cs
new file mode 100644
index 000000000..0951ebe87
--- /dev/null
+++ b/OpenTween/Api/DataModel/MastodonStatus.cs
@@ -0,0 +1,88 @@
+// OpenTween - Client of Twitter
+// Copyright (c) 2017 kim_upsilon (@kim_upsilon)
+// All rights reserved.
+//
+// This file is part of OpenTween.
+//
+// This program is free software; you can redistribute it and/or modify it
+// under the terms of the GNU 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 General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program. If not, see , or write to
+// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+// Boston, MA 02110-1301, USA.
+
+using System.Runtime.Serialization;
+
+namespace OpenTween.Api.DataModel
+{
+ public class MastodonStatus
+ {
+ [DataMember(Name = "id")]
+ public long Id { get; set; }
+
+ [DataMember(Name = "uri")]
+ public string Uri { get; set; }
+
+ [DataMember(Name = "url")]
+ public string Url { get; set; }
+
+ [DataMember(Name = "account")]
+ public MastodonAccount Account { get; set; }
+
+ [DataMember(Name = "in_reply_to_id")]
+ public long? InReplyToId { get; set; }
+
+ [DataMember(Name = "in_reply_to_account_id")]
+ public long? InReplyToAccountId { get; set; }
+
+ [DataMember(Name = "reblog")]
+ public MastodonStatus Reblog { get; set; }
+
+ [DataMember(Name = "content")]
+ public string Content { get; set; }
+
+ [DataMember(Name = "created_at")]
+ public string CreatedAt { get; set; }
+
+ [DataMember(Name = "reblogs_count")]
+ public int ReblogsCount { get; set; }
+
+ [DataMember(Name = "favourites_count")]
+ public int FavouritesCount { get; set; }
+
+ [DataMember(Name = "reblogged")]
+ public bool Reblogged { get; set; }
+
+ [DataMember(Name = "favourited")]
+ public bool Favourited { get; set; }
+
+ [DataMember(Name = "sensitive")]
+ public bool? Sensitive { get; set; }
+
+ [DataMember(Name = "spoiler_text")]
+ public string SpoilerText { get; set; }
+
+ [DataMember(Name = "visibility")]
+ public string Visibility { get; set; }
+
+ [DataMember(Name = "media_attachments")]
+ public MastodonAttachment[] MediaAttachments { get; set; }
+
+ [DataMember(Name = "mentions")]
+ public MastodonMention[] Mentions { get; set; }
+
+ [DataMember(Name = "tags")]
+ public MastodonTag[] Tags { get; set; }
+
+ [DataMember(Name = "application")]
+ public MastodonApplication Application { get; set; }
+ }
+}
diff --git a/OpenTween/Api/DataModel/MastodonTag.cs b/OpenTween/Api/DataModel/MastodonTag.cs
new file mode 100644
index 000000000..77258710c
--- /dev/null
+++ b/OpenTween/Api/DataModel/MastodonTag.cs
@@ -0,0 +1,34 @@
+// OpenTween - Client of Twitter
+// Copyright (c) 2017 kim_upsilon (@kim_upsilon)
+// All rights reserved.
+//
+// This file is part of OpenTween.
+//
+// This program is free software; you can redistribute it and/or modify it
+// under the terms of the GNU 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 General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program. If not, see , or write to
+// the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
+// Boston, MA 02110-1301, USA.
+
+using System.Runtime.Serialization;
+
+namespace OpenTween.Api.DataModel
+{
+ public class MastodonTag
+ {
+ [DataMember(Name = "name")]
+ public string Name { get; set; }
+
+ [DataMember(Name = "url")]
+ public string Url { get; set; }
+ }
+}
diff --git a/OpenTween/OpenTween.csproj b/OpenTween/OpenTween.csproj
index 2182b4f78..e1a633909 100644
--- a/OpenTween/OpenTween.csproj
+++ b/OpenTween/OpenTween.csproj
@@ -71,6 +71,12 @@
+
+
+
+
+
+