Skip to content

Repository files navigation

Lockally

The lockally control plane lets integrators and direct customers manage everything except actual mail data flow (which uses standard JMAP / IMAP / SMTP-submission against the data plane endpoints).

Authentication. All /v1/_* endpoints require a Bearer API key in the Authorization header. Keys are formatted lk_live_<8-char-prefix>_<32-char-secret>. Generate the first key for a tenant via cmd/seed; subsequent keys via POST /v1/api-keys.

Errors. Failures return RFC 9457 application/problem+json documents.

Scopes. Each endpoint requires a specific scope on the presented key. Insufficient scope returns 403 with the required scope name in detail.

Installation & Usage

Requirements

PHP 8.1 and later.

Composer

To install the bindings via Composer, add the following to composer.json:

{
  "repositories": [
    {
      "type": "vcs",
      "url": "https://github.com/GIT_USER_ID/GIT_REPO_ID.git"
    }
  ],
  "require": {
    "GIT_USER_ID/GIT_REPO_ID": "*@dev"
  }
}

Then run composer install

Manual Installation

Download the files and include autoload.php:

<?php
require_once('/path/to/Lockally/vendor/autoload.php');

Getting Started

Please follow the installation procedure and then run the following:

<?php
require_once(__DIR__ . '/vendor/autoload.php');



// Configure Bearer (lk_live_<prefix>_<secret>) authorization: bearerAuth
$config = Lockally\SDK\Configuration::getDefaultConfiguration()->setAccessToken('YOUR_ACCESS_TOKEN');


$apiInstance = new Lockally\SDK\Api\AddOnsApi(
    // If you want use custom http client, pass your client which implements `GuzzleHttp\ClientInterface`.
    // This is optional, `GuzzleHttp\Client` will be used as default.
    new GuzzleHttp\Client(),
    $config
);
$name = 'name_example'; // string | Add-on key

try {
    $result = $apiInstance->activateAddOn($name);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception when calling AddOnsApi->activateAddOn: ', $e->getMessage(), PHP_EOL;
}

API Endpoints

All URIs are relative to https://api.lockally.com

