{"name":"Sparky API directory","version":"v1","auth":{"issuer":"https://accounts.sparkyli.com/realms/sparky","openid_configuration":"https://accounts.sparkyli.com/realms/sparky/.well-known/openid-configuration","flows":{"person":"OAuth2 authorization code with PKCE, or device authorization for terminals. Acts with exactly that person's role.","program":"Requested through your organization's API settings; a support ticket asks for a service account scoped to what you need."},"note":"API access needs a plan that includes it, and an owner or admin must switch it on for the organization (SparkyLi settings, API and agents)."},"apis":[{"slug":"sparkyli","name":"Platform","status":"live","summary":"Who you are, your organizations, every product, your subscription per product, and this directory. The place an agent starts.","access":"read","requires_paid_plan":false,"sign_in":["person","program"],"base_url":"https://sparkyli.com/api/v1","openapi":"https://sparkyli.com/api/v1/openapi.yaml"},{"slug":"sparkytours","name":"Sparky Tours","status":"live","summary":"Journeys offered on a website, with their places, booking terms and business profile.","access":"read","requires_paid_plan":true,"sign_in":["person"],"base_url":"https://tours.sparkyli.com/api/v1","openapi":"https://tours.sparkyli.com/api/v1/openapi.yaml"},{"slug":"sparkycontacts","name":"Sparky Contacts","status":"live","summary":"Search and read contacts.","access":"read","requires_paid_plan":true,"sign_in":["person"],"base_url":"https://contacts.sparkyli.com/api/v1","openapi":"https://contacts.sparkyli.com/api/v1/openapi.yaml"},{"slug":"sparkyprojects","name":"Sparky Projects","status":"live","summary":"Clients, projects, tasks and logged time.","access":"read","requires_paid_plan":true,"sign_in":["person"],"base_url":"https://projects.sparkyli.com/api/v1","openapi":"https://projects.sparkyli.com/api/v1/openapi.yaml"},{"slug":"sparkyexpenses","name":"Sparky Expenses","status":"live","summary":"Read expense claims.","access":"read","requires_paid_plan":true,"sign_in":["person"],"base_url":"https://expenses.sparkyli.com/api/v1","openapi":"https://expenses.sparkyli.com/api/v1/openapi.yaml"},{"slug":"sparkyinvoices","name":"Sparky Invoices","status":"live","summary":"Read invoices, clients and what has been paid.","access":"read","requires_paid_plan":true,"sign_in":["person"],"base_url":"https://invoices.sparkyli.com/api/v1","openapi":"https://invoices.sparkyli.com/api/v1/openapi.yaml"},{"slug":"sparkydocs","name":"Sparky Docs","status":"planned","summary":"Documents.","access":null,"requires_paid_plan":false,"sign_in":["person"],"base_url":null,"openapi":null},{"slug":"sparkypay","name":"Sparky Pay","status":"planned","summary":"Payment links.","access":null,"requires_paid_plan":false,"sign_in":["person"],"base_url":null,"openapi":null},{"slug":"sparkysign","name":"Sparky Sign","status":"live","summary":"Documents for signature.","access":"read","requires_paid_plan":true,"sign_in":["person"],"base_url":"https://sign.sparkyli.com/api/v1","openapi":"https://sign.sparkyli.com/api/v1/openapi.yaml"}]}