{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://tupperbox.app/tupperbox_export_schema.json","title":"Tupperbox export","description":"The root object for the export data.","type":"object","required":["tuppers","groups"],"properties":{"groups":{"type":"array","items":{"type":"object","required":["name"],"properties":{"id":{"type":"integer","description":"An identifier used to reference this group from other objects, such as tuppers."},"user_id":{"type":"string","pattern":"^\\d{1,20}$","description":"Discord user ID of the user that originally created this group."},"name":{"type":"string","description":"Name for the group, used for both text commands and display."},"avatar":{"type":["string","null"],"minLength":1,"maxLength":128,"description":"Avatar hash. Can be used to construct the group's avatar URL in the following format: https://cdn.tupperbox.app/group-pfp/{user_id}/{avatar}.webp"},"description":{"type":["string","null"],"description":"Description of the group."},"tag":{"type":["string","null"],"maxLength":32,"description":"A short string that serves to identify tuppers belonging to this group. It shows up at the end of group members' names when proxying."}}}},"tuppers":{"type":"array","items":{"type":"object","required":["name","brackets"],"properties":{"id":{"type":"integer","description":"An internal ID for the tupper, currently has no real use and is ignored on import."},"user_id":{"type":"string","pattern":"^\\d{1,20}$","description":"Discord user ID of the user that originally created this tupper."},"name":{"type":"string","minLength":1,"maxLength":80,"description":"A name for the tupper used for text commands, and also for display if no `nick` name is set."},"brackets":{"type":"array","items":{"type":"string"},"description":"A flat array of prefix-suffix pairs. Even if one is empty it must still be provided as an empty string. The array must have an even length and be given in the form [prefix, suffix, prefix, suffix, ...]."},"avatar_url":{"type":"string","description":"A 'source URL' for the tupper's avatar. Might not always correspond to the URL obtained by the `avatar` property. If the avatar is cropped, this may point to the full uncropped version."},"avatar":{"type":["string","null"],"minLength":1,"maxLength":128,"description":"Hash of the tupper's avatar image used in the following url syntax: https://cdn.tupperbox.app/pfp/{user_id}/{avatar}.webp."},"avatar_ext":{"type":["string","null"],"minLength":1,"maxLength":16,"description":"File extension of the tupper's full-sized avatar image. Only used for premium uploads. If set, the full-sized avatar image can be found with this format: https://cdn.tupperbox.app/pfp/{user_id}/full/{avatar}.{avatar_ext}"},"banner":{"type":["string","null"],"minLength":1,"maxLength":128,"description":"Hash of the tupper's banner image used in the following url syntax: https://cdn.tupperbox.app/banner/{user_id}/{banner}.webp"},"posts":{"type":"integer","description":"Number of times this tupper has been used to proxy."},"show_brackets":{"type":"boolean","description":"Toggles whether the tupper's brackets are stripped or kept in proxied messages."},"birthday":{"type":["string","null"],"format":"date-time","description":"Designated birthday of a tupper. If set, a cake emoji is displayed on the tupper's name when it's their birthday."},"description":{"type":["string","null"],"description":"Description of the tupper."},"tag":{"type":["string","null"],"maxLength":32,"description":"Applied to the end of the tupper's name when proxying. Applied before group tag. Mostly made obsolete by `nick`, but kept as a legacy feature."},"nick":{"type":["string","null"],"maxLength":80,"description":"Tupper nickname. If set, this is the name that actually shows during proxies. Useful to have a complex name show up in proxies while keeping a simple name for text commands."},"created_at":{"type":["string","null"],"format":"date-time","description":"Original creation date of the tupper."},"group_id":{"type":["integer","null"],"description":"Local ID of the group this tupper belongs to. If it matches a group also defined within this export file, the tupper's group will be set to that group."},"group_name":{"type":["string","null"],"description":"Name of the group this tupper belongs to. Only used if there is a pre-existing group with this name, no pre-existing tupper to overwrite, and `group_id` doesn't match a group."},"last_used":{"type":["string","null"],"format":"date-time","description":"Last time the tupper was used to send a proxy."}}}}}}