Skip to main content

Mbin API (1.0.0)

Download OpenAPI specification:Download

Documentation for interacting with content on Mbin through the API

oauth

oauth

Begin an oauth2 authorization_code grant flow

query Parameters
response_type
required
string
Default: "code"
Value: "code"
client_id
required
string
redirect_uri
required
string <uri>

One of the valid redirect_uris that were registered for your client during client creation.

scope
required
string

A space delimited list of requested scopes

state
required
string

A randomly generated state variable to be used to prevent CSRF attacks

code_challenge
string

Required for public clients, begins PKCE flow when present

code_challenge_method
string
Enum: "S256" "plain"

Required for public clients, sets the type of code challenge used

Responses

Used to retrieve a Bearer token after receiving consent from the user

Request Body schema: multipart/form-data
grant_type
required
string
Enum: "authorization_code" "refresh_token" "client_credentials"

One of the three grant types available

client_id
required
string
client_secret
string

Required if using the client_credentials or authorization_code flow with a confidential client

code_verifier
string

Required if using the PKCE extension to authorization_code flow

code
string

Required during authorization_code flow. The code retrieved after redirect during authorization_code flow.

refresh_token
string

Required during refresh_token flow. This is the refresh token obtained after a successful authorization_code flow.

redirect_uri
string

Required during authorization_code flow. One of the valid redirect_uris that were registered for your client during client creation.

scope
string

Required during client_credentials flow. A space-delimited list of scopes the client token will be provided.

Responses

This endpoint can create an OAuth2 client for your application.

You can create a public or confidential client with any of 3 flows available. It's recommended that you pick either client_credentials, or authorization_code and refresh_token.

When creating clients with the client_credentials grant type, you must provide a unique username and contact email. The username and email will be used to create a new bot user, which your client authenticates as during the client_credentials flow. This user will be tagged as a bot on all of their posts, comments, and on their profile. In addition, the bot will not be allowed to use the API to vote on content.

If you are creating a client that will be used on a native app or webapp, the client should be marked as public. This will skip generation of a client secret and will require the client to use the PKCE (https://www.oauth.com/oauth2-servers/pkce/) extension during authorization_code flow. A public client cannot use the client_credentials flow. Public clients are recommended because apps running on user devices technically cannot store secrets safely - if they're determined enough, the user could retrieve the secret from their device's memory.

Request Body schema: application/json
name
required
string
contactEmail
required
string
description
string or null
public
boolean or null

Native applications installed on user devices and web apps are considered public since they cannot store secrets securely, so they should use PKCE. https://www.oauth.com/oauth2-servers/pkce/

username
string or null[a-zA-Z0-9_\-]{1,30}

Required if using the client_credentials grant type. Will attempt to create a bot user with the given username.

redirectUris
Array of strings
Default: []
grants
Array of strings non-empty
Default: []
Items Enum: "client_credentials" "authorization_code" "refresh_token"
scopes
Array of strings non-empty
Default: ["read"]
Items Enum: "read" "write" "delete" "subscribe" "block" "vote" "report" "domain" "domain:subscribe" "domain:block" "entry" "entry:create" "entry:edit" "entry:delete" "entry:vote" "entry:report" "entry_comment" "entry_comment:create" "entry_comment:edit" "entry_comment:delete" "entry_comment:vote" "entry_comment:report" "magazine" "magazine:subscribe" "magazine:block" "post" "post:create" "post:edit" "post:delete" "post:vote" "post:report" "post_comment" "post_comment:create" "post_comment:edit" "post_comment:delete" "post_comment:vote" "post_comment:report" "user" "user:profile" "user:profile:read" "user:profile:edit" "user:message" "user:message:read" "user:message:create" "user:notification" "user:notification:read" "user:notification:delete" "user:oauth_clients" "user:oauth_clients:read" "user:oauth_clients:edit" "user:follow" "user:block" "moderate" "moderate:entry" "moderate:entry:language" "moderate:entry:pin" "moderate:entry:set_adult" "moderate:entry:trash" "moderate:entry_comment" "moderate:entry_comment:language" "moderate:entry_comment:set_adult" "moderate:entry_comment:trash" "moderate:post" "moderate:post:language" "moderate:post:pin" "moderate:post:set_adult" "moderate:post:trash" "moderate:post_comment" "moderate:post_comment:language" "moderate:post_comment:set_adult" "moderate:post_comment:trash" "moderate:magazine" "moderate:magazine:ban" "moderate:magazine:ban:read" "moderate:magazine:ban:create" "moderate:magazine:ban:delete" "moderate:magazine:list" "moderate:magazine:reports" "moderate:magazine:reports:read" "moderate:magazine:reports:action" "moderate:magazine:trash:read" "moderate:magazine_admin" "moderate:magazine_admin:create" "moderate:magazine_admin:delete" "moderate:magazine_admin:update" "moderate:magazine_admin:theme" "moderate:magazine_admin:moderators" "moderate:magazine_admin:badges" "moderate:magazine_admin:tags" "moderate:magazine_admin:stats" "admin" "admin:entry:purge" "admin:entry_comment:purge" "admin:post:purge" "admin:post_comment:purge" "admin:magazine" "admin:magazine:move_entry" "admin:magazine:purge" "admin:user" "admin:user:ban" "admin:user:verify" "admin:user:delete" "admin:user:purge" "admin:instance" "admin:instance:stats" "admin:instance:settings" "admin:instance:settings:read" "admin:instance:settings:edit" "admin:instance:information:edit" "admin:federation" "admin:federation:read" "admin:federation:update" "admin:oauth_clients" "admin:oauth_clients:read" "admin:oauth_clients:revoke"

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "contactEmail": "string",
  • "description": "string",
  • "public": true,
  • "username": "string",
  • "redirectUris": [],
  • "grants": [
    ],
  • "scopes": [
    ]
}

