mirror of
https://github.com/turt2live/matrix-dimension.git
synced 2024-10-01 01:05:53 -04:00
4.1 KiB
4.1 KiB
Dimension API
Dimension has its own API that allows for management of integrations in Riot/Matrix.
Types of integrations
Simple Bots
- Can only be in a room or not
- No state information held
Complex Bots
- Simple Bots that hold state information
Bridges
- Manage their own state through dedicated API endpoints
Endpoints
GET /api/v1/dimension/integrations/{roomId}?scalar_token=your_token_here
Parameters
{roomId}
- The room ID to get integrations forscalar_token
- The scalar (dimension) token to authenticate with
Example Response
TODO
DELETE /api/v1/dimension/integrations/{roomId}/{type}/{integrationType}?scalar_token=your_token_here
Parameters
{roomId}
- The room ID to remove the integration from{type}
- The integration type (eg:bot
,complex-bot
,bridge
, etc){integrationType}
- The integration subtype (eg:irc
,rssbot
,giphy
, etc)scalar_token
- The scalar (dimension) token to authenticate with
Example Response
TODO
PUT /api/v1/dimension/integrations/{roomId}/{type}/{integrationType}/state
Parameters
{roomId}
- The room ID to update the integration state in{type}
- The integration type (eg:bot
,complex-bot
,bridge
, etc){integrationType}
- The integration subtype (eg:irc
,rssbot
,giphy
, etc)
Example Body
{
"scalar_token": "your_token_here",
"state": {
// integration specific state goes here
}
}
GET /api/v1/dimension/integrations/{roomId}/{type}/{integrationType}/state?scalar_token=your_token_here
Parameters
{roomId}
- The room ID to get the integration state in{type}
- The integration type (eg:bot
,complex-bot
,bridge
, etc){integrationType}
- The integration subtype (eg:irc
,rssbot
,giphy
, etc)scalar_token
- The scalar (dimension) token to authenticate with
Response
An object representing the integration-specific state. See the documentation for the desired integration for more information.
GET /api/v1/dimension/{type}/{integrationType}/oauth/url?redirect=your_url_here&scalar_token=your_token_here
Parameters
{type}
- The integration type (eg:bot
,complex-bot
,bridge
, etc){integrationType}
- The integration subtype (eg:irc
,rssbot
,giphy
, etc)redirect
- The URL to redirect to when completescalar_token
- The scalar (dimension) token to authenticate with
Example Response
{
"url": "https://github.com/somewhere?with=params"
}
DELETE /api/v1/dimension/{type}/{integrationType}/oauth?scalar_token=your_token_here
Parameters
{type}
- The integration type (eg:bot
,complex-bot
,bridge
, etc){integrationType}
- The integration subtype (eg:irc
,rssbot
,giphy
, etc)scalar_token
- The scalar (dimension) token to authenticate with
Example Response
{}
Integration State Information
Simple Bots
Do not hold state.
Complex Bots
RSS Bot
{
// Mutable using state API
"feeds": [
"https://some.domain.com/feed.rss",
"https://some.domain.com/another_feed.rss"
],
// Read only. Controlled by other users.
"immutableFeeds": [
"https://some.domain.com/third_feed.rss",
"https://some.domain.com/fourth_feed.rss"
]
}
Github
{
// Mutable using state API
"repositories": {
"turt2live/matrix-dimension": ["push", "pull_request", "issues", "issue_comment", "pull_request_review_comment", "labels", "milestones", "assignments"],
"turt2live/matrix-voyager-bot": []
},
// Read only.
"authenticated": true
}
Unauthenticated response
{
// Read only.
"repositories": {},
// Read only.
"authenticated": false
}
Bridges
IRC
{
// Read only
"availableNetworks": [
{"name": "Freenode", "id": "freenode"},
{"name": "EsperNet", "id": "espernet"},
{"name": "OFTC", "id": "oftc"}
],
// Read only. Use IRC API to mutate
"channels": {
"freenode": [
"#dimensiontesting",
"#dimensiontest"
],
"espernet": [],
"oftc": []
}
}