Back to releases

Integrations and API Keys

Integrations and API Keys adds machine identities, scoped API key authentication, integration avatars, safer defaults, cascading cleanup, and attachment download tooling.

Pomavo can now represent automation as a real identity in your organization. Integrations and API Keys gives scripts, AI assistants, and external systems a safer way to act in Pomavo with attribution, permissions, and revocation.

Create machine identities and manage API keys from the Integrations page.

Machine identities separate automation from people

Machine identities are non-human service accounts for programmatic access. Instead of sharing a personal login with a bot, webhook, build job, or AI assistant, you can create an integration that owns its own identity.

Each identity has a name, description, avatar, API keys, and an audit trail. When it comments, updates a ticket, downloads an attachment, or runs a query, Pomavo can attribute that action to the integration instead of a human teammate.

Identity fieldWhy it matters
NameMakes the integration recognizable in lists and activity
DescriptionExplains what the integration is allowed to do
AvatarGives automated activity a visual identity
API keysProvides revocable authentication for clients
PermissionsLimits the integration to approved actions
Audit trailShows which integration performed each operation

This is the right foundation for CI systems, import tools, internal scripts, AI agents through MCP, and future marketplace integrations.

An integration acts as its own user identity. Grant it only the permissions it needs in Permissions, just like you would for a human member.

API key authentication is built for non-interactive clients

API keys give automated clients a direct authentication method without browser sessions. A client sends the key with API requests, and Pomavo resolves the key to its integration identity and organization.

Keys are generated once. The plaintext value is shown at creation time, while Pomavo stores only a hash after that. If a key is lost, create a new one and revoke the old key rather than trying to recover it.

API key behaviorDetail
Created under an integrationThe key authenticates as that machine identity
Plaintext shown onceYou copy it during creation and store it securely
Stored as a hashThe server does not need to keep the original value
Permission checkedAPI access follows the integration's grants
RevocableRemove a key without deleting the integration
Tenant-boundAccess is tied to the organization context

For AI and automation, the MCP server uses X-API-Key together with X-Org-Short-Name. That keeps the assistant pinned to one organization and makes every tool call permission-gated.

Permissions keep API access least privilege

An API key is not an admin bypass. It gives the client the same level of access as the integration's user identity, controlled through the fine-grained permission system.

This is important because the API covers tickets, templates, workflows, projects, iterations, comments, attachments, links, permissions, and query mutations. A narrowly scoped integration can read one project, comment on tickets, or download attachments without receiving unrelated organization powers.

Automation needPermission examples
Read project ticketsVIEW_PROJECT, VIEW_ISSUE
Create incoming issuesCREATE_ISSUE
Comment from a botLIST_COMMENT, ADD_COMMENT
Attach or fetch filesUPLOAD_ATTACHMENT, DOWNLOAD_ATTACHMENT
Link duplicatesLIST_LINK, CREATE_LINK, DELETE_LINK
Run an AI assistantPermissions needed by the selected MCP tools

Use Permissions to grant only the actions and resource scopes an integration requires. When the job changes, update the grants instead of sharing a broader key.

Integration avatars make automated activity legible

Custom avatar upload gives each integration a recognizable face in activity feeds, comments, and management lists. This matters once your organization has several automated actors, such as a GitHub connector, an import process, and an AI assistant.

The avatar is part of the identity. It helps users distinguish a machine update from a teammate update and makes audit trails easier to scan.

Avatar useBenefit
GitHub plugin identityUpdates are easy to recognize as source control automation
AI assistant identityAI-authored comments stand apart from human comments
Import identityMigration or sync activity is visually grouped
Support bot identityCustomer-facing automation is clearly labeled

A good integration profile should include a clear name, a short description, and an avatar that users can recognize at a glance.

Template field defaults make created tickets more complete

Template field defaults let integrations and users create tickets with more reliable starting values. When a template defines defaults, new tickets can begin with the expected structure instead of requiring every client to send every field every time.

Defaults are especially helpful for automation. An incoming integration can create a ticket with the customer-provided fields while Pomavo fills in standard values such as priority, category, or workflow-related metadata configured by the template.

Default field value helps whenWhy it helps
A webhook creates ticketsThe webhook can send only the data it knows
A team standardizes triageNew work starts with consistent values
A shared field appears on many templatesThe default follows the shared definition
A user opens a quick-create flowFewer manual fields are required

Template defaults do not remove validation. They make valid creation easier by giving the system a better initial field set.

Attachment download tooling closes the automation loop

Attachments are part of the API surface for integrations. With download tooling, automated clients can fetch files attached to tickets when they have the right permission.

This supports workflows such as AI summarization, build artifact inspection, customer evidence review, and data export. It also makes the MCP server more useful, because an assistant can work with ticket files through a governed tool instead of asking a person to copy data manually.

Attachment capabilityTypical use
UploadAdd logs, screenshots, exported data, or generated files
DownloadInspect evidence or process files outside Pomavo
DeleteRemove files that are obsolete or uploaded by mistake
Permission gateRequire DOWNLOAD_ATTACHMENT, UPLOAD_ATTACHMENT, or DELETE_ATTACHMENT

Treat downloaded attachments as organization data. Store them only where your team allows, and scope integration keys so only trusted clients can download files.

Organization deletion performs cascading cleanup

Organization deletion now includes cascading cleanup so removing a workspace can clean up associated data consistently. This matters for test tenants, expired trial workspaces, and organizations that need a complete removal path.

Because Pomavo is multi-tenant, organization data is scoped across tickets, templates, projects, members, permissions, integrations, API keys, and other related records. Cascading cleanup gives the product one deliberate path for that removal instead of leaving scattered records behind.

Cleanup concernWhy a cascade matters
IntegrationsAPI keys should not survive the organization they belong to
PermissionsGrants should not point at deleted tenant resources
Tickets and commentsWork items should remain tenant-scoped through deletion
AttachmentsFile references should be handled with the workspace lifecycle
SettingsOrganization preferences should be removed with the organization

Use deletion carefully. For normal archival or migration, export and review organization data from Organization Settings before deleting the workspace.

API surface for integrations

The integration model is useful because the API covers the work Pomavo teams already do in the UI. Programmatic access is not a separate product area, it is the same ticketing system with the same security model.

Here is a query an integration could use before applying automation to a controlled set of tickets:

dsl
template = "Bug" and status in ("New", "Triaged") and priority in ("High", "Critical")
order by created_at asc
limit 25

The API key does not determine whether this query can read or mutate the matching tickets. The integration's permissions do.

A safer pattern for AI assistants and scripts

The biggest practical change is the operating pattern. Create one integration per external system, grant narrow permissions, create one or more named keys, store each key securely, and revoke keys when the client no longer needs them.

Create a machine identity from Integrations with a clear name and purpose.

Upload an avatar so activity from the integration is easy to recognize.

Grant the minimum permissions and resource scopes in Permissions.

Generate an API key, copy the plaintext once, and store it in your secret manager.

Configure the external client, script, or MCP server to use the key.

Next, integrations can build on this identity and key foundation with richer plugin workflows, webhooks, and assistant-driven automation that remains auditable.