Response samples

Content type
application/json
{
  • "identifier": "string",
  • "secret": "string",
  • "name": "string",
  • "contactEmail": "string",
  • "description": "string",
  • "user": { },
  • "redirectUris": [],
  • "grants": [
    ],
  • "scopes": [
    ],
  • "image": {
    }
}

This endpoint deactivates a client given their client_id and client_secret.

This is useful if a confidential client has had their secret compromised and a new client needs to be created. A public client cannot be deleted in this manner since it does not have a secret to be compromised

query Parameters
client_id
required
string
client_secret
required
string

Responses

Response samples

Content type
application/json
{}

This endpoint can create an OAuth2 client with a logo for your application.

The image uploaded to this endpoint will be shown to users on the consent page as your application's logo.

You can create a public or confidential client with any of 3 flows available. It's recommended that you pick either client_credentials, or authorization_code and refresh_token.

When creating clients with the client_credentials grant type, you must provide a unique username and contact email. The username and email will be used to create a new bot user, which your client authenticates as during the client_credentials flow. This user will be tagged as a bot on all of their posts, comments, and on their profile. In addition, the bot will not be allowed to use the API to vote on content.

If you are creating a client that will be used on a native app or webapp, the client should be marked as public. This will skip generation of a client secret and will require the client to use the PKCE (https://www.oauth.com/oauth2-servers/pkce/) extension during authorization_code flow. A public client cannot use the client_credentials flow. Public clients are recommended because apps running on user devices technically cannot store secrets safely - if they're determined enough, the user could retrieve the secret from their device's memory.

Request Body schema: multipart/form-data
name
required
string
contactEmail
required
string
description
string or null
public
boolean or null

Native applications installed on user devices and web apps are considered public since they cannot store secrets securely, so they should use PKCE. https://www.oauth.com/oauth2-servers/pkce/

username
string or null[a-zA-Z0-9_\-]{1,30}

Required if using the client_credentials grant type. Will attempt to create a bot user with the given username.

redirectUris
Array of strings
Default: []
grants
Array of strings non-empty
Default: []
Items Enum: "client_credentials" "authorization_code" "refresh_token"
scopes
Array of strings non-empty
Default: ["read"]
Items Enum: "read" "write" "delete" "subscribe" "block" "vote" "report" "domain" "domain:subscribe" "domain:block" "entry" "entry:create" "entry:edit" "entry:delete" "entry:vote" "entry:report" "entry_comment" "entry_comment:create" "entry_comment:edit" "entry_comment:delete" "entry_comment:vote" "entry_comment:report" "magazine" "magazine:subscribe" "magazine:block" "post" "post:create" "post:edit" "post:delete" "post:vote" "post:report" "post_comment" "post_comment:create" "post_comment:edit" "post_comment:delete" "post_comment:vote" "post_comment:report" "user" "user:profile" "user:profile:read" "user:profile:edit" "user:message" "user:message:read" "user:message:create" "user:notification" "user:notification:read" "user:notification:delete" "user:oauth_clients" "user:oauth_clients:read" "user:oauth_clients:edit" "user:follow" "user:block" "moderate" "moderate:entry" "moderate:entry:language" "moderate:entry:pin" "moderate:entry:set_adult" "moderate:entry:trash" "moderate:entry_comment" "moderate:entry_comment:language" "moderate:entry_comment:set_adult" "moderate:entry_comment:trash" "moderate:post" "moderate:post:language" "moderate:post:pin" "moderate:post:set_adult" "moderate:post:trash" "moderate:post_comment" "moderate:post_comment:language" "moderate:post_comment:set_adult" "moderate:post_comment:trash" "moderate:magazine" "moderate:magazine:ban" "moderate:magazine:ban:read" "moderate:magazine:ban:create" "moderate:magazine:ban:delete" "moderate:magazine:list" "moderate:magazine:reports" "moderate:magazine:reports:read" "moderate:magazine:reports:action" "moderate:magazine:trash:read" "moderate:magazine_admin" "moderate:magazine_admin:create" "moderate:magazine_admin:delete" "moderate:magazine_admin:update" "moderate:magazine_admin:theme" "moderate:magazine_admin:moderators" "moderate:magazine_admin:badges" "moderate:magazine_admin:tags" "moderate:magazine_admin:stats" "admin" "admin:entry:purge" "admin:entry_comment:purge" "admin:post:purge" "admin:post_comment:purge" "admin:magazine" "admin:magazine:move_entry" "admin:magazine:purge" "admin:user" "admin:user:ban" "admin:user:verify" "admin:user:delete" "admin:user:purge" "admin:instance" "admin:instance:stats" "admin:instance:settings" "admin:instance:settings:read" "admin:instance:settings:edit" "admin:instance:information:edit" "admin:federation" "admin:federation:read" "admin:federation:update" "admin:oauth_clients" "admin:oauth_clients:read" "admin:oauth_clients:revoke"
uploadImage
string <binary>

Responses

Response samples

Content type
application/json
{
  • "identifier": "string",
  • "secret": "string",
  • "name": "string",
  • "contactEmail": "string",
  • "description": "string",
  • "user": { },
  • "redirectUris": [],
  • "grants": [
    ],
  • "scopes": [
    ],
  • "image": {
    }
}

This API revokes any tokens associated with the authenticated user and client.

Responses

Response samples

Content type
application/json
{}

get_api_user_retrieve_oauth_consents

Authorizations:
oauth2
query Parameters
p
integer >= 1
Default: 1

Page of clients to retrieve

perPage
integer [ 1 .. 100 ]
Default: 15

Number of clients to retrieve per page

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "pagination": {
    }
}