Class Method HTTP request Description
AddOnsApi activateAddOn POST /v1/add-ons/{name}/activate Activate an add-on
AddOnsApi cancelAddOn POST /v1/add-ons/{name}/cancel Cancel an add-on
AddOnsApi getAddOnStatus GET /v1/add-ons/{name} Get add-on status
AddOnsApi listAddOns GET /v1/add-ons List add-ons
AdminApi v1AdminLoginPost POST /v1/admin/login Tenant-admin email+password login
AdminApi v1AdminLogoutPost POST /v1/admin/logout Invalidate the current admin session
AdminApi v1AdminMeGet GET /v1/admin/me Get the current admin + tenant
AdminsApi v1AdminsGet GET /v1/admins List tenant admins
AdminsApi v1AdminsIdDelete DELETE /v1/admins/{id} Delete an admin
AdminsApi v1AdminsIdPatch PATCH /v1/admins/{id} Update an admin
AdminsApi v1AdminsPost POST /v1/admins Invite a new admin
AgentsApi v1ApiKeysKeyIDMailboxesGet GET /v1/api-keys/{keyID}/mailboxes List a key's mailbox grants
AgentsApi v1ApiKeysKeyIDMailboxesMailboxIDDelete DELETE /v1/api-keys/{keyID}/mailboxes/{mailboxID} Revoke a mailbox grant
AgentsApi v1ApiKeysKeyIDMailboxesPost POST /v1/api-keys/{keyID}/mailboxes Grant a mailbox to a key
AgentsApi v1AuthWhoamiGet GET /v1/auth/whoami Introspect the calling credentials
AgentsApi v1ContactsLookupGet GET /v1/contacts/lookup Who is this sender?
AgentsApi v1InboxesGet GET /v1/inboxes List granted inboxes
AgentsApi v1InboxesMailboxMessagesPost POST /v1/inboxes/{mailbox}/messages Start a new conversation (agent stream)
AgentsApi v1InboxesMailboxThreadsGet GET /v1/inboxes/{mailbox}/threads List conversation threads
AgentsApi v1ThreadsThreadIDGet GET /v1/threads/{threadID} Get a whole conversation
AgentsApi v1ThreadsThreadIDMessagesMessageIDAttachmentsIdxGet GET /v1/threads/{threadID}/messages/{messageID}/attachments/{idx} Download an attachment
AgentsApi v1ThreadsThreadIDMessagesMessageIDGet GET /v1/threads/{threadID}/messages/{messageID} Get one message with body
AgentsApi v1ThreadsThreadIDMessagesMessageIDReadPost POST /v1/threads/{threadID}/messages/{messageID}/read Mark read/unread
AgentsApi v1ThreadsThreadIDReplyPost POST /v1/threads/{threadID}/reply Reply in-thread (agent stream)
AiApi v1AiConfigGet GET /v1/ai-config Read the tenant's AI configuration
AiApi v1AiConfigPut PUT /v1/ai-config Configure the AI tier
AiApi v1BillingAiUnitsCheckoutPost POST /v1/billing/ai-units/checkout Buy prepaid AI units
AiApi v1ThreadsThreadIDClassifyPost POST /v1/threads/{threadID}/classify LLM-classify a thread
AliasesApi v1AliasesAddressDelete DELETE /v1/aliases/{address} Delete an alias
AliasesApi v1AliasesGet GET /v1/aliases List aliases
AliasesApi v1AliasesPost POST /v1/aliases Create an alias
ApiKeysApi v1ApiKeysGet GET /v1/api-keys List API keys
ApiKeysApi v1ApiKeysIdDelete DELETE /v1/api-keys/{id} Revoke an API key
ApiKeysApi v1ApiKeysPost POST /v1/api-keys Create an API key
BillingApi createBillingCheckout POST /v1/billing/checkout Create a plan checkout session
BillingApi createUnitsCheckout POST /v1/billing/units/checkout Create a send-units checkout session
BillingApi getBilling GET /v1/billing Get billing status
CalendarsApi addCalendarMember POST /v1/calendars/{id}/members Add a member to a calendar
CalendarsApi createCalendar POST /v1/calendars Create a calendar
CalendarsApi createCalendarEvent POST /v1/calendars/{id}/events Create an event in a calendar
CalendarsApi createCalendarIntegration POST /v1/calendar-integrations Create a calendar integration
CalendarsApi deleteCalendar DELETE /v1/calendars/{id} Delete a calendar
CalendarsApi deleteCalendarEvent DELETE /v1/calendars/{id}/events/{eventId} Delete a calendar event
CalendarsApi deleteCalendarIntegration DELETE /v1/calendar-integrations/{id} Delete a calendar integration
CalendarsApi getCalendar GET /v1/calendars/{id} Get a calendar
CalendarsApi getCalendarPolicies GET /v1/calendar-policies Get calendar policies
CalendarsApi getCalendarSecurity GET /v1/calendar-security Get calendar security overview
CalendarsApi listCalendarEvents GET /v1/calendars/{id}/events List events in a calendar
CalendarsApi listCalendarIntegrations GET /v1/calendar-integrations List calendar integrations
CalendarsApi listCalendarMembers GET /v1/calendars/{id}/members List calendar members
CalendarsApi listCalendars GET /v1/calendars List calendars
CalendarsApi removeCalendarMember DELETE /v1/calendars/{id}/members/{memberId} Remove a member from a calendar
CalendarsApi syncCalendarIntegration POST /v1/calendar-integrations/{id}/sync Trigger sync for a calendar integration
CalendarsApi updateCalendar PATCH /v1/calendars/{id} Update a calendar
CalendarsApi updateCalendarEvent PATCH /v1/calendars/{id}/events/{eventId} Update a calendar event
CalendarsApi updateCalendarIntegration PATCH /v1/calendar-integrations/{id} Update a calendar integration
CalendarsApi updateCalendarMember PATCH /v1/calendars/{id}/members/{memberId} Update a calendar member's role
CalendarsApi updateCalendarPolicies PATCH /v1/calendar-policies Update calendar policies
ContactListsApi addContactListMember POST /v1/contact-lists/{id}/members Add a member to a contact list
ContactListsApi createContactList POST /v1/contact-lists Create a contact list
ContactListsApi deleteContactList DELETE /v1/contact-lists/{id} Delete a contact list
ContactListsApi getContactList GET /v1/contact-lists/{id} Get a contact list with members
ContactListsApi listContactLists GET /v1/contact-lists List contact lists
ContactListsApi removeContactListMember DELETE /v1/contact-lists/{id}/members/{contactId} Remove a member from a contact list
ContactListsApi updateContactList PATCH /v1/contact-lists/{id} Update a contact list
ContactsApi createContact POST /v1/contacts Create a contact
ContactsApi deleteContact DELETE /v1/contacts/{id} Delete a contact
ContactsApi getContact GET /v1/contacts/{id} Get a contact
ContactsApi getContactLists GET /v1/contacts/{id}/lists Get lists a contact belongs to
ContactsApi listContacts GET /v1/contacts List contacts
ContactsApi updateContact PATCH /v1/contacts/{id} Update a contact
DashboardApi getAuditSummary GET /v1/audit-summary Audit summary for the dashboard
DashboardApi getDomainsStatus GET /v1/domains/status Domain health status for the dashboard
DashboardApi getIntegrationsSummary GET /v1/integrations-summary Integrations summary for the dashboard
DashboardApi getSecurity GET /v1/security Security overview for the dashboard
DashboardApi getStorage GET /v1/storage Storage usage for the dashboard
DashboardApi getTenantHealth GET /v1/health Full tenant health report
DashboardApi getUserInsights GET /v1/user-insights User insights for the dashboard
DirectoryApi getDirectoryActivity GET /v1/directory-activity Get recent directory activity
DirectoryApi getDirectoryPermissions GET /v1/directory-permissions Get directory permission settings
DirectoryApi getDirectoryStats GET /v1/directory-stats Get directory statistics
DirectoryApi getGALSettings GET /v1/gal-settings Get Global Address List settings
DirectoryApi rebuildGALIndex POST /v1/gal-settings/rebuild-index Rebuild the GAL search index
DirectoryApi syncGAL POST /v1/gal-settings/sync Sync GAL with external directory sources
DirectoryApi updateDirectoryPermissions PATCH /v1/directory-permissions Update directory permission settings
DirectoryApi updateGALSettings PATCH /v1/gal-settings Update GAL settings
DistributionListsApi createDistributionList POST /v1/distribution-lists Create a distribution list
DistributionListsApi deleteDistributionList DELETE /v1/distribution-lists/{address} Delete a distribution list
DistributionListsApi getDistributionList GET /v1/distribution-lists/{address} Get a distribution list
DistributionListsApi listDistributionLists GET /v1/distribution-lists List distribution lists
DistributionListsApi replaceDistributionListMembers PUT /v1/distribution-lists/{address}/members Replace distribution list members
DomainsApi v1DomainsDomainDelete DELETE /v1/domains/{domain} Delete a domain
DomainsApi v1DomainsDomainGet GET /v1/domains/{domain} Get a domain
DomainsApi v1DomainsDomainVerifyPost POST /v1/domains/{domain}/verify Force-poll DNS verification
DomainsApi v1DomainsGet GET /v1/domains List domains
DomainsApi v1DomainsPost POST /v1/domains Register a domain
DraftsApi v1DraftsDraftIDApprovePost POST /v1/drafts/{draftID}/approve Approve a pending draft (human)
DraftsApi v1DraftsDraftIDCancelPost POST /v1/drafts/{draftID}/cancel Withdraw a pending draft
DraftsApi v1DraftsDraftIDGet GET /v1/drafts/{draftID} Get a draft
DraftsApi v1DraftsDraftIDRejectPost POST /v1/drafts/{draftID}/reject Reject a pending draft (human)
DraftsApi v1DraftsGet GET /v1/drafts List drafts
DraftsApi v1InboxesMailboxDraftsPost POST /v1/inboxes/{mailbox}/drafts Propose a new conversation as a draft
DraftsApi v1ThreadsThreadIDDraftsPost POST /v1/threads/{threadID}/drafts Propose a reply as a draft
EncryptionApi batchLookupPublicKeys GET /v1/encryption/keys/lookup Batch-lookup public keys by email
EncryptionApi createEncryptionKey POST /v1/encryption/keys Upload an encryption key pair
EncryptionApi createEncryptionRecovery POST /v1/encryption/recovery Store an encryption recovery blob
EncryptionApi getEncryptionKey GET /v1/encryption/keys/{email} Get encryption key for a mailbox
EncryptionApi rotateEncryptionKey POST /v1/encryption/keys/rotate Rotate an encryption key
HealthApi healthzGet GET /healthz Liveness check
IpPoolsApi createDedicatedIPRequest POST /v1/dedicated-ip-requests Request a dedicated IP
IpPoolsApi getIPAssignment GET /v1/ip-assignment Get current IP assignment
IpPoolsApi listDedicatedIPRequests GET /v1/dedicated-ip-requests List dedicated IP requests
MailboxesApi addSharedMember POST /v1/mailboxes/{email}/members Add a shared mailbox member
MailboxesApi listSharedMembers GET /v1/mailboxes/{email}/members List shared mailbox members
MailboxesApi removeSharedMember DELETE /v1/mailboxes/{email}/members/{memberEmail} Remove a shared mailbox member
MailboxesApi v1MailboxesEmailDelete DELETE /v1/mailboxes/{email} Soft-delete a mailbox
MailboxesApi v1MailboxesEmailExportDownloadGet GET /v1/mailboxes/{email}/export/download Download a previously-issued mailbox export
MailboxesApi v1MailboxesEmailExportPost POST /v1/mailboxes/{email}/export Request a mailbox export
MailboxesApi v1MailboxesEmailGet GET /v1/mailboxes/{email} Get a mailbox
MailboxesApi v1MailboxesEmailPatch PATCH /v1/mailboxes/{email} Update a mailbox
MailboxesApi v1MailboxesEmailVacationDelete DELETE /v1/mailboxes/{email}/vacation Remove the vacation responder
MailboxesApi v1MailboxesEmailVacationGet GET /v1/mailboxes/{email}/vacation Get the vacation responder
MailboxesApi v1MailboxesEmailVacationPut PUT /v1/mailboxes/{email}/vacation Set the vacation responder
MailboxesApi v1MailboxesGet GET /v1/mailboxes List mailboxes
MailboxesApi v1MailboxesPost POST /v1/mailboxes Create a mailbox
MailboxesApi v1VacationGet GET /v1/vacation List all vacation responders
MigrationsApi cancelMigration POST /v1/migrations/{id}/cancel Cancel a running migration
MigrationsApi checkMigrationDNS GET /v1/migrations/{id}/dns-check Check DNS readiness for cutover
MigrationsApi createMigration POST /v1/migrations Create a migration
MigrationsApi createMigrationCredential POST /v1/migrations/credentials Store a migration credential
MigrationsApi deleteMigration DELETE /v1/migrations/{id} Delete a migration
MigrationsApi deleteMigrationCredential DELETE /v1/migrations/credentials/{id} Delete a migration credential
MigrationsApi deltaSyncMigration POST /v1/migrations/{id}/delta-sync Run a delta sync
MigrationsApi discoverMigration POST /v1/migrations/{id}/discover Discover source mailboxes
MigrationsApi finalSyncMigration POST /v1/migrations/{id}/final-sync Run the final sync before cutover
MigrationsApi getMigration GET /v1/migrations/{id} Get a migration
MigrationsApi getMigrationProgress GET /v1/migrations/{id}/progress Get migration progress
MigrationsApi listMigrationCredentials GET /v1/migrations/credentials List migration credentials
MigrationsApi listMigrationEvents GET /v1/migrations/{id}/events List migration events
MigrationsApi listMigrationMailboxes GET /v1/migrations/{id}/mailboxes List migration mailboxes
MigrationsApi listMigrations GET /v1/migrations List migrations
MigrationsApi mapMigration POST /v1/migrations/{id}/map Map source to destination mailboxes
MigrationsApi retryMigration POST /v1/migrations/{id}/retry Retry a failed or cancelled migration
MigrationsApi startMigration POST /v1/migrations/{id}/start Start the migration
MigrationsApi updateMigration PATCH /v1/migrations/{id} Update a migration
MigrationsApi updateMigrationMailbox PATCH /v1/migrations/{id}/mailboxes/{mbxId} Update a migration mailbox
MigrationsApi validateMigration POST /v1/migrations/{id}/validate Validate migrated data
ResourcesApi createResource POST /v1/resources Create a resource
ResourcesApi deleteResource DELETE /v1/resources/{id} Delete a resource
ResourcesApi getResource GET /v1/resources/{id} Get a resource
ResourcesApi listResources GET /v1/resources List resources
ResourcesApi updateResource PATCH /v1/resources/{id} Update a resource
SendApi v1MessagesGet GET /v1/messages List outbound messages
SendApi v1MessagesIdDelete DELETE /v1/messages/{id} Cancel a scheduled send
SendApi v1MessagesIdGet GET /v1/messages/{id} Get message status
SendApi v1MessagesStatsGet GET /v1/messages/stats Aggregate delivery stats
SendApi v1SendBatchPost POST /v1/send/batch Send a batch of emails
SendApi v1SendPost POST /v1/send Send an email
SignupApi signup POST /v1/signup Sign up a new tenant
SuppressionsApi v1SuppressionsEmailDelete DELETE /v1/suppressions/{email} Remove a suppression
SuppressionsApi v1SuppressionsEmailGet GET /v1/suppressions/{email} Check whether an address is suppressed
SuppressionsApi v1SuppressionsGet GET /v1/suppressions List suppressed recipients
SuppressionsApi v1SuppressionsPost POST /v1/suppressions Add a suppression
TemplatesApi v1TemplatesGet GET /v1/templates List templates
TemplatesApi v1TemplatesIdDelete DELETE /v1/templates/{id} Delete a template
TemplatesApi v1TemplatesIdGet GET /v1/templates/{id} Get a template
TemplatesApi v1TemplatesIdPut PUT /v1/templates/{id} Update a template
TemplatesApi v1TemplatesPost POST /v1/templates Create a template
TenantApi v1TenantGet GET /v1/tenant Get the calling tenant
TenantApi v1UsageGet GET /v1/usage Usage snapshot
TestApi v1TestInboundPost POST /v1/test/inbound Simulate an inbound email (test keys only)
UsersApi createUser POST /v1/users Create a user
UsersApi deleteUser DELETE /v1/users/{id} Delete a user
UsersApi getUser GET /v1/users/{id} Get a user
UsersApi listUsers GET /v1/users List users
UsersApi updateUser PATCH /v1/users/{id} Update a user
WebhooksApi v1WebhooksGet GET /v1/webhooks List webhooks
WebhooksApi v1WebhooksIdDelete DELETE /v1/webhooks/{id} Delete a webhook
WebhooksApi v1WebhooksIdPatch PATCH /v1/webhooks/{id} Update a webhook
WebhooksApi v1WebhooksPost POST /v1/webhooks Create a webhook

Models

Authorization

Authentication schemes defined for the API:

bearerAuth

  • Type: Bearer authentication (lk_live__)

oauth2

  • Type: OAuth
  • Flow: accessCode
  • Authorization URL: https://api.lockally.com/oauth/authorize
  • Scopes:
    • inboxes:read: Read agent-accessible mailboxes and threads
    • inboxes:write: Send and act on agent-accessible mailboxes

Tests

To run the tests, use:

composer install
vendor/bin/phpunit

Author

support@lockally.com

About this package

This PHP package is automatically generated by the OpenAPI Generator project:

  • API version: 0.1.0
    • Package version: 0.1.0
    • Generator version: 7.23.0
  • Build package: org.openapitools.codegen.languages.PhpClientCodegen

About

Official Lockally SDK for PHP (Packagist: lockally/sdk)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages