# Server Developers [<-- Back to README.md](./README.md) Requests are sent after any of these events: * Nameserver response * Authentication response * Local account fetch response (has auth) ## Endpoints ### `API: GET "/api/undead/v1/emotes"` (after local account response) Expects: `List` [(to DTO)](#emoteconfigdto) Replace existing emotes in the game with these, keyed by `UniqueName`. See [the source](./Core/Content/CustomRecNet/CustomEmotes/RecNetEmotes.cs) for more information. ### `API: GET "/api/undead/v1/photon"` (after local account response) Expects: `PhotonConfigDTO` [(to DTO)](#photonconfigdto) The patch uses a Photon configuration given by the server.
When this fails, the patch will fall back to the local config, if enabled. `ConnectionProtocol` is 0 for UDP, or 1 for TCP. Use UDP if you don't know what to use.
`ServerAddress`, `ServerPort`, and `ConnectionProtocol` are ignored when `SelfHosted` is enabled. When using a self-hosted server, ideally, you should set the `AppID` *and* `VoiceAppID` to the name
of your application, e.g. Master when using the port for a default Masterserver.
Voice will go over the same gameserver port as PUN does when selfhosting. See [the source](./Core/Content/CustomRecNet/CustomPhoton/CustomPhoton.cs) for more information. ## DTOs ### `EmoteConfigDTO` ```c# public class EmoteConfigDTO { public string UniqueName { get; set; } public string NewText { get; set; } public string RoomChatText { get; set; } public string FacialExpression { get; set; } public bool ForceEmoteBubble { get; set; } public bool OnlyBroadcastToTeam { get; set; } } ``` ### `PhotonConfigDTO` ```c# public class PhotonConfigDTO { public bool Logging { get; set; } public string AppID { get; set; } public string VoiceAppID { get; set; } public bool SelfHosted { get; set; } public string ServerAddress { get; set; } public int ServerPort { get; set; } public byte ConnectionProtocol { get; set; } } ```