admin/entry

admin/entry

Purges an entry from the instance, deleting it completely. This action is irreversible.

Authorizations:
oauth2
path Parameters
entry_id
required
integer

The entry to purge

Responses

Response samples

Content type
application/json
{}

Changes the magazine of the entry to target

Authorizations:
oauth2
path Parameters
entry_id
required
integer

The entry to move

target_id
required
integer

The magazine to move the entry to

Responses

Response samples

Content type
application/json
{
  • "entryId": 0,
  • "magazine": {
    },
  • "user": {
    },
  • "domain": {
    },
  • "title": "string",
  • "url": "string",
  • "image": {
    },
  • "body": "string",
  • "lang": "en",
  • "tags": [
    ],
  • "badges": [
    ],
  • "numComments": 0,
  • "uv": 0,
  • "dv": 0,
  • "favourites": 0,
  • "isFavourited": true,
  • "userVote": 0,
  • "isOc": false,
  • "isAdult": false,
  • "isPinned": false,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "editedAt": "2019-08-24T14:15:22Z",
  • "lastActive": "2019-08-24T14:15:22Z",
  • "type": "article",
  • "slug": "string",
  • "apId": "string",
  • "canAuthUserModerate": true,
  • "visibility": "private"
}

admin/entry_comment

admin/entry_comment

Purges a comment from the instance, deleting it completely. This action is irreversible.

Authorizations:
oauth2
path Parameters
comment_id
required
integer

The comment to purge

Responses

Response samples

Content type
application/json
{}

admin/post

admin/post

Purges a post from the instance, deleting it completely. This action is irreversible.

Authorizations:
oauth2
path Parameters
post_id
required
integer

The post to purge

Responses

Response samples

Content type
application/json
{}

admin/post_comment

admin/post_comment

Purges a post comment from the instance, deleting it completely. This action is irreversible.

Authorizations:
oauth2
path Parameters
comment_id
required
integer

The comment to purge

Responses

Response samples

Content type
application/json
{}

admin/user

admin/user

Retrieves a list of users currently banned from the instance

Authorizations:
oauth2
query Parameters
p
integer >= 1
Default: 1

Page of users to retrieve

perPage
integer [ 1 .. 100 ]
Default: 48

Number of users per page

group
string
Default: "all"
Enum: "all" "local" "remote"

What group of users to retrieve

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "pagination": {
    }
}

Bans a user from the instance

Authorizations:
oauth2
path Parameters
user_id
required
integer

The user to ban

Responses

Response samples

Content type
application/json
{
  • "isBanned": true,
  • "avatar": {
    },
  • "cover": {
    },
  • "username": "string",
  • "followersCount": 0,
  • "about": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "apProfileId": "string",
  • "apId": "string",
  • "isBot": true,
  • "isFollowedByUser": true,
  • "isFollowerOfUser": true,
  • "isBlockedByUser": true,
  • "isAdmin": true,
  • "isGlobalModerator": true,
  • "userId": 0,
  • "serverSoftware": "string",
  • "serverSoftwareVersion": "string"
}

Unbans a user from the instance

Authorizations:
oauth2
path Parameters
user_id
required
integer

The user to unban

Responses

Response samples

Content type
application/json
{
  • "isBanned": true,
  • "avatar": {
    },
  • "cover": {
    },
  • "username": "string",
  • "followersCount": 0,
  • "about": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "apProfileId": "string",
  • "apId": "string",
  • "isBot": true,
  • "isFollowedByUser": true,
  • "isFollowerOfUser": true,
  • "isBlockedByUser": true,
  • "isAdmin": true,
  • "isGlobalModerator": true,
  • "userId": 0,
  • "serverSoftware": "string",
  • "serverSoftwareVersion": "string"
}

Marks the user for deletion in 30 days.

Authorizations:
oauth2
path Parameters
user_id
required
integer

The user to delete

Responses

Response samples

Content type
application/json
{
  • "avatar": {
    },
  • "cover": {
    },
  • "username": "string",
  • "followersCount": 0,
  • "about": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "apProfileId": "string",
  • "apId": "string",
  • "isBot": true,
  • "isFollowedByUser": true,
  • "isFollowerOfUser": true,
  • "isBlockedByUser": true,
  • "isAdmin": true,
  • "isGlobalModerator": true,
  • "userId": 0,
  • "serverSoftware": "string",
  • "serverSoftwareVersion": "string"
}

Deletes the user from the instance completely.

This action is irreversable.

Authorizations:
oauth2
path Parameters
user_id
required
integer

The user to purge

Responses

Response samples

Content type
application/json
{}

Forcibly verifies a user on the instance, with no regard for the email confirmation

Authorizations:
oauth2
path Parameters
user_id
required
integer

The user to verify

Responses

Response samples

Content type
application/json
{
  • "avatar": {
    },
  • "cover": {
    },
  • "username": "string",
  • "followersCount": 0,
  • "about": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "apProfileId": "string",
  • "apId": "string",
  • "isBot": true,
  • "isFollowedByUser": true,
  • "isFollowerOfUser": true,
  • "isBlockedByUser": true,
  • "isAdmin": true,
  • "isGlobalModerator": true,
  • "userId": 0,
  • "serverSoftware": "string",
  • "serverSoftwareVersion": "string"
}

admin/instance

admin/instance

get_api_admin_retrieve_settings

Authorizations:
oauth2

Responses

Response samples

Content type
application/json
{
  • "KBIN_DOMAIN": "string",
  • "KBIN_TITLE": "string",
  • "KBIN_META_TITLE": "string",
  • "KBIN_META_KEYWORDS": "string",
  • "KBIN_META_DESCRIPTION": "string",
  • "KBIN_DEFAULT_LANG": "string",
  • "KBIN_CONTACT_EMAIL": "string",
  • "KBIN_SENDER_EMAIL": "string",
  • "MBIN_DEFAULT_THEME": "string",
  • "KBIN_JS_ENABLED": true,
  • "KBIN_FEDERATION_ENABLED": true,
  • "KBIN_REGISTRATIONS_ENABLED": true,
  • "KBIN_BANNED_INSTANCES": [
    ],
  • "KBIN_HEADER_LOGO": true,
  • "KBIN_CAPTCHA_ENABLED": true,
  • "KBIN_MERCURE_ENABLED": true,
  • "KBIN_FEDERATION_PAGE_ENABLED": true,
  • "KBIN_ADMIN_ONLY_OAUTH_CLIENTS": true,
  • "MBIN_SSO_ONLY_MODE": true,
  • "MBIN_PRIVATE_INSTANCE": true,
  • "KBIN_FEDERATED_SEARCH_ONLY_LOGGEDIN": true,
  • "MBIN_SIDEBAR_SECTIONS_LOCAL_ONLY": true,
  • "MBIN_SSO_REGISTRATIONS_ENABLED": true,
  • "MBIN_RESTRICT_MAGAZINE_CREATION": true,
  • "MBIN_SSO_SHOW_FIRST": true,
  • "MAX_IMAGE_BYTES": 0,
  • "MBIN_DOWNVOTES_MODE": "string"
}

put_api_admin_update_settings

Authorizations:
oauth2
Request Body schema: application/json
KBIN_DOMAIN
required
string
KBIN_TITLE
required
string
KBIN_META_TITLE
required
string
KBIN_META_KEYWORDS
required
string
KBIN_META_DESCRIPTION
required
string
KBIN_DEFAULT_LANG
required
string
KBIN_CONTACT_EMAIL
required
string
KBIN_SENDER_EMAIL
required
string
MBIN_DEFAULT_THEME
required
string
KBIN_JS_ENABLED
required
boolean
KBIN_FEDERATION_ENABLED
required
boolean
KBIN_REGISTRATIONS_ENABLED
required
boolean
KBIN_BANNED_INSTANCES
Array of strings
KBIN_HEADER_LOGO
required
boolean
KBIN_CAPTCHA_ENABLED
required
boolean
KBIN_MERCURE_ENABLED
required
boolean
KBIN_FEDERATION_PAGE_ENABLED
required
boolean
KBIN_ADMIN_ONLY_OAUTH_CLIENTS
required
boolean
MBIN_SSO_ONLY_MODE
required
boolean
MBIN_PRIVATE_INSTANCE
required
boolean
KBIN_FEDERATED_SEARCH_ONLY_LOGGEDIN
required
boolean
MBIN_SIDEBAR_SECTIONS_LOCAL_ONLY
required
boolean
MBIN_SSO_REGISTRATIONS_ENABLED
required
boolean
MBIN_RESTRICT_MAGAZINE_CREATION
required
boolean
MBIN_SSO_SHOW_FIRST
required
boolean
MAX_IMAGE_BYTES
required
integer
MBIN_DOWNVOTES_MODE
required
string

Responses

Request samples

