Scopes narrow what a key may call; the key’s creator’s own permissions still apply. A key can never do more than the person who made it can: if they can’t edit an event, the key can’t either, and if they leave your organisation, their keys stop working. Changes made with a key are recorded in your audit log against its creator, marked with the key.To change a key’s scopes, create a new key with the scopes you need and revoke the old one.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"EMS Developers","description":"Connect your systems to EMS with the public API.","colors":{"primary":"#C83A1E","light":"#E35D43","dark":"#C83A1E"},"logo":{"light":"/logo/light.svg","dark":"/logo/dark.svg","href":"https://ems.aventia.africa"},"favicon":"/favicon.svg","api":{"openapi":"api-reference/openapi.json","playground":{"display":"simple"},"examples":{"languages":["curl","javascript","python","php","go"]}},"background":{"color":{"light":"#F7F1E8","dark":"#251B2F"}},"navbar":{"primary":{"type":"button","label":"Get API keys","href":"https://ems.aventia.africa/settings/api-keys"}},"footer":{"socials":{"website":"https://ems.aventia.africa"}},"fonts":{"heading":{"family":"Noto Serif","weight":700},"body":{"family":"Noto Sans"}},"integrations":{"telemetry":{"enabled":false}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"hasAudioNarration":false,"customDomains":[],"gitSource":{"type":"github","owner":"local","repo":"local","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":"local","isBase":true},"buildId":"local","clientVersion":"0.0.4071"},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false,"isLoggedInCli":false,"mintExport":{}},"customCss":[],"page":{"pagePath":"scopes","slug":"/scopes","pageMetadata":{"title":"Scopes","description":"What each API key is allowed to do.","href":"/scopes"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"What each API key is allowed to do.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Each key has one or more scopes, chosen when you create it. A request to an endpoint the key’s scopes don’t cover gets `,_jsx(_components.code,{children:`403 Forbidden`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Scope`}),_jsx(_components.th,{children:`Allows`}),_jsx(_components.th,{children:`Endpoints`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`events:read`})}),_jsx(_components.td,{children:`Reading your events`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /events`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`speakers:read`})}),_jsx(_components.td,{children:`Reading speakers, speaker categories and speaker settings (without contact details)`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`GET`}),` speaker endpoints`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`speakers:write`})}),_jsx(_components.td,{children:`Adding, editing and deleting speakers, changing speaker settings; includes contact details`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`POST`}),`, `,_jsx(_components.code,{children:`PUT`}),`, `,_jsx(_components.code,{children:`DELETE`}),` speaker endpoints`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`media:write`})}),_jsx(_components.td,{children:`Uploading photos to your media library`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/media/uploads`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`agenda:read`})}),_jsx(_components.td,{children:`Reading agenda sessions`}),_jsx(_components.td,{children:`Coming soon`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`agenda:write`})}),_jsx(_components.td,{children:`Adding and editing sessions`}),_jsx(_components.td,{children:`Coming soon`})]})]})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`GET /whoami`}),` works with any valid key: use it to check a key and see its scopes.`]}),`\n`,_jsx(Heading,{level:`2`,id:`a-key-acts-for-the-person-who-created-it`,children:`A key acts for the person who created it`}),`\n`,_jsx(_components.p,{children:`Scopes narrow what a key may call; the key’s creator’s own permissions still apply. A key can never do more than the person who made it can: if they can’t edit an event, the key can’t either, and if they leave your organisation, their keys stop working. Changes made with a key are recorded in your audit log against its creator, marked with the key.`}),`\n`,_jsx(_components.p,{children:`To change a key’s scopes, create a new key with the scopes you need and revoke the old one.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Scopes","description":"What each API key is allowed to do.","href":"/scopes"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"A key acts for the person who created it","slug":"a-key-acts-for-the-person-who-created-it","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"localhost","siteName":"EMS Developers","title":"Scopes - EMS Developers","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"originalFileLocation":"scopes.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"What each API key is allowed to do.\">\u003cmeta data-mint-head name=\"application-name\" content=\"EMS Developers\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/favicons/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/favicons/favicon-32x32.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/favicons/favicon-16x16.png\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/favicons/favicon.ico\">\u003cmeta data-mint-head property=\"og:title\" content=\"Scopes - EMS Developers\">\u003cmeta data-mint-head property=\"og:description\" content=\"What each API key is allowed to do.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"EMS Developers\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://local./scopes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Scopes - EMS Developers\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"What each API key is allowed to do.\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/favicons/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"EMS Developers\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#C83A1E\">\u003clink data-mint-head rel=\"canonical\" href=\"https://local./scopes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/scopes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"EMS Developers\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"EMS Developers","nav":{"tabs":[{"tab":"Guides","groups":[{"group":"Get started","pages":[{"title":"EMS Public API","href":""},{"title":"Quickstart","href":"/quickstart"}]},{"group":"Using the API","pages":[{"title":"Authentication","description":"API key pairs and HTTP Basic auth.","href":"/authentication"},{"title":"Scopes","href":"/scopes"},{"title":"Pagination","description":"Walking through long lists with cursors.","href":"/pagination"},{"title":"Errors","href":"/errors"},{"title":"Rate limits","href":"/rate-limits"}]},{"group":"Guides","pages":[{"title":"Speakers","href":"/speakers"},{"title":"Uploading photos","href":"/uploading-photos"}]},{"group":"More","pages":[{"title":"Changelog","href":"/changelog"}]}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/api-reference/whoami"}]}]},"basePath":"","title":"Scopes - EMS Developers","buildId":"660b7fc6c9f5","dynamics":[],"chunks":[]}