RMRP API Google
A private HTTP service of the RMRP project (rmrp.ru) that lets the project's Google Sheets automation act in Discord: publish and edit service messages, grant and revoke roles, change nicknames and retrieve the member list. It is not a public Discord application users interact with — it is an internal API for the project's scripts.
🔒 Not publicly reachable
The service's single route is protected by an API key: a request without a valid
x-api-key header receives 401 Unauthorized. By default the service listens only
on 127.0.0.1:3000 and is not exposed to the internet.
🔗 Between Google and Discord
Requests are produced by the Google Apps Script of the project's spreadsheets. The service accepts them and performs actions strictly through the official Discord REST API, then returns the result to the caller.
🗄️ No database of its own
The service stores nothing: text, embeds and attachments are written into Discord, and the member list is returned to the script. There is no persistent store of profiles or history.
Purpose
The RMRP project's internal records live in Google Sheets. To avoid duplicating work by hand, a spreadsheet uses Apps Script to send a request to RMRP API Google, and the service performs the corresponding Discord action on behalf of the project's service bot: it sends a prepared message with embeds and attachments, edits a previously sent message, grants or revokes roles, changes a member's nickname, or returns the list of guild members so the spreadsheet can be reconciled with it.
How it works
- Google Sheets. A project staff member fills in an internal form or spreadsheet.
- Google Apps Script. The script builds a JSON request of the required type and sends it
as
POST /botswith the API key in thex-api-keyheader. - RMRP API Google. Verifies the key and performs the action through the official Discord REST API.
- Response. The service returns the IDs of created objects or the outcome of the operation (for example which roles were granted and which failed).
Supported actions
| Action type | What it does |
|---|---|
send-message |
Sends a message to the given channel: text, embeds (title, description, colour, author, image, footer, timestamp, fields) and attachments. |
edit-message |
Edits a previously sent message by its ID: updates text and embeds. |
assign-roles |
Grants one or more roles to a member and reports which roles were granted and which were not. |
remove-roles |
Removes one or more roles from a member with a per-role result report. |
change-nickname |
Changes a member's nickname on the given server. |
get-users |
Returns the guild member list: ID, username, nickname, role IDs and join date. |
Security and access
- API key. Every action requires a valid key in the
x-api-keyheader; requests without it are rejected with401. - Private address. By default the service listens only on
127.0.0.1:3000, so it is reachable only from the project's own server. - Request size limit. The request body is limited to 32 MB — enough for messages with attachments and protection against overload.
- Minimal Discord events. The bot connects to Discord without requesting the message content or member-list intents and performs only the REST actions explicitly requested by a script holding the correct key.
- No reading of conversations. The service does not read direct messages, does not subscribe to guild events and does not build user profiles.
Discord permissions used
The service uses only the permissions required by the actions above:
Send Messages Embed Links Attach Files Manage Messages (editing own messages) Manage Roles Manage Nicknames
What data is processed and why
| Data | Purpose | Where it lives |
|---|---|---|
| Text, embeds and attachments of service messages | Publishing and updating messages prepared by project staff in Discord | Written into Discord; not stored by the service |
| Discord IDs (guild, channel, message, user, role) | Addressing the action: where to post, which role to grant, whose nickname to change | Passed to Discord within the request; not stored |
Guild member list when get-users is requested |
Reconciling the roster with the project's spreadsheet | Returned to the calling Google Sheets script; not stored by the service |
| Technical service logs | Diagnosing errors and monitoring availability | On the project's server |
The service does not process: direct messages, payment or biometric data, health data, location data, or data of servers unrelated to the RMRP project.
Retention
- service messages, roles and nicknames — in Discord, for as long as the project's operations require;
- the service keeps no data store of its own — no accumulation of messages or profiles;
- technical logs — up to 90 days;
- on a reasoned request, data is deleted within 30 days (see the Privacy Policy).
Legal documents
- Privacy Policy — section “RMRP API Google” · Политика (RU)
- Terms of Use — section “RMRP API Google” · Условия (RU)
Contact
Official project Discord: discord.gg/6Az63EPEAA
Player support: forum.rmrp.ru — help
Project support e-mail: donate@rmrp.ru
Project website: rmrp.ru