Content type
application/json
{
  • "KBIN_DOMAIN": "string",
  • "KBIN_TITLE": "string",
  • "KBIN_META_TITLE": "string",
  • "KBIN_META_KEYWORDS": "string",
  • "KBIN_META_DESCRIPTION": "string",
  • "KBIN_DEFAULT_LANG": "string",
  • "KBIN_CONTACT_EMAIL": "string",
  • "KBIN_SENDER_EMAIL": "string",
  • "MBIN_DEFAULT_THEME": "string",
  • "KBIN_JS_ENABLED": true,
  • "KBIN_FEDERATION_ENABLED": true,
  • "KBIN_REGISTRATIONS_ENABLED": true,
  • "KBIN_BANNED_INSTANCES": [
    ],
  • "KBIN_HEADER_LOGO": true,
  • "KBIN_CAPTCHA_ENABLED": true,
  • "KBIN_MERCURE_ENABLED": true,
  • "KBIN_FEDERATION_PAGE_ENABLED": true,
  • "KBIN_ADMIN_ONLY_OAUTH_CLIENTS": true,
  • "MBIN_SSO_ONLY_MODE": true,
  • "MBIN_PRIVATE_INSTANCE": true,
  • "KBIN_FEDERATED_SEARCH_ONLY_LOGGEDIN": true,
  • "MBIN_SIDEBAR_SECTIONS_LOCAL_ONLY": true,
  • "MBIN_SSO_REGISTRATIONS_ENABLED": true,
  • "MBIN_RESTRICT_MAGAZINE_CREATION": true,
  • "MBIN_SSO_SHOW_FIRST": true,
  • "MAX_IMAGE_BYTES": 0,
  • "MBIN_DOWNVOTES_MODE": "string"
}

Response samples

Content type
application/json
{
  • "KBIN_DOMAIN": "string",
  • "KBIN_TITLE": "string",
  • "KBIN_META_TITLE": "string",
  • "KBIN_META_KEYWORDS": "string",
  • "KBIN_META_DESCRIPTION": "string",
  • "KBIN_DEFAULT_LANG": "string",
  • "KBIN_CONTACT_EMAIL": "string",
  • "KBIN_SENDER_EMAIL": "string",
  • "MBIN_DEFAULT_THEME": "string",
  • "KBIN_JS_ENABLED": true,
  • "KBIN_FEDERATION_ENABLED": true,
  • "KBIN_REGISTRATIONS_ENABLED": true,
  • "KBIN_BANNED_INSTANCES": [
    ],
  • "KBIN_HEADER_LOGO": true,
  • "KBIN_CAPTCHA_ENABLED": true,
  • "KBIN_MERCURE_ENABLED": true,
  • "KBIN_FEDERATION_PAGE_ENABLED": true,
  • "KBIN_ADMIN_ONLY_OAUTH_CLIENTS": true,
  • "MBIN_SSO_ONLY_MODE": true,
  • "MBIN_PRIVATE_INSTANCE": true,
  • "KBIN_FEDERATED_SEARCH_ONLY_LOGGEDIN": true,
  • "MBIN_SIDEBAR_SECTIONS_LOCAL_ONLY": true,
  • "MBIN_SSO_REGISTRATIONS_ENABLED": true,
  • "MBIN_RESTRICT_MAGAZINE_CREATION": true,
  • "MBIN_SSO_SHOW_FIRST": true,
  • "MAX_IMAGE_BYTES": 0,
  • "MBIN_DOWNVOTES_MODE": "string"
}

put_api_admin_update_pages

Authorizations:
oauth2
path Parameters
page
required
string
Enum: "about" "contact" "faq" "privacyPolicy" "terms"
Request Body schema: application/json
body
required
string

Responses

Request samples

Content type
application/json
{
  • "body": "string"
}

Response samples

Content type
application/json
{
  • "about": "string",
  • "contact": "string",
  • "faq": "string",
  • "privacyPolicy": "string",
  • "terms": "string",
  • "downvotesMode": "disabled"
}

admin/oauth2

admin/oauth2

Retrieve oauth2 client access stats in a particular interval.

Authorizations:
oauth2
query Parameters
start
string <date>

The start date of the window to retrieve views in. If not provided defaults to 1 resolution ago

end
string <date>

The end date of the window to retrieve views in. If not provided defaults to today

resolution
required
string
Enum: "all" "year" "month" "day" "hour" "second" "milliseconds"

The size of chunks to aggregate views in

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

get_api_admin_retrieve_client

Authorizations:
oauth2
path Parameters
client_identifier
required
string

The OAuth2 client to retrieve

Responses

Response samples

Content type
application/json
{
  • "identifier": "string",
  • "name": "string",
  • "contactEmail": "string",
  • "description": "string",
  • "user": {
    },
  • "active": true,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "redirectUris": [],
  • "grants": [
    ],
  • "scopes": [
    ]
}

get_api_admin_retrieve_client_collection

Authorizations:
oauth2
query Parameters
p
integer >= 1
Default: 1

Page of clients to retrieve

perPage
integer [ 1 .. 100 ]
Default: 15

Number of clients per page

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "pagination": {
    }
}

instance

instance

Get de-federated instances.

Responses

Response samples

Content type
application/json
{
  • "instances": [
    ]
}

Retrieve information about the instance written by the admin.

Responses

Response samples

Content type
application/json
{
  • "about": "string",
  • "contact": "string",
  • "faq": "string",
  • "privacyPolicy": "string",
  • "terms": "string",
  • "downvotesMode": "disabled"
}

Retrieve information about moderation actions taken across the instance.

query Parameters
p
integer >= 1
Default: 1

Page of moderation log to retrieve

perPage
integer [ 1 .. 100 ]
Default: 25

Number of moderation log items to retrieve per page

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "pagination": {
    }
}

Get de-federated instances.

Responses

Response samples

Content type
application/json
{
  • "instances": [
    ]
}

Get federated instances.

Responses

Response samples

Content type
application/json
{
  • "instances": [
    ]
}

Get dead instances.

Responses

Response samples

Content type
application/json
{
  • "instances": [
    ]
}

