Scopes
Scopes define what an API key may do. Grant only what the integration needs.
How scopes work
When creating a key you choose per area whether it may read (read) or also write (write). Write covers create, update and delete. A request outside the key scopes returns 403.
Available scopes
Available scopes:
| Scope | Grants access to |
|---|---|
invoices.read / invoices.write | Invoices, quotes, subscriptions (list/detail), payments, mail templates and email tracking |
relations.read / relations.write | Clients, suppliers, subscription writes, incasso mandate |
products.read / products.write | Products |
projects.read / projects.write | Projects and hours |
deals.read / deals.write | Deals, pipelines and phases |
tickets.read / tickets.write | Tickets and messages |
notes.read / notes.write | Notes |
tasks.read / tasks.write | Tasks |
expenses.read / expenses.write | Expenses |
files.read / files.write | Files |
planning.read / planning.write | Planning |
webhooks.write | AppPilot / webhook triggers |
Which scopes does my key have?
Ask /v1/me:
curl -sS https://api.appficient.nl/v1/me \
-H "Authorization: Bearer apf_your_key_here"{
"data": {
"surface": "extern",
"actor": {
"type": "api_key",
"label": "Integratie"
},
"scopes": [
"invoices.read",
"invoices.write"
]
},
"meta": {}
}Tip
Start with read
Start with read scopes only. Add write when your integration actually writes. Nothing can go wrong in between.