Retrieve instance information (like the software name and version plus general website info).

Responses

Response samples

Content type
application/json
{
  • "softwareName": "mbin",
  • "softwareVersion": "2.0.0",
  • "softwareRepository": "https://github.com/MbinOrg/mbin",
  • "websiteDomain": "https://mbin.social",
  • "websiteContactEmail": "contact@mbin.social",
  • "websiteTitle": "Mbin",
  • "websiteOpenRegistrations": true,
  • "websiteFederationEnabled": true,
  • "websiteDefaultLang": "en"
}

admin/federation

admin/federation

put_api_admin_update_defederated_instances

Authorizations:
oauth2
Request Body schema: application/json
instances
Array of strings <url> [ items <url > ]

Responses

Request samples

Content type
application/json
{
  • "instances": [
    ]
}

Response samples

Content type
application/json
{
  • "instances": [
    ]
}

admin/magazine

admin/magazine

delete_api_admin_purge_magazine

Authorizations:
oauth2
path Parameters
magazine_id
required
integer

The magazine to purge

Responses

Response samples

Content type
application/json
{}

domain

domain

get_api_domain_entries_retrieve

path Parameters
domain_id
required
integer

The domain to retrieve entries from

query Parameters
sort
any
Default: "hot"
Enum: "active" "hot" "newest" "oldest" "top" "commented"

The sorting method to use during entry fetch

time
any
Default: "∞"
Enum: "3h" "6h" "12h" "1d" "1w" "1m" "1y" "∞" "all"

The maximum age of retrieved entries

p
integer >= 1
Default: 1

Page of entries to retrieve

perPage
integer [ 1 .. 100 ]
Default: 25

Number of entries to retrieve per page

lang[]
Array of strings[ items [ 2 .. 3 ] characters ]

Language(s) of entries to return

usePreferredLangs
boolean
Default: false

Filter by a user's preferred languages? (Requires authentication and takes precedence over lang[])

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "pagination": {
    }
}

get_api_domain_entry_comments_retrieve

path Parameters
domain_id
required
integer

The domain to retrieve comments from

query Parameters
sort
string
Default: "hot"
Enum: "newest" "top" "hot" "newest" "oldest"

The sorting method to use during comment fetch

time
string
Default: "∞"
Enum: "3h" "6h" "12h" "1d" "1w" "1m" "1y" "∞" "all"

The maximum age of retrieved entries

p
integer >= 1
Default: 1

Page of comments to retrieve

perPage
integer [ 1 .. 100 ]
Default: 25

Number of comments to retrieve per page

d
integer [ 0 .. 25 ]
Default: 10

Depth of comment children to retrieve

lang[]
Array of strings[ items [ 2 .. 3 ] characters ]

Language(s) of entries to return

usePreferredLangs
boolean
Default: false

Filter by a user's preferred languages? (Requires authentication and takes precedence over lang[])

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "pagination": {
    }
}

get_api_domains_retrieve

query Parameters
p
integer >= 1
Default: 1

Page of domains to retrieve

perPage
integer [ 1 .. 100 ]
Default: 100

Number of domains per page

q
string

Domain search term

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "pagination": {
    }
}

get_api_domain_retrieve

path Parameters
domain_id
required
integer

The domain to retrieve

Responses

Response samples

Content type
application/json
{
  • "name": "string",
  • "entryCount": 0,
  • "subscriptionsCount": 0,
  • "isUserSubscribed": true,
  • "isBlockedByUser": true,
  • "domainId": 0
}

get_api_domains_retrieve_subscribed

Authorizations:
oauth2
query Parameters
p
integer >= 1
Default: 1

Page of domains to retrieve

perPage
integer [ 1 .. 100 ]
Default: 100

Number of domains per page

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "pagination": {
    }
}

get_api_domains_retrieve_blocked

Authorizations:
oauth2
query Parameters
p
integer >= 1
Default: 1

Page of domains to retrieve

perPage
integer [ 1 .. 100 ]
Default: 100

Number of domains per page

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "pagination": {
    }
}

put_api_domain_block

Authorizations:
oauth2
path Parameters
domain_id
required
integer

The domain to block

Responses

Response samples

Content type
application/json
{
  • "name": "string",
  • "entryCount": 0,
  • "subscriptionsCount": 0,
  • "isUserSubscribed": true,
  • "isBlockedByUser": true,
  • "domainId": 0
}

put_api_domain_unblock

Authorizations:
oauth2
path Parameters
domain_id
required
integer

The domain to unblock

Responses

Response samples

Content type
application/json
{
  • "name": "string",
  • "entryCount": 0,
  • "subscriptionsCount": 0,
  • "isUserSubscribed": true,
  • "isBlockedByUser": true,
  • "domainId": 0
}

put_api_domain_subscribe

Authorizations:
oauth2
path Parameters
domain_id
required
integer

The domain to subscribe to

Responses

Response samples

Content type
application/json
{
  • "name": "string",
  • "entryCount": 0,
  • "subscriptionsCount": 0,
  • "isUserSubscribed": true,
  • "isBlockedByUser": true,
  • "domainId": 0
}

put_api_domain_unsubscribe

Authorizations:
oauth2
path Parameters
domain_id
required
integer

The domain to unsubscribe from

Responses

Response samples

Content type
application/json
{
  • "name": "string",
  • "entryCount": 0,
  • "subscriptionsCount": 0,
  • "isUserSubscribed": true,
  • "isBlockedByUser": true,
  • "domainId": 0
}

entry

entry

get_api_entry_retrieve

path Parameters
entry_id
required
integer

The entry to retrieve

Responses

Response samples

Content type
application/json
{
  • "entryId": 0,
  • "magazine": {
    },
  • "user": {
    },
  • "domain": {
    },
  • "title": "string",
  • "url": "string",
  • "image": {
    },
  • "body": "string",
  • "lang": "en",
  • "tags": [
    ],
  • "badges": [
    ],
  • "numComments": 0,
  • "uv": 0,
  • "dv": 0,
  • "favourites": 0,
  • "isFavourited": true,
  • "userVote": 0,
  • "isOc": false,
  • "isAdult": false,
  • "isPinned": false,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "editedAt": "2019-08-24T14:15:22Z",
  • "lastActive": "2019-08-24T14:15:22Z",
  • "type": "article",
  • "slug": "string",
  • "apId": "string",
  • "canAuthUserModerate": true,
  • "visibility": "private"
}

put_api_entry_update

Authorizations:
oauth2
path Parameters
entry_id
required
integer

The id of the entry to update

Request Body schema: application/json
title
string or null
tags
Array of strings
isOc
boolean
Default: false
body
string or null
lang
string or null [ 2 .. 3 ] characters
isAdult
boolean
Default: false

Responses

Request samples

Content type
application/json
{
  • "title": "Posted from the API!",
  • "tags": [
    ],
  • "isOc": false,
  • "body": "We can post cat pics from the API now! What are you going to do with this power?",
  • "lang": "en",
  • "isAdult": false
}

Response samples

Content type
application/json
{
  • "entryId": 0,
  • "magazine": {
    },
  • "user": {
    },
  • "domain": {
    },
  • "title": "string",
  • "url": "string",
  • "image": {
    },
  • "body": "string",
  • "lang": "en",
  • "tags": [
    ],
  • "badges": [
    ],
  • "numComments": 0,
  • "uv": 0,
  • "dv": 0,
  • "favourites": 0,
  • "isFavourited": true,
  • "userVote": 0,
  • "isOc": false,
  • "isAdult": false,
  • "isPinned": false,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "editedAt": "2019-08-24T14:15:22Z",
  • "lastActive": "2019-08-24T14:15:22Z",
  • "type": "article",
  • "slug": "string",
  • "apId": "string",
  • "canAuthUserModerate": true,
  • "visibility": "private"
}

delete_api_entry_delete

Authorizations:
oauth2
path Parameters
entry_id
required
integer

The entry to delete

Responses

Response samples

Content type
application/json
{}

post_api_entry_report

Authorizations:
oauth2
path Parameters
entry_id
required
integer

The entry to report

Request Body schema: application/json
reason
string or null

Responses

Request samples

Content type
application/json
{
  • "reason": "string"
}

Response samples

Content type
application/json
{}

put_api_entry_vote

Authorizations:
oauth2
path Parameters
entry_id
required
integer

The entry to vote upon

choice
required
integer
Enum: -1 0 1

The user's voting choice. 0 clears the user's vote.

Responses

Response samples

Content type
application/json
{
  • "entryId": 0,
  • "magazine": {
    },
  • "user": {
    },
  • "domain": {
    },
  • "title": "string",
  • "url": "string",
  • "image": {
    },
  • "body": "string",
  • "lang": "en",
  • "tags": [
    ],
  • "badges": [
    ],
  • "numComments": 0,
  • "uv": 0,
  • "dv": 0,
  • "favourites": 0,
  • "isFavourited": true,
  • "userVote": 0,
  • "isOc": false,
  • "isAdult": false,
  • "isPinned": false,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "editedAt": "2019-08-24T14:15:22Z",
  • "lastActive": "2019-08-24T14:15:22Z",
  • "type": "article",
  • "slug": "string",
  • "apId": "string",
  • "canAuthUserModerate": true,
  • "visibility": "private"
}

put_api_entry_favourite

Authorizations:
oauth2
path Parameters
entry_id
required
integer

The entry to favourite

Responses

Response samples

Content type
application/json
{
  • "entryId": 0,
  • "magazine": {
    },
  • "user": {
    },
  • "domain": {
    },
  • "title": "string",
  • "url": "string",
  • "image": {
    },
  • "body": "string",
  • "lang": "en",
  • "tags": [
    ],
  • "badges": [
    ],
  • "numComments": 0,
  • "uv": 0,
  • "dv": 0,
  • "favourites": 0,
  • "isFavourited": true,
  • "userVote": 0,
  • "isOc": false,
  • "isAdult": false,
  • "isPinned": false,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "editedAt": "2019-08-24T14:15:22Z",
  • "lastActive": "2019-08-24T14:15:22Z",
  • "type": "article",
  • "slug": "string",
  • "apId": "string",
  • "canAuthUserModerate": true,
  • "visibility": "private"
}

get_api_entries_subscribed

Authorizations:
oauth2
query Parameters
sort
any
Default: "hot"
Enum: "active" "hot" "newest" "oldest" "top" "commented"

The sorting method to use during entry fetch

time
any
Default: "∞"
Enum: "3h" "6h" "12h" "1d" "1w" "1m" "1y" "∞" "all"

The maximum age of retrieved entries

p
integer >= 1
Default: 1

Page of entries to retrieve

perPage
integer [ 1 .. 100 ]
Default: 25

Number of entries to retrieve per page

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "pagination": {
    }
}

get_api_entries_moderated

Authorizations:
oauth2
query Parameters
sort
any
Default: "newest"
Enum: "active" "hot" "newest" "oldest" "top" "commented"

The sorting method to use during entry fetch

time
any
Default: "∞"
Enum: "3h" "6h" "12h" "1d" "1w" "1m" "1y" "∞" "all"

The maximum age of retrieved entries

p
integer >= 1
Default: 1

Page of entries to retrieve

perPage
integer [ 1 .. 100 ]
Default: 25

Number of entries to retrieve per page

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "pagination": {
    }
}

get_api_entries_favourited

Authorizations:
oauth2
query Parameters
sort
any
Default: "top"
Enum: "active" "hot" "newest" "oldest" "top" "commented"

The sorting method to use during entry fetch

time
any
Default: "∞"
Enum: "3h" "6h" "12h" "1d" "1w" "1m" "1y" "∞" "all"

The maximum age of retrieved entries

p
integer >= 1
Default: 1

Page of entries to retrieve

perPage
integer [ 1 .. 100 ]
Default: 25

Number of entries to retrieve per page

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "pagination": {
    }
}

get_api_entries_collection

query Parameters
sort
any
Default: "hot"
Enum: "active" "hot" "newest" "oldest" "top" "commented"

The sorting method to use during entry fetch

time
any
Default: "∞"
Enum: "3h" "6h" "12h" "1d" "1w" "1m" "1y" "∞" "all"

The maximum age of retrieved entries

p
integer >= 1
Default: 1

Page of entries to retrieve

perPage
integer [ 1 .. 100 ]
Default: 25

Number of entries to retrieve per page

lang[]
Array of strings

Language(s) of entries to return

usePreferredLangs
boolean
Default: false

Filter by a user's preferred languages? (Requires authentication and takes precedence over lang[])

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "pagination": {
    }
}

get_api_entry_comments

path Parameters
entry_id
required
integer

The entry to retrieve comments from

query Parameters
sortBy
string
Default: "hot"
Enum: "newest" "top" "hot" "newest" "oldest"

The order to retrieve comments by

time
string
Default: "∞"
Enum: "3h" "6h" "12h" "1d" "1w" "1m" "1y" "∞" "all"

The maximum age of retrieved comments

p
integer
Default: 1

The page of comments to retrieve

perPage
integer [ 1 .. 100 ]
Default: 15

The number of top level comments per page

d
integer [ 0 .. 25 ]
Default: 10

The depth of comment trees retrieved

lang[]
Array of strings

Language(s) of comments to return

usePreferredLangs
boolean
Default: false

Filter by a user's preferred languages? (Requires authentication and takes precedence over lang[])

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "pagination": {
    }
}

entry_comment

entry_comment

post_api_entry_comment_new

Authorizations:
oauth2
path Parameters
entry_id
required
integer

Entry to which the new comment will belong

Request Body schema: application/json
body
string or null
lang
string or null [ 2 .. 3 ] characters
isAdult
boolean
Default: false

Responses

Request samples

Content type
application/json
{
  • "body": "We can post cat pics from the API now! What are you going to do with this power?",
  • "lang": "en",
  • "isAdult": false
}

Response samples

Content type
application/json
{
  • "commentId": 0,
  • "user": {
    },
  • "magazine": {
    },
  • "entryId": 0,
  • "parentId": 0,
  • "rootId": 0,
  • "image": {
    },
  • "body": "string",
  • "lang": "en",
  • "mentions": [
    ],
  • "tags": [
    ],
  • "uv": 0,
  • "dv": 0,
  • "favourites": 0,
  • "isFavourited": true,
  • "userVote": 0,
  • "isAdult": false,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "editedAt": "2019-08-24T14:15:22Z",
  • "lastActive": "2019-08-24T14:15:22Z",
  • "apId": "string",
  • "children": [
    ],
  • "childCount": 0,
  • "canAuthUserModerate": true,
  • "visibility": "private"
}

post_api_entry_comment_new_image

Authorizations:
oauth2
path Parameters
entry_id
required
integer

Entry to which the new comment will belong

Request Body schema: multipart/form-data
body
string or null
lang
string or null [ 2 .. 3 ] characters
isAdult
boolean
Default: false
alt
string or null
uploadImage
string <binary>

Responses

Response samples

Content type
application/json
{
  • "commentId": 0,
  • "user": {
    },
  • "magazine": {
    },
  • "entryId": 0,
  • "parentId": 0,
  • "rootId": 0,
  • "image": {
    },
  • "body": "string",
  • "lang": "en",
  • "mentions": [
    ],
  • "tags": [
    ],
  • "uv": 0,
  • "dv": 0,
  • "favourites": 0,
  • "isFavourited": true,
  • "userVote": 0,
  • "isAdult": false,
  • "createdAt": "2019-08-24T14:15:22Z",
  • "editedAt": "2019-08-24T14:15:22Z",
  • "lastActive": "2019-08-24T14:15:22Z",
  • "apId": "string",
  • "children": [