appgram / docs
Dashboard

SWIFT SDK

Native SwiftUI components and view models for iOS and macOS apps.

Install swift
.package(url: "https://github.com/AppGram/appgram-ios.git", from: "1.0.0")
199 symbols 14 categories swift

Core

struct

UserContext

Represents the current user’s context within the AppGram SDK.

Properties

email String?

An optional email address for the user.

isAnonymous Bool

Whether this context represents an anonymous user.

name String?

An optional display name for the user.

userId String?

An optional unique identifier for the user.

anonymous UserContext

A pre-configured anonymous user context.

Methods

init(userId:email:name:isAnonymous:)
  • userId : String
  • email : String
  • name : String
  • isAnonymous : Bool

Configuration options for customizing the status page view appearance and behavior.

Properties

accentColor Color?

An optional accent color to apply to the status page.

autoRefreshInterval TimeInterval

The interval in seconds for automatic status updates.

cardCornerRadius CGFloat

The corner radius for status cards.

cardShadowRadius CGFloat

The shadow radius for status cards.

enableAutoRefresh Bool

Whether to automatically refresh the status page.

title String

The title displayed at the top of the status page.

default StatusConfiguration

Methods

init(title:autoRefreshInterval:enableAutoRefresh:cardCornerRadius:cardShadowRadius:accentColor:)
  • title : String
  • autoRefreshInterval : TimeInterval
  • enableAutoRefresh : Bool
  • cardCornerRadius : CGFloat
  • cardShadowRadius : CGFloat

Configuration options for customizing the releases view appearance and behavior.

Properties

accentColor Color?

An optional accent color to apply to the releases view.

cardCornerRadius CGFloat

The corner radius for release cards.

imageCornerRadius CGFloat

The corner radius for release images.

showVersionBadge Bool

Whether to show version badges on release cards.

title String

The title displayed at the top of the releases view.

default ReleasesConfiguration

Methods

init(title:showVersionBadge:cardCornerRadius:imageCornerRadius:accentColor:)
  • title : String
  • showVersionBadge : Bool
  • cardCornerRadius : CGFloat
  • imageCornerRadius : CGFloat

Errors that can occur when using the AppGram SDK.

Values

AppGramError.decodingError(_:)AppGramError.forbiddenAppGramError.invalidResponseAppGramError.networkError(_:)AppGramError.notConfiguredAppGramError.notFoundAppGramError.serverError(_:)AppGramError.unauthorizedAppGramError.uploadFailedAppGramError.validationError(_:)

Properties

errorDescription String

Feedback

A request to create a new comment on a feedback item.

Properties

authorEmail String?

The email address of the comment author.

authorName String?

The display name of the comment author.

content String

The text content of the comment.

projectId String

The project ID.

userId String?

The optional user ID of the comment author.

wishId String

The ID of the wish to comment on.

Methods

init(content:wishId:projectId:userId:authorName:authorEmail:)
  • content : String
  • wishId : String
  • projectId : String
  • userId : String
  • authorName : String
struct

Vote

Represents a vote on a feedback item (wish).

Properties

createdAt Date

The date when the vote was created.

fingerprint String?

The device fingerprint for anonymous voters.

id String

The unique identifier for the vote.

userId String?

The user ID of the voter, if authenticated.

wishId String

The ID of the wish this vote is for.

Methods

init(from:)
init(id:wishId:userId:fingerprint:createdAt:)
  • id : String
  • wishId : String
  • userId : String
  • fingerprint : String
  • createdAt : Date
struct

WishFilters

Filters and sorting options for querying wishes.

Properties

categoryId String?

Filter by category ID.

limit Int

The maximum number of wishes to return per page.

page Int

The page number for pagination (1-based).

searchQuery String?

Search query to filter wishes by title or description.

sortBy WishSortOption

The sorting option to apply.

status WishStatus?

Filter by wish status.

Methods

init(status:categoryId:searchQuery:sortBy:page:limit:)
  • status : WishStatus
  • categoryId : String
  • searchQuery : String
  • sortBy : WishSortOption
  • page : Int
struct

Wish

Represents a feedback item (wish) submitted by users.

Properties

authorEmail String?

The email address of the wish author.

authorName String?

The display name of the wish author.

category Category?

The category this wish belongs to, if any.

categoryId String?

The ID of the category this wish belongs to.

commentCount Int

The number of comments on this wish.

completedAt Date?

The date when the wish was completed, if applicable.

createdAt Date

The date when the wish was created.

description String?

An optional detailed description of the wish.

hasVoted Bool

Whether the current user has voted on this wish.

id String

The unique identifier for the wish.

projectId String

The project ID this wish belongs to.

status WishStatus

The current status of the wish.

title String

The title of the wish.

updatedAt Date?

The date when the wish was last updated.

userId String?

The user ID of the wish author.

voteCount Int

The number of votes this wish has received.

Methods

init(from:)
init(id:title:description:status:voteCount:hasVoted:commentCount:category:categoryId:authorName:authorEmail:userId:projectId:createdAt:updatedAt:completedAt:)
  • id : String
  • title : String
  • description : String
  • status : WishStatus
  • voteCount : Int
  • hasVoted : Bool
  • commentCount : Int
  • category : Category
  • categoryId : String
  • authorName : String
  • authorEmail : String
  • userId : String
  • projectId : String
  • createdAt : Date
  • updatedAt : Date
encode(to:)
hash(into:)
  • hasher : Hasher
struct

Comment

Represents a comment on a feedback item (wish).

Properties

authorEmail String?

The email address of the comment author.

authorName String?

The display name of the comment author.

content String

The text content of the comment.

createdAt Date

The date when the comment was created.

id String

The unique identifier for the comment.

isOfficial Bool

Whether this comment is from official support staff.

updatedAt Date?

The date when the comment was last updated.

userId String?

The optional user ID of the comment author.

wishId String

The ID of the wish this comment belongs to.

Methods

init(from:)
init(id:content:wishId:userId:authorName:authorEmail:isOfficial:createdAt:updatedAt:)
  • id : String
  • content : String
  • wishId : String
  • userId : String
  • authorName : String
  • authorEmail : String
  • isOfficial : Bool
  • createdAt : Date
struct

VoteRequest

A request to add a vote to a wish.

Properties

fingerprint String?

The device fingerprint for anonymous voters.

projectId String

The project ID.

userId String?

The optional user ID of the voter.

wishId String

The ID of the wish to vote for.

Methods

init(wishId:projectId:userId:fingerprint:)
  • wishId : String
  • projectId : String
  • userId : String
struct

Category

Represents a category for organizing feedback items.

Properties

color String?

An optional color code (hex format) for the category.

createdAt Date?

The date when the category was created.

description String?

An optional description of the category.

id String

The unique identifier for the category.

name String

The display name of the category.

projectId String?

The project ID this category belongs to.

slug String

The URL-friendly identifier for the category.

updatedAt Date?

The date when the category was last updated.

Methods

init(from:)
init(id:name:slug:description:color:projectId:createdAt:updatedAt:)
  • id : String
  • name : String
  • slug : String
  • description : String
  • color : String
  • projectId : String
  • createdAt : Date

Options for sorting wishes.

Values

WishSortOption.leastVotesWishSortOption.mostVotesWishSortOption.newestWishSortOption.oldest

Properties

displayName String
enum

WishStatus

Represents the status of a feedback item (wish).

Values

WishStatus.completedWishStatus.declinedWishStatus.inProgressWishStatus.pendingWishStatus.plannedWishStatus.underReview

Properties

displayName String
systemImageName String

Survey

Represents a condition for branching in a survey.

Properties

type ConditionType

The type of comparison to perform.

value AnyCodableValue

The value to compare against.

Methods

init(from:)
init(type:value:)
  • type : ConditionType
  • value : AnyCodableValue

A complete survey response containing all answers.

Properties

answers [SurveyAnswerPayload]

The list of answers for each question node.

externalUserId String?

The external user ID, if available.

fingerprint String

The device fingerprint for anonymous users.

metadata [String:AnyCodableValue]?

Optional metadata to include with the response.

Methods

init(answers:fingerprint:externalUserId:metadata:)
  • answers : SurveyAnswerPayload
  • fingerprint : String
  • externalUserId : String
struct

Survey

Represents a survey that can be presented to users.

Properties

createdAt Date?

The date when the survey was created.

description String?

An optional description of the survey.

id String

The unique identifier for the survey.

isActive Bool

Whether the survey is currently active.

name String

The display name of the survey.

nodes [SurveyNode]?

The list of question nodes in the survey.

projectId String

The project ID this survey belongs to.

slug String

The URL-friendly slug identifier.

Methods

init(from:)
init(id:name:slug:description:projectId:nodes:isActive:createdAt:)
  • id : String
  • name : String
  • slug : String
  • description : String
  • projectId : String
  • nodes : SurveyNode
  • isActive : Bool
struct

NodeOption

Represents an option for multiple choice or checkbox questions.

Properties

id String

The unique identifier for the option.

label String

The display label for the option.

value String?

The value associated with this option.

Methods

init(from:)
init(id:label:value:)
  • id : String
  • label : String
struct

Branch

Represents a conditional branch in a survey flow.

Properties

condition BranchCondition

The condition that must be met for this branch to be taken.

nextNodeId String

The ID of the next node to navigate to if the condition is met.

Methods

init(condition:nextNodeId:)
  • condition : BranchCondition
  • nextNodeId : String
init(from:)
struct

SurveyNode

Represents a single question node in a survey.

Properties

answerNoNodeId String?

The next node ID if the answer is “no” (for yes/no questions).

answerYesNodeId String?

The next node ID if the answer is “yes” (for yes/no questions).

branches [Branch]?

Conditional branches that determine the next node based on the answer.

id String

The unique identifier for the node.

isRequired Bool

Whether this question must be answered.

maxRating Int?

The maximum rating value for rating questions.

minRating Int?

The minimum rating value for rating questions.

nextNodeId String?

The default next node ID to navigate to.

options [NodeOption]?

The available options for multiple choice or checkbox questions.

order Int?

The display order of this node in the survey.

question String

The question text to display.

questionType QuestionType

The type of question (yes/no, multiple choice, rating, etc.).

resultMessage String?

A message to display when this node is reached (typically for end nodes).

Methods

init(from:)
init(id:question:questionType:options:minRating:maxRating:isRequired:answerYesNodeId:answerNoNodeId:nextNodeId:branches:resultMessage:order:)
  • id : String
  • question : String
  • questionType : QuestionType
  • options : NodeOption
  • minRating : Int
  • maxRating : Int
  • isRequired : Bool
  • answerYesNodeId : String
  • answerNoNodeId : String
  • nextNodeId : String
  • branches : Branch
  • resultMessage : String

Represents a single answer to a survey question node.

Properties

answer String?

The answer value (for rating or yes/no questions).

answerOptions [String]?

The selected options (for multiple choice or checkbox questions).

answerText String?

The text answer (for text or paragraph questions).

nodeId String

The ID of the question node this answer is for.

Methods

init(nodeId:answer:answerText:answerOptions:)
  • nodeId : String
  • answer : String
  • answerText : String

A type-erased codable value that can represent various types.

Values

AnyCodableValue.array(_:)AnyCodableValue.bool(_:)AnyCodableValue.double(_:)AnyCodableValue.int(_:)AnyCodableValue.string(_:)

Properties

boolValue Bool
intValue Int
stringValue String

Methods

encode(to:)

Types of conditions that can be used in survey branches.

Values

ConditionType.containsConditionType.equalsConditionType.greaterThanConditionType.greaterThanOrEqualConditionType.lessThanConditionType.lessThanOrEqual

Represents a user’s answer to a survey question.

Values

SurveyAnswer.boolean(_:)SurveyAnswer.options(_:)SurveyAnswer.rating(_:)SurveyAnswer.text(_:)

Properties

isEmpty Bool

Types of questions that can be used in a survey.

Values

QuestionType.checkboxesQuestionType.multipleChoiceQuestionType.paragraphQuestionType.ratingQuestionType.shortAnswerQuestionType.yesNo

Properties

displayName String

Support

struct

Attachment

Represents a file attachment in a support ticket or message.

Properties

fileName String

The name of the file.

fileSize Int?

The size of the file in bytes.

fileUrl String

The URL where the file can be accessed.

id String

The unique identifier for the attachment.

mimeType String

The MIME type of the file.

Methods

init(from:)
init(id:fileName:fileUrl:mimeType:fileSize:)
  • id : String
  • fileName : String
  • fileUrl : String
  • mimeType : String

A request to add a message to an existing support ticket.

Properties

attachmentUrls [String]?

URLs of files to attach to the message.

authorEmail String?

The email address of the message author.

authorName String?

The display name of the message author.

content String

The text content of the message.

ticketId String

The ID of the ticket to add the message to.

Methods

init(ticketId:content:authorName:authorEmail:attachmentUrls:)
  • ticketId : String
  • content : String
  • authorName : String
  • authorEmail : String
struct

SupportTicket

Represents a support ticket submitted by a user.

Properties

attachments [Attachment]?

The list of file attachments.

createdAt Date

The date when the ticket was created.

description String

The detailed description of the issue.

id String

The unique identifier for the ticket.

messages [SupportMessage]?

The list of messages in this ticket’s conversation.

priority TicketPriority

The priority level of the ticket.

projectId String

The project ID this ticket belongs to.

status TicketStatus

The current status of the ticket.

subject String

The subject line of the ticket.

updatedAt Date?

The date when the ticket was last updated.

userEmail String

The email address of the user who created the ticket.

userId String?

The user ID of the ticket creator.

userName String?

The display name of the user who created the ticket.

Methods

init(from:)
init(id:subject:description:status:priority:userEmail:userName:userId:projectId:messages:attachments:createdAt:updatedAt:)
  • id : String
  • subject : String
  • description : String
  • status : TicketStatus
  • priority : TicketPriority
  • userEmail : String
  • userName : String
  • userId : String
  • projectId : String
  • messages : SupportMessage
  • attachments : Attachment
  • createdAt : Date
hash(into:)
  • hasher : Hasher

Represents a message in a support ticket conversation.

Properties

attachments [Attachment]?

The list of file attachments in this message.

authorEmail String?

The email address of the message author.

authorName String?

The display name of the message author.

content String

The text content of the message.

createdAt Date

The date when the message was created.

id String

The unique identifier for the message.

isFromSupport Bool

Whether this message is from support staff.

ticketId String

The ID of the ticket this message belongs to.

Methods

init(from:)
init(id:ticketId:content:authorName:authorEmail:isFromSupport:attachments:createdAt:)
  • id : String
  • ticketId : String
  • content : String
  • authorName : String
  • authorEmail : String
  • isFromSupport : Bool
  • attachments : Attachment
  • createdAt : Date

A request to create a new support ticket.

Properties

attachmentUrls [String]?

URLs of files to attach to the ticket.

description String

The detailed description of the issue.

priority TicketPriority

The priority level of the ticket.

projectId String

The project ID.

subject String

The subject line of the ticket.

userEmail String

The email address of the user creating the ticket.

userId String?

The user ID of the ticket creator.

userName String?

The display name of the user creating the ticket.

Methods

init(subject:description:priority:userEmail:userName:userId:projectId:attachmentUrls:)
  • subject : String
  • description : String
  • priority : TicketPriority
  • userEmail : String
  • userName : String
  • userId : String
  • projectId : String

Filters for querying support tickets.

Properties

email String?

Filter by user email address.

externalUserId String?

Filter by external user ID.

page Int

The page number for pagination (1-based).

perPage Int

The number of tickets to return per page.

Methods

init(email:externalUserId:page:perPage:)
  • email : String
  • externalUserId : String
  • page : Int

Represents the priority level of a support ticket.

Values

TicketPriority.highTicketPriority.lowTicketPriority.mediumTicketPriority.urgent

Properties

displayName String

Represents the status of a support ticket.

Values

TicketStatus.closedTicketStatus.inProgressTicketStatus.newTicketStatus.openTicketStatus.resolvedTicketStatus.waitingOnCustomer

Properties

displayName String
systemImageName String

Help

Represents a collection of help articles.

Properties

articles [HelpArticle]?

The list of articles in this collection.

createdAt Date?

The date when the collection was created.

description String?

An optional description of the collection.

icon String?

An optional icon identifier for the collection.

id String

The unique identifier for the collection.

name String

The display name of the collection.

order Int?

The display order of this collection.

projectId String

The project ID this collection belongs to.

slug String

The URL-friendly slug identifier.

Methods

init(from:)
init(id:name:slug:description:icon:projectId:articles:order:createdAt:)
  • id : String
  • name : String
  • slug : String
  • description : String
  • icon : String
  • projectId : String
  • articles : HelpArticle
  • order : Int
hash(into:)
  • hasher : Hasher

Represents a decision node in a help flow.

Properties

answerNoNodeId String?

The next node ID if the user answers “No”.

answerYesNodeId String?

The next node ID if the user answers “Yes”.

articleId String?

The article ID to show at leaf nodes (when there are no more questions).

flowId String

The ID of the flow this node belongs to.

id String

The unique identifier for the decision node.

parentId String?

The ID of the parent node. `` indicates this is the root node.

question String

The question text to display to the user.

Methods

init(from:)
init(id:flowId:parentId:question:answerYesNodeId:answerNoNodeId:articleId:)
  • id : String
  • flowId : String
  • parentId : String
  • question : String
  • answerYesNodeId : String
  • answerNoNodeId : String
struct

HelpFlow

Represents a help flow that guides users through a series of steps or decisions.

Properties

articles [HelpArticle]?

The articles in this flow.

collectionId String?

The ID of the collection this flow belongs to.

color String?

An optional color code.

createdAt Date?

The date when the flow was created.

decisionNodes [HelpDecisionNode]?

The decision nodes in this flow.

description String?

An optional description of the flow.

displayType String?

The display type for the flow.

icon String?

An optional icon identifier.

id String

The unique identifier for the flow.

name String

The display name of the flow.

slug String

The URL-friendly slug identifier.

sortOrder Int?

The sort order of this flow.

updatedAt Date?

The date when the flow was last updated.

wizardSteps [HelpWizardStep]?

The wizard steps in this flow.

Methods

init(from:)
hash(into:)
  • hasher : Hasher
struct

HelpArticle

Represents a help article or documentation page.

Properties

collectionId String?

The ID of the collection this article belongs to.

content String

The full content of the article (may contain markdown or HTML).

createdAt Date?

The date when the article was created.

excerpt String?

An optional excerpt or summary of the article.

id String

The unique identifier for the article.

isPublished Bool

Whether the article is published and visible to users.

order Int?

The display order of this article.

projectId String?

The project ID this article belongs to.

slug String

The URL-friendly slug identifier.

title String

The title of the article.

updatedAt Date?

The date when the article was last updated.

Methods

init(from:)
init(id:title:slug:content:excerpt:collectionId:projectId:order:isPublished:createdAt:updatedAt:)
  • id : String
  • title : String
  • slug : String
  • content : String
  • excerpt : String
  • collectionId : String
  • projectId : String
  • order : Int
  • isPublished : Bool
  • createdAt : Date
hash(into:)
  • hasher : Hasher

Represents a step in a help wizard flow.

Properties

articleId String?

Optional ID of a linked help article.

content String

The HTML or markdown content for the step.

createdAt Date?

The date when the step was created.

flowId String?

The ID of the flow this step belongs to.

id String

The unique identifier for the wizard step.

stepNumber Int

The step number used for ordering (ascending).

title String

The title of the wizard step.

updatedAt Date?

The date when the step was last updated.

Methods

init(from:)
init(id:stepNumber:title:content:articleId:flowId:createdAt:updatedAt:)
  • id : String
  • stepNumber : Int
  • title : String
  • content : String
  • articleId : String
  • flowId : String
  • createdAt : Date
hash(into:)
  • hasher : Hasher

A public help collection as returned by the API.

Properties

createdAt Date?

The date when the collection was created.

description String?

An optional description of the collection.

flows [HelpFlow]

The help flows in this collection.

id String

The unique identifier for the collection.

isLive Bool

Whether the collection is live and visible.

name String

The display name of the collection.

projectId String

The project ID this collection belongs to.

updatedAt Date?

The date when the collection was last updated.

version String?

An optional version identifier.

Methods

init(from:)

Form

struct

FormField

Represents a single field in a contact form.

Properties

defaultValue String?

The default value for the field.

id String

The unique identifier for the field.

label String

The label text to display for the field.

options [String]?

The available options for select, radio, or checkbox fields.

order Int?

The display order of the field.

placeholder String?

The placeholder text to show when the field is empty.

required Bool

Whether this field is required.

type FieldType

The type of input field.

validation FieldValidation?

Validation rules for the field.

Methods

init(from:)
init(id:type:label:placeholder:required:options:defaultValue:validation:order:)
  • id : String
  • type : FieldType
  • label : String
  • placeholder : String
  • required : Bool
  • options : String
  • defaultValue : String
  • validation : FieldValidation

Validation rules for a form field.

Properties

maxLength Int?

The maximum allowed length of the input.

minLength Int?

The minimum required length of the input.

pattern String?

A regular expression pattern to validate against.

patternMessage String?

The error message to display if the pattern doesn’t match.

Methods

init(from:)
init(minLength:maxLength:pattern:patternMessage:)
  • minLength : Int
  • maxLength : Int
  • pattern : String
struct

Branding

Properties

logo String?
name String?
primaryColor String?

Methods

init(from:)

A submission of a contact form.

Properties

data [String:String]

A dictionary mapping field IDs to their submitted values.

formId String

The ID of the form being submitted.

Methods

init(formId:data:)
  • formId : String
struct

ContactForm

Represents a contact form that can be displayed to users.

Properties

createdAt Date?

The date when the form was created.

description String?

An optional description of the form.

emailRecipient String?

The email address to send form submissions to.

emailSubject String?

The subject line for email notifications.

enabled Bool?

Whether the form is enabled.

fields [FormField]

The list of fields in the form.

id String

The unique identifier for the form.

isActive Bool?

Whether the form is active.

isFormActive Bool

Computed property to check if form is active (uses enabled if isActive is not set)

name String

The display name of the form.

projectId String?

The project ID this form belongs to.

slug String?

The URL-friendly slug identifier.

submitButtonText String

The text to display on the submit button.

successMessage String?

The message to display after successful submission.

Methods

init(from:)
init(id:name:slug:description:projectId:fields:submitButtonText:successMessage:emailRecipient:emailSubject:isActive:enabled:createdAt:)
  • id : String
  • name : String
  • slug : String
  • description : String
  • projectId : String
  • fields : FormField
  • submitButtonText : String
  • successMessage : String
  • emailRecipient : String
  • emailSubject : String
  • isActive : Bool
  • enabled : Bool

Properties

data ContactFormsResponse
success Bool?

Methods

init(from:)

Properties

branding Branding?
form ContactForm
projectId String

Methods

init(from:)

Properties

contactForms [String:ContactForm]

Methods

init(from:)
enum

FieldType

Types of input fields available in contact forms.

Values

FieldType.checkboxFieldType.emailFieldType.radioFieldType.selectFieldType.textFieldType.textarea

Properties

displayName String

Roadmap

struct

RoadmapColumn

Represents a column in a kanban-style roadmap view.

Properties

id String

The unique identifier for the column (same as status raw value).

items [RoadmapItem]

The roadmap items in this column.

status WishStatus

The status that this column represents.

Methods

init(status:items:)
  • status : WishStatus
struct

RoadmapItem

Represents an item on the product roadmap.

Properties

category Category?

The category this item belongs to, if any.

commentCount Int

The number of comments on this item.

completedAt Date?

The date when the item was completed, if applicable.

createdAt Date

The date when the item was created.

description String?

An optional detailed description.

id String

The unique identifier for the roadmap item.

status WishStatus

The current status of the roadmap item.

targetDate Date?

The target date for completion, if set.

title String

The title of the roadmap item.

voteCount Int

The number of votes this item has received.

Methods

init(from:)
init(id:title:description:status:voteCount:commentCount:category:targetDate:completedAt:createdAt:)
  • id : String
  • title : String
  • description : String
  • status : WishStatus
  • voteCount : Int
  • commentCount : Int
  • category : Category
  • targetDate : Date
  • completedAt : Date
  • createdAt : Date
hash(into:)
  • hasher : Hasher

Layout options for displaying the roadmap.

Values

RoadmapLayout.kanbanRoadmapLayout.listRoadmapLayout.timeline

Properties

displayName String
systemImageName String

Blog

struct

BlogFilters

Filters for querying blog posts.

Properties

categorySlug String?

Filter by category slug.

isFeatured Bool?

Filter to featured posts only.

page Int

Current page number.

perPage Int

Number of items per page.

search String?

Search query.

tag String?

Filter by tag.

Methods

init(categorySlug:tag:search:isFeatured:page:perPage:)
  • categorySlug : String
  • tag : String
  • search : String
  • isFeatured : Bool
  • page : Int

Paginated result for blog posts.

Properties

page Int

Current page number.

perPage Int

Number of items per page.

posts [BlogPost]

The list of blog posts.

total Int

Total number of posts matching the query.

totalPages Int

Total number of pages.

Methods

init(posts:total:page:perPage:totalPages:)
  • posts : BlogPost
  • total : Int
  • page : Int
  • perPage : Int
  • totalPages : Int
struct

BlogPost

Represents a blog post.

Properties

authorName String?

The name of the author.

category BlogCategoryRef?

The category this post belongs to (nested object).

categoryId String?

The category ID this post belongs to.

content String

The full content of the post (markdown or HTML).

createdAt Date?

The date when the post was created.

excerpt String?

A short excerpt of the post.

id String

The unique identifier for the post.

isFeatured Bool

Whether this post is featured.

metaDescription String?

The meta description for SEO.

ogImageUrl String?

The Open Graph image URL.

projectId String

The project ID this post belongs to.

publishedAt Date?

The date when the post was published.

slug String

The URL-friendly slug identifier.

tags [String]

Tags associated with this post.

title String

The title of the post.

updatedAt Date?

The date when the post was last updated.

viewCount Int

The number of times this post has been viewed.

Methods

init(from:)
init(id:projectId:categoryId:title:slug:content:excerpt:metaDescription:ogImageUrl:authorName:publishedAt:isFeatured:tags:viewCount:createdAt:updatedAt:category:)
  • id : String
  • projectId : String
  • categoryId : String
  • title : String
  • slug : String
  • content : String
  • excerpt : String
  • metaDescription : String
  • ogImageUrl : String
  • authorName : String
  • publishedAt : Date
  • isFeatured : Bool
  • tags : String
  • viewCount : Int
  • createdAt : Date
  • updatedAt : Date

A lightweight reference to a blog category (used in nested objects).

Properties

color String?

The color associated with this category (hex string).

id String

The unique identifier for the category.

name String

The display name of the category.

slug String

The URL-friendly slug identifier.

Methods

init(from:)
init(id:name:slug:color:)
  • id : String
  • name : String
  • slug : String
struct

BlogCategory

Represents a blog category.

Properties

color String?

The color associated with this category (hex string).

description String?

An optional description of the category.

id String

The unique identifier for the category.

name String

The display name of the category.

postCount Int?

The number of posts in this category.

slug String

The URL-friendly slug identifier.

Methods

init(from:)
init(id:name:slug:description:color:postCount:)
  • id : String
  • name : String
  • slug : String
  • description : String
  • color : String

Releases

Represents a feature included in a release.

Properties

createdAt Date

The date when the feature was created.

description String?

An optional description of the feature.

id String

The unique identifier for the feature.

imageUrl String?

The URL of an image showcasing the feature.

sortOrder Int?

The display order of this feature.

title String

The title of the feature.

updatedAt Date

The date when the feature was last updated.

Methods

init(from:)
hash(into:)
  • hasher : Hasher
struct

Release

Represents a product release or version update.

Properties

content String?

The full content of the release notes (may contain markdown or HTML).

coverImageUrl String?

The URL of the cover image for the release.

createdAt Date

The date when the release was created.

excerpt String?

An optional excerpt or summary of the release.

features [ReleaseFeature]?

The list of features included in this release.

id String

The unique identifier for the release.

labels [ReleaseLabel]

The labels categorizing this release.

publishedAt Date?

The date when the release was published.

slug String

The URL-friendly slug identifier.

title String

The title of the release.

updatedAt Date

The date when the release was last updated.

version String?

The version number of the release.

Methods

init(from:)
hash(into:)
  • hasher : Hasher

Labels that categorize releases by their type.

Values

ReleaseLabel.announcementReleaseLabel.bugfixReleaseLabel.featureReleaseLabel.improvementReleaseLabel.maintenanceReleaseLabel.performance

Properties

color Color
displayName String
iconName String

Status

Represents a service being monitored on a status page.

Properties

color String?

An optional color code for displaying the service.

createdAt Date

The date when the service was created.

description String?

An optional description of the service.

groupName String?

The name of the group this service belongs to.

id String

The unique identifier for the service.

isActive Bool?

Whether the service is currently being monitored.

name String

The display name of the service.

sortOrder Int?

The display order of this service.

status StatusType?

The current operational status of the service.

updatedAt Date

The date when the service was last updated.

Methods

init(from:)
struct

StatusPage

Represents a status page configuration.

Properties

createdAt Date?

The date when the status page was created.

description String?

An optional description of the status page.

id String

The unique identifier for the status page.

isActive Bool?

Whether the status page is active.

name String

The display name of the status page.

organizationId String?

The organization ID this status page belongs to.

projectId String?

The project ID this status page belongs to.

publicUrl String?

The public URL for the status page.

slug String

The URL-friendly slug identifier.

updatedAt Date?

The date when the status page was last updated.

Methods

init(from:)

Represents the complete status overview for a status page.

Properties

activeUpdates [StatusUpdate]

The list of active status updates or incidents.

currentStatus StatusType

The overall current status of all services.

services [StatusPageService]?

The list of services being monitored.

servicesStatus [String:StatusType]?

A dictionary mapping service IDs to their current status.

statusPage StatusPage

The status page information.

Methods

init(from:)
struct

StatusUpdate

Represents a status update or incident notification.

Properties

affectedServices [String]?

The list of service IDs affected by this update.

createdAt Date

The date when the status update was created.

description String?

A detailed description of the update or incident.

id String

The unique identifier for the status update.

resolvedAt Date?

The date when the incident or maintenance was resolved.

startedAt Date?

The date when the incident or maintenance started.

state State

Whether the update is currently active or has been resolved.

statusType StatusType

The type of status (operational, maintenance, outage, etc.).

title String

The title of the status update.

updatedAt Date

The date when the status update was last updated.

Methods

init(from:)
enum

StatusType

Represents the operational status of a service.

Values

StatusType.degradedStatusType.incidentStatusType.maintenanceStatusType.majorOutageStatusType.operationalStatusType.partialOutage

Properties

color Color
displayName String
iconName String

Theme

Properties

defaultValue AppGramTheme
struct

ColorPalette

Represents a color palette for AppGram SDK views.

Properties

accent Color

The accent color for highlights.

background Color

The main background color.

border Color

The border color.

cardBackground Color

The background color for cards.

cardText Color

The text color for cards.

error Color

The color for error states.

neutral100 Color

Light neutral background (100)

neutral200 Color

Subtle border color (200) - Most commonly used for borders

neutral300 Color

Medium border color (300)

neutral400 Color

Muted text color (400)

neutral50 Color

Lightest neutral background (50)

neutral500 Color

Secondary text color (500)

neutral600 Color

Primary text color (600)

neutral700 Color

Emphasized text color (700)

neutral800 Color

Dark background (800)

neutral900 Color

Darkest background (900)

primary Color

The primary brand color.

secondary Color

The secondary brand color.

success Color

The color for success states.

text Color

The primary text color.

warning Color

The color for warning states.

classic ColorPalette
forest ColorPalette
minimal ColorPalette
modern ColorPalette
modernDark ColorPalette
neutral ColorPalette

Neutral preset - pure minimal design with neutral gray scale

ocean ColorPalette
slate ColorPalette

Slate preset - shadcn minimal aesthetic with slate gray tones

sunset ColorPalette

Methods

init(primary:secondary:accent:background:text:cardBackground:cardText:border:success:warning:error:neutral50:neutral100:neutral200:neutral300:neutral400:neutral500:neutral600:neutral700:neutral800:neutral900:)
  • primary : Color
  • secondary : Color
  • accent : Color
  • background : Color
  • text : Color
  • cardBackground : Color
  • cardText : Color
  • border : Color
  • success : Color
  • warning : Color
  • error : Color
  • neutral50 : Color
  • neutral100 : Color
  • neutral200 : Color
  • neutral300 : Color
  • neutral400 : Color
  • neutral500 : Color
  • neutral600 : Color
  • neutral700 : Color
  • neutral800 : Color
struct

AppGramTheme

Represents a theme configuration for AppGram SDK views.

Properties

colors ColorPalette

The color palette for light mode.

darkColors ColorPalette?

The optional color palette for dark mode.

classic AppGramTheme
default AppGramTheme
forest AppGramTheme
minimal AppGramTheme
neutral AppGramTheme
ocean AppGramTheme
slate AppGramTheme
sunset AppGramTheme

Methods

init(colors:darkColors:)
  • colors : ColorPalette
resolvedColors(for:) → ColorPalette

UI

Properties

body some View

Methods

init(options:selectedOptions:style:)
  • options : NodeOption
  • selectedOptions : String

Properties

body some View

Methods

init(options:selectedOption:style:)
  • options : NodeOption
  • selectedOption : String

Properties

body some View

Methods

init(wish:feedbackService:strings:)
  • wish : Wish
  • feedbackService : FeedbackServiceProtocol

A view that displays a wizard flow with step-by-step navigation.

Properties

body some View

Methods

init(viewModel:)
  • viewModel : WizardViewModel

Ticket status badge with shadcn-inspired minimal styling.

Properties

body some View

Methods

init(status:)
  • status : TicketStatus

Properties

body some View

Properties

body some View

Methods

init(icon:title:message:actionTitle:action:)
  • icon : String
  • title : String
  • message : String
  • actionTitle : String
struct

VoteButton

Properties

body some View

Methods

init(voteCount:hasVoted:onVote:onRemoveVote:) async
  • voteCount : Int
  • hasVoted : Bool
  • onVote : Void
  • onRemoveVote : Void

Properties

body some View

Methods

init(article:)
  • article : HelpArticle

Properties

body some View

Methods

init(field:value:error:onValidate:)
  • field : FormField
  • value : String
  • error : String
  • onValidate : Void

The main container view for displaying popups.

Properties

body some View

A modal view displaying announcements with paging support.

Properties

body some View

Methods

init(announcements:cardConfiguration:onDismiss:onAction:)
  • announcements : Announcement
  • cardConfiguration : AnnouncementCardConfiguration
  • onDismiss : Void

Properties

body some View

Methods

init(columns:)

A view that displays a decision tree flow with Yes/No navigation.

Properties

body some View

Methods

init(viewModel:configuration:onArticleSelected:)
  • viewModel : DecisionTreeViewModel
  • configuration : HelpCenterConfiguration

Properties

body some View

Methods

init(supportService:userContextProvider:)
  • supportService : SupportServiceProtocol

Properties

body some View

Methods

init(message:)
  • message : SupportMessage
struct

SurveyView

Properties

body some View

Methods

init(slug:surveyService:projectId:userContextProvider:style:)
  • slug : String
  • surveyService : SurveyServiceProtocol
  • projectId : String
  • userContextProvider : UserContext
struct

CategoryBadge

Category badge with shadcn-inspired minimal styling.

Properties

body some View

Methods

init(category:)
  • category : Category
struct

RoadmapView

Properties

body some View

Methods

init(roadmapService:)
  • roadmapService : RoadmapServiceProtocol

Properties

body some View

Methods

init(article:)
  • article : HelpArticle
struct

CommentView

Properties

body some View

Methods

init(comment:)
  • comment : Comment

Properties

body some View

Methods

init(ticket:)
  • ticket : SupportTicket
struct

LoadingView

Properties

body some View

Methods

init()

Properties

body some View

Methods

init(field:value:error:onValidate:)
  • field : FormField
  • value : String
  • error : String
  • onValidate : Void

Properties

body some View

Methods

init(field:value:error:onValidate:)
  • field : FormField
  • value : String
  • error : String
  • onValidate : Void
struct

ErrorView

Properties

body some View

Methods

init(error:retryAction:presentation:) async
  • error : AppGramError
  • retryAction : Void

Properties

body some View

Methods

init(text:style:)
  • text : String

Properties

body some View

Methods

init(items:)

A view displaying the full content of a blog post.

Properties

body some View

Methods

init(post:relatedPosts:onRelatedPostTap:onBack:)
  • post : BlogPost
  • relatedPosts : BlogPost
  • onRelatedPostTap : Void

Properties

body some View
struct

HTMLView

A SwiftUI view that renders HTML content using WKWebView with proper styling

Methods

init(htmlContent:textColor:backgroundColor:contentHeight:)
  • htmlContent : String
  • textColor : UIColor
  • backgroundColor : UIColor
makeCoordinator() → Coordinator
makeUIView(context:) → WKWebView
updateUIView(_:context:)
  • webView : WKWebView
  • context : Context

Properties

body some View

Methods

init(form:supportService:userContextProvider:embedded:onDismiss:)
  • form : SupportForm
  • supportService : SupportServiceProtocol
  • userContextProvider : UserContext
  • embedded : Bool
  • onDismiss : Void
struct

BlogView

The main blog view that combines list and detail views.

Properties

body some View

Methods

init(blogService:)
  • blogService : BlogServiceProtocol
create() static → BlogView

Creates a BlogView using the shared SDK instance.

struct

StatusBadge

Status badge with shadcn-inspired minimal styling.

Properties

body some View

Methods

init(status:)
  • status : WishStatus

Properties

body some View

Methods

init(projectId:slug:apiBaseURL:apiKey:configuration:notificationManager:onSubscribe:onDismiss:) async
  • projectId : String
  • slug : String
  • apiBaseURL : String
  • apiKey : String
  • configuration : StatusConfiguration
  • notificationManager : NotificationManager
  • onSubscribe : Void

Properties

body some View

Methods

init(text:style:)
  • text : String
struct

WidgetView

A customizable widget view that can be embedded in any screen.

Properties

body some View

Methods

init(configuration:widgetService:)
  • configuration : AGWidgetConfiguration
  • widgetService : WidgetServiceProtocol

Properties

body some View

Methods

init(supportService:userContextProvider:formId:embedded:onDismiss:)
  • supportService : SupportServiceProtocol
  • userContextProvider : UserContext
  • formId : String
  • embedded : Bool
  • onDismiss : Void

Properties

body some View

Methods

init(items:)

Properties

body some View

Methods

init(field:value:error:onValidate:)
  • field : FormField
  • value : String
  • error : String
  • onValidate : Void

Properties

body some View

Methods

init(field:value:error:onValidate:)
  • field : FormField
  • value : String
  • error : String
  • onValidate : Void
struct

PrimaryButton

Primary action button with design system styling and animations.

Properties

body some View

Methods

init(_:isLoading:action:)
  • title : String
  • isLoading : Bool
  • action : Void

Properties

body some View

Methods

init(collection:)
  • collection : HelpCollection

Feedback card view with unified design system styling.

Properties

body some View

Methods

init(wish:onVote:onRemoveVote:) async
  • wish : Wish
  • onVote : Void
  • onRemoveVote : Void

Properties

body some View

Methods

init(orgSlug:projectSlug:apiBaseURL:apiKey:configuration:notificationManager:onDismiss:)
  • orgSlug : String
  • projectSlug : String
  • apiBaseURL : String
  • apiKey : String
  • configuration : ReleasesConfiguration
  • notificationManager : NotificationManager

Properties

body some View

Methods

init(item:compact:)
  • item : RoadmapItem
struct

BlogListView

A view displaying a list of blog posts with pagination and filtering.

Properties

body some View

Methods

init(blogService:onPostTap:)
  • blogService : BlogServiceProtocol

Properties

body some View

Methods

init(helpService:configuration:)
  • helpService : HelpServiceProtocol

Properties

body some View

Methods

init(formId:contactFormService:projectId:userContextProvider:useStandaloneEndpoint:)
  • formId : String
  • contactFormService : ContactFormServiceProtocol
  • projectId : String
  • userContextProvider : UserContext

Properties

body some View

Methods

init(minRating:maxRating:rating:style:)
  • minRating : Int
  • maxRating : Int
  • rating : Int

Properties

body some View

Methods

init(ticket:supportService:)
  • ticket : SupportTicket
  • supportService : SupportServiceProtocol

A SwiftUI view that renders HTML content with proper theming

Properties

body some View

Methods

init(htmlContent:textColor:backgroundColor:)
  • htmlContent : String
  • textColor : Color
struct

BlogPostCard

A card view displaying a blog post preview.

Properties

body some View

Methods

init(post:onTap:)
  • post : BlogPost

Properties

body some View

Methods

init(style:onAnswer:)
  • style : SurveyStyle
  • onAnswer : Void

Properties

body some View

Methods

init(field:value:error:onValidate:)
  • field : FormField
  • value : String
  • error : String
  • onValidate : Void
struct

MarkdownView

Properties

body some View

Methods

init(_:)
  • content : String

Properties

body some View

Methods

init(feedbackService:strings:)
  • feedbackService : FeedbackServiceProtocol

Values

SurveyStyle.normalSurveyStyle.typeform

Utilities

Methods

parse(url:) static → DeepLink?
class

Cache

Methods

init(defaultTTL:)
cleanup()
clear()
get(key:) → Value?
remove(key:)
  • key : Key
set(key:value:ttl:)
  • key : Key
  • value : Value
class

Logger

Logger for AppGramSDK using OSLog with automatic production mode detection

Properties

isEnabled Bool

Global flag to enable/disable logging

minimumLogLevel LogLevel

Minimum log level to display. Set to .info or .error in production to hide debug logs

shared Logger

Shared logger instance for AppGramSDK

Methods

init(subsystem:category:)

Initialize a logger with a specific subsystem and category

  • subsystem : String
  • category : String
debug(_:file:function:line:) → String

Log a debug message

  • message : String
  • file : String
  • function : String
  • line : Int
error(_:file:function:line:) → String

Log an error message

  • message : String
  • file : String
  • function : String
  • line : Int
info(_:file:function:line:) → String

Log an info message

  • message : String
  • file : String
  • function : String
  • line : Int
warning(_:file:function:line:) → String

Log a warning message

  • message : String
  • file : String
  • function : String
  • line : Int
category(_:) static → Logger

Create a logger for a specific category

class

Debouncer

Methods

init(delay:)
cancel()
debounce(action:) async
  • action : Void

Methods

init()
checkForNewReleases(_:)
checkForNewStatusUpdates(_:)
checkForResolvedStatusUpdates(_:)
subscribe(handler:) → UUID
unsubscribe(token:)
  • token : UUID
class

RateLimiter

Rate limiter for contact form submissions Limits submissions to max 10 per hour per form

Methods

init(maxSubmissions:timeWindow:storageKey:)
  • maxSubmissions : Int
  • timeWindow : TimeInterval
canSubmit(formId:) → Bool

Check if a submission is allowed for the given form ID

clearRecords(formId:)

Clear all submission records for a form (useful for testing)

  • formId : String
recordSubmission(formId:)

Record a submission for the given form ID

  • formId : String
remainingSubmissions(formId:) → Int

Get the number of remaining submissions allowed for the given form ID

Utility for sanitizing form input data

Methods

init()
sanitize(_:) → String

Sanitize a dictionary of form data

sanitize(_:) → String

Sanitize a string value by trimming whitespace and removing potentially dangerous characters

Properties

shared DeviceFingerprint

Methods

generate() async → String
reset()

Other

Configuration options for customizing the automatic popup system behavior and appearance.

Properties

content PopupContent

The content to display in the popup.

displaySettings DisplaySettings

Display settings for customizing the popup appearance.

presentationStyle PresentationStyle

The presentation style for the popup.

snoozeSettings SnoozeSettings

Settings for the snooze functionality.

triggerConditions TriggerConditions

The trigger conditions that determine when the popup should appear.

default PopupConfiguration

Default popup configuration with sensible defaults.

Methods

init(triggerConditions:content:presentationStyle:displaySettings:snoozeSettings:)
  • triggerConditions : TriggerConditions
  • content : PopupContent
  • presentationStyle : PresentationStyle
  • displaySettings : DisplaySettings

View model for managing decision tree flow state and navigation.

Properties

canGoBack Bool

Whether the user can navigate back.

currentNode HelpDecisionNode

The current node being displayed.

currentNodeId String

The current node ID being displayed.

currentQuestionNumber Int

Current question number (1-based).

flow HelpFlow

The current help flow being displayed.

hasNodes Bool

Whether the decision tree has nodes to display.

isLeafNode Bool

Whether the current node is a leaf node (no Yes/No children).

linkedArticle HelpArticle

The linked article for the current leaf node, if any.

nodeHistory [HistoryEntry

The history of visited nodes and answers.

nodes [HelpDecisionNode

All decision nodes from the flow.

publishedArticles [HelpArticle

Published articles from the flow (sorted by sort_order).

rootNode HelpDecisionNode

The root node (node with parent_id === null).

Methods

init()
handleAnswer(_:)

Handles a Yes/No answer and navigates to the next node.

  • answer : DecisionAnswer
handleBack()

Navigates back one step in the history.

handleRestart()

Restarts the decision tree flow.

loadFlow(_:)

Loads a help flow and resets to the root node.

  • flow : HelpFlow
reset()

Resets the decision tree state.

Trigger conditions that determine when the popup should appear.

Properties

afterDaysOfUsage Int?

Show popup after this many days of usage. Set to `` to disable.

afterLaunches Int?

Show popup after this many app launches. Set to `` to disable.

minimumInterval TimeInterval

Minimum interval (in seconds) between popup displays.

repeatInterval TimeInterval?

Show popup repeatedly at this interval (in seconds). Set to `` to disable.

default TriggerConditions

Default trigger conditions.

Methods

init(afterLaunches:afterDaysOfUsage:repeatInterval:minimumInterval:)
  • afterLaunches : Int
  • afterDaysOfUsage : Int
  • repeatInterval : TimeInterval

Configuration options for customizing the help center view appearance and behavior.

Properties

articleDisplayBehavior ArticleDisplayBehavior

The behavior when an article is found in a decision tree.

decisionTreeBackLabel String?
decisionTreeButtonColor Color

The color for Yes/No buttons in decision tree flows (legacy support).

decisionTreeNoLabel String?
decisionTreePrompt String?
decisionTreeRestartLabel String?
decisionTreeSolutionTitle String?
decisionTreeSubtitle String?
decisionTreeTitle String?

Optional labels for decision tree UI copy.

decisionTreeViewArticleLabel String?
decisionTreeYesLabel String?
noButtonColor Color?

The color for No buttons in decision tree flows.

yesButtonColor Color?

The color for Yes buttons in decision tree flows.

default HelpCenterConfiguration

Methods

init(yesButtonColor:noButtonColor:decisionTreeButtonColor:articleDisplayBehavior:decisionTreeTitle:decisionTreeSubtitle:decisionTreePrompt:decisionTreeYesLabel:decisionTreeNoLabel:decisionTreeSolutionTitle:decisionTreeViewArticleLabel:decisionTreeBackLabel:decisionTreeRestartLabel:)
  • yesButtonColor : Color
  • noButtonColor : Color
  • decisionTreeButtonColor : Color
  • articleDisplayBehavior : ArticleDisplayBehavior
  • decisionTreeTitle : String
  • decisionTreeSubtitle : String
  • decisionTreePrompt : String
  • decisionTreeYesLabel : String
  • decisionTreeNoLabel : String
  • decisionTreeSolutionTitle : String
  • decisionTreeViewArticleLabel : String
  • decisionTreeBackLabel : String
struct

HistoryEntry

Represents a history entry in the decision tree navigation.

Properties

answer DecisionAnswer

The answer that was given.

id String
nodeId String

The node ID that was visited.

question String

The question that was asked.

Methods

init(nodeId:question:answer:)
  • nodeId : String
  • question : String
  • answer : DecisionAnswer
struct

SupportForm

Represents a support form that can be displayed to users.

Properties

createdAt Date?

The date when the form was created.

description String?

An optional description of the form.

enabled Bool?

Whether the form is enabled.

fields [FormField]

The list of fields in the form.

id String

The unique identifier for the form.

isFormActive Bool

Computed property to check if form is active

name String

The display name of the form.

submitButtonText String

The text to display on the submit button.

successMessage String?

The message to display after successful submission.

updatedAt Date?

The date when the form was last updated.

Methods

init(from:)
init(id:name:description:fields:submitButtonText:successMessage:enabled:createdAt:updatedAt:)
  • id : String
  • name : String
  • description : String
  • fields : FormField
  • submitButtonText : String
  • successMessage : String
  • enabled : Bool
  • createdAt : Date
hash(into:)
  • hasher : Hasher

Configuration for announcement display behavior.

Properties

cardConfiguration AnnouncementCardConfiguration

Configuration for the announcement card appearance and buttons.

maxAnnouncementsToShow Int

Maximum number of announcements to show at once.

minimumHoursBetweenShows Int

Minimum hours between automatic announcement displays.

orgSlug String

The organization slug to fetch releases from.

projectSlug String

The project slug to fetch releases from.

showOnLaunch Bool

Whether to automatically show announcements on app launch.

Methods

init(orgSlug:projectSlug:showOnLaunch:minimumHoursBetweenShows:maxAnnouncementsToShow:cardConfiguration:)

Creates an announcement configuration.

  • orgSlug : String
  • projectSlug : String
  • showOnLaunch : Bool
  • minimumHoursBetweenShows : Int
  • maxAnnouncementsToShow : Int

Methods

webView(_:didFinish:)
  • webView : WKWebView
class

PopupManager

Manager for controlling the automatic popup system.

Properties

configuration PopupConfiguration

The popup configuration.

currentContent PopupContent

The current content to display in the popup.

isPresented Bool

Whether the popup is currently being presented.

Methods

init(configuration:tracker:projectId:surveyService:feedbackService:)

Creates a new popup manager.

  • configuration : PopupConfiguration
  • tracker : PopupTracker
  • projectId : String
  • surveyService : SurveyServiceProtocol
checkAndPresentIfNeeded() async

Checks if the popup should be presented and shows it if conditions are met.

dismiss()

Dismisses the currently shown popup.

recordInteraction(_:)

Records a user interaction with the popup.

  • type : InteractionType
showPopupManually()

Manually triggers the popup to appear immediately.

snooze()

Snoozes the popup for the configured duration.

start()

Starts the popup system.

stop()

Stops the popup system.

A submission of a support form.

Properties

data [String:String]

A dictionary mapping field IDs to their submitted values.

description String

The description of the support request.

formId String

The ID of the form being submitted.

subject String

The subject of the support request.

userEmail String?

The user’s email address.

userName String?

The user’s name.

Methods

init(formId:subject:description:data:userEmail:userName:)
  • formId : String
  • subject : String
  • description : String
  • data : String
  • userEmail : String
class

AppGramSDK

The main entry point for the AppGram SDK.

Properties

configuration Configuration

The current configuration of the SDK.

userContext UserContext

The current user context.

shared AppGramSDK

The shared singleton instance of the AppGram SDK.

version String

The current version of the AppGram SDK.

Methods

blogView() → View

Returns a SwiftUI view for displaying blog posts and content.

clearUser()

Clears the current user context and sets it back to anonymous.

configure(projectId:baseURL:theme:apiKey:popupConfiguration:announcementConfiguration:)

Configures the AppGram SDK with the provided project credentials and settings.

  • projectId : String
  • baseURL : String
  • theme : AppGramTheme
  • apiKey : String
  • popupConfiguration : PopupConfiguration
contactFormView(formId:) → View

Returns a SwiftUI view for displaying and submitting a contact form.

feedbackView() → View

Returns a SwiftUI view for displaying and managing feedback.

feedbackWidget(style:size:ctaTitle:ctaAction:)

Creates a widget view with a feedback configuration.

  • style : WidgetStyle
  • size : WidgetSize
  • ctaTitle : String
getAnnouncementManager() → AnnouncementManager

Returns the announcement manager instance.

getBlogService() → BlogServiceProtocol

Returns the blog service instance.

getContactFormService() → ContactFormServiceProtocol

Returns the contact form service instance.

getFeedbackService() → FeedbackServiceProtocol

Returns the feedback service instance.

getHelpService() → HelpServiceProtocol

Returns the help service instance.

getNotificationManager() → NotificationManager

Returns the notification manager instance.

getPopupManager() → PopupManager

Returns the popup manager instance.

getReleasesService() → ReleasesServiceProtocol

Returns the releases service instance.

getRoadmapService() → RoadmapServiceProtocol

Returns the roadmap service instance.

getStatusService() → StatusServiceProtocol

Returns the status service instance.

getSupportService() → SupportServiceProtocol

Returns the support service instance.

getSurveyService() → SurveyServiceProtocol

Returns the survey service instance.

getWidgetService() → WidgetServiceProtocol

Returns the widget service instance.

helpCenterView(configuration:) → View

Returns a SwiftUI view for displaying the help center.

releasesView(orgSlug:projectSlug:configuration:) → View

Returns a SwiftUI view for displaying release notes.

  • orgSlug : String
  • projectSlug : String
roadmapView() → View

Returns a SwiftUI view for displaying the product roadmap.

roadmapWidget(style:size:ctaTitle:ctaAction:)

Creates a widget view with a roadmap configuration.

  • style : WidgetStyle
  • size : WidgetSize
  • ctaTitle : String
setUser(userId:email:name:)

Sets the current user context for the SDK.

  • userId : String
  • email : String
showAnnouncements() async

Manually presents announcements to the user.

statusPageView(slug:configuration:onSubscribeCallback:)

Returns a SwiftUI view for displaying a status page.

  • slug : String
  • configuration : StatusConfiguration
statusWidget(style:size:slug:ctaTitle:ctaAction:)

Creates a widget view with a status configuration.

  • style : WidgetStyle
  • size : WidgetSize
  • slug : String
  • ctaTitle : String
supportFormView(formId:) → View

Returns a SwiftUI view for displaying and submitting a specific support form.

supportView() → View

Returns a SwiftUI view for displaying and managing support tickets.

surveyView(slug:style:) → View

Returns a SwiftUI view for displaying and submitting a survey.

  • slug : String
widgetView(configuration:) → View

Returns a SwiftUI view for displaying a customizable widget.

contactFormViewController(formId:) static → UIViewController

Returns a UIKit view controller for displaying and submitting a contact form.

feedbackViewController() static → UIViewController

Returns a UIKit view controller for displaying and managing feedback.

helpCenterViewController() static → UIViewController

Returns a UIKit view controller for displaying the help center.

releasesViewController(orgSlug:projectSlug:configuration:) static → UIViewController

Returns a UIKit view controller for displaying release notes.

  • orgSlug : String
  • projectSlug : String
roadmapViewController() static → UIViewController

Returns a UIKit view controller for displaying the product roadmap.

statusPageViewController(slug:configuration:) static → UIViewController

Returns a UIKit view controller for displaying a status page.

  • slug : String
supportViewController() static → UIViewController

Returns a UIKit view controller for displaying and managing support tickets.

surveyViewController(slug:) static → UIViewController

Returns a UIKit view controller for displaying and submitting a survey.

widgetViewController(configuration:) static → UIViewController

Returns a UIKit view controller for displaying a customizable widget.

View model for managing wizard flow state and navigation.

Properties

canGoBack Bool

Whether the user can go to the previous step.

canGoForward Bool

Whether the user can go to the next step.

currentStep Int

The current step index (0-based).

currentStepData HelpWizardStep

The current step data.

flow HelpFlow

The current help flow being displayed.

hasSteps Bool

Whether the wizard has steps to display.

isFirstStep Bool

Whether the current step is the first step.

isLastStep Bool

Whether the current step is the last step.

linkedArticle HelpArticle

The linked article for the current step, if any.

progress Double

Progress value between 0.0 and 1.0.

progressPercentage Int

Progress percentage (0-100).

publishedArticles [HelpArticle

Published articles from the flow (sorted by sort_order).

totalSteps Int

Total number of steps.

Methods

init()
goToStep(_:)

Navigates to a specific step by index.

  • index : Int
loadFlow(_:)

Loads a help flow and resets to the first step.

  • flow : HelpFlow
nextStep()

Navigates to the next step.

previousStep()

Navigates to the previous step.

reset()

Resets the wizard state.

stepState(at:) → StepState

Returns the state of a step (completed, current, or upcoming).

Display settings for customizing the popup appearance.

Properties

animationDuration TimeInterval

The duration of the animation when showing/hiding the popup.

cornerRadius CGFloat

The corner radius for the popup card.

maxWidth CGFloat?

Optional maximum width for the popup. Set to `` for no constraint.

shadowRadius CGFloat

The shadow radius for the popup card.

default DisplaySettings

Default display settings.

Methods

init(animationDuration:cornerRadius:shadowRadius:maxWidth:)
  • animationDuration : TimeInterval
  • cornerRadius : CGFloat
  • shadowRadius : CGFloat

Configuration options for customizing a widget’s appearance and behavior.

Properties

backgroundColor Color?

Custom background color for the widget.

borderColor Color?

Custom border color for the widget.

borderWidth CGFloat

Border width for the widget.

cornerRadius CGFloat

Corner radius for the widget.

ctaAction (() ->Void)?

Action to perform when CTA button is tapped.

ctaButton CTAStyle?

Configuration for the CTA button.

customContent (() ->AnyView)?

Custom content view builder (for custom widget type).

padding EdgeInsets

Padding inside the widget.

parameters [String:String]

Additional parameters for widget-specific behavior.

size WidgetSize

The size of the widget.

style WidgetStyle

The visual style of the widget.

subtitle String?

Custom subtitle/description text for the widget.

title String?

Custom title text for the widget.

type WidgetType

The type of widget content.

Methods

init(type:style:size:ctaButton:title:subtitle:backgroundColor:borderColor:borderWidth:cornerRadius:padding:customContent:ctaAction:parameters:)
  • type : WidgetType
  • style : WidgetStyle
  • size : WidgetSize
  • ctaButton : CTAStyle
  • title : String
  • subtitle : String
  • backgroundColor : Color
  • borderColor : Color
  • borderWidth : CGFloat
  • cornerRadius : CGFloat
  • padding : EdgeInsets
  • customContent : AnyView
  • ctaAction : Void
custom(style:size:title:subtitle:ctaButton:customContent:ctaAction:) static → AnyView

Default widget configuration for custom content.

  • style : WidgetStyle
  • size : WidgetSize
  • title : String
  • subtitle : String
  • ctaButton : CTAStyle
  • customContent : AnyView
feedback(style:size:ctaButton:ctaAction:) static

Default widget configuration for feedback.

  • style : WidgetStyle
  • size : WidgetSize
  • ctaButton : CTAStyle
roadmap(style:size:ctaButton:ctaAction:) static

Default widget configuration for roadmap.

  • style : WidgetStyle
  • size : WidgetSize
  • ctaButton : CTAStyle
status(style:size:ctaButton:ctaAction:slug:) static

Default widget configuration for status.

  • style : WidgetStyle
  • size : WidgetSize
  • ctaButton : CTAStyle
  • ctaAction : Void

Customizable strings for the feedback UI.

Properties

addCommentLabel String

Label for add comment section

allCategoriesLabel String

Label for showing all categories

allStatusesLabel String

Label for showing all statuses

byAuthorPrefix String

Prefix for author attribution

cancelButtonLabel String

Text for cancel button

categoryFilterLabel String

Label for category filter when no category is selected

closeButtonLabel String

Text for close button

commentsLabel String

Label for comments section

descriptionHint String

Placeholder hint for description input

descriptionLabel String

Label for description input field

detailTitle String

Title for the feedback detail view

emptyActionLabel String

Button text for empty state action

emptyMessage String

Message for empty feedback list

emptyTitle String

Title for empty feedback list

feedbackTitle String

Title for the feedback list view

noCommentsMessage String

Message when no comments exist

postCommentLabel String

Button text for posting a comment

searchPlaceholder String

Placeholder for search field

sortPrefix String

Prefix for sort filter

statusFilterLabel String

Label for status filter when no status is selected

submitButtonLabel String

Text for submit button

submitTitle String

Title for the submit feedback view

submittedMessage String

Message shown when feedback is submitted successfully

titleHint String

Placeholder hint for title input

titleLabel String

Label for title input field

titlePlaceholder String

Placeholder for title input field

default FeedbackStrings

Default strings configuration

Methods

init(feedbackTitle:submitTitle:detailTitle:statusFilterLabel:allStatusesLabel:categoryFilterLabel:allCategoriesLabel:sortPrefix:titleLabel:titleHint:titlePlaceholder:descriptionLabel:descriptionHint:submitButtonLabel:cancelButtonLabel:closeButtonLabel:commentsLabel:addCommentLabel:postCommentLabel:noCommentsMessage:emptyTitle:emptyMessage:emptyActionLabel:submittedMessage:searchPlaceholder:byAuthorPrefix:)
  • feedbackTitle : String
  • submitTitle : String
  • detailTitle : String
  • statusFilterLabel : String
  • allStatusesLabel : String
  • categoryFilterLabel : String
  • allCategoriesLabel : String
  • sortPrefix : String
  • titleLabel : String
  • titleHint : String
  • titlePlaceholder : String
  • descriptionLabel : String
  • descriptionHint : String
  • submitButtonLabel : String
  • cancelButtonLabel : String
  • closeButtonLabel : String
  • commentsLabel : String
  • addCommentLabel : String
  • postCommentLabel : String
  • noCommentsMessage : String
  • emptyTitle : String
  • emptyMessage : String
  • emptyActionLabel : String
  • submittedMessage : String
  • searchPlaceholder : String

Opacity constants for consistent transparency levels.

Properties

disabled Double

Disabled state opacity (0.4)

full Double

Full opacity (1.0)

muted Double

Muted content opacity (0.6)

subtle Double

Subtle content opacity (0.8)

Properties

body some View

Methods

init(configuration:)

Response from verifying a magic link token.

Properties

tickets [SupportTicket]

The user’s support tickets.

userEmail String

The verified user’s email address.

Methods

init(from:)

Corner radius constants for consistent rounded corners.

Properties

lg CGFloat

Large corner radius (12pt) - Cards, buttons (most common)

md CGFloat

Medium corner radius (8pt) - Form fields

pill CGFloat

Pill corner radius (999pt) - Capsule shapes

sm CGFloat

Small corner radius (6pt) - Small buttons

xl CGFloat

Extra large corner radius (16pt) - Large cards

xs CGFloat

Extra small corner radius (4pt) - Badges

xxl CGFloat

Extra extra large corner radius (20pt) - Sheets, modals

Typography constants for font sizes, line heights, and weights.

Properties

base CGFloat

Base font size (16pt) - Body text, default

bold Font Weight

Bold font weight

lg CGFloat

Large font size (18pt) - Subheadings

lineHeightNormal CGFloat

Normal line height (1.5x) - Standard body text

lineHeightRelaxed CGFloat

Relaxed line height (1.75x) - Comfortable reading

lineHeightTight CGFloat

Tight line height (1.25x) - Compact text

medium Font Weight

Medium font weight

regular Font Weight

Regular font weight

semibold Font Weight

Semibold font weight

sm CGFloat

Small font size (14pt) - Secondary text

xl CGFloat

Extra large font size (20pt) - Headings

xs CGFloat

Extra small font size (12pt) - Captions, fine print

xxl CGFloat

Extra extra large font size (24pt) - Large headings

xxxl CGFloat

Extra extra extra large font size (32pt) - Hero text

Properties

contactFormId String
releasesOrgSlug String
releasesProjectSlug String
statusSlug String
supportFormId String
surveySlug String
widgetSize AGWidgetConfiguration WidgetSize
widgetStyle AGWidgetConfiguration WidgetStyle

Methods

init(surveySlug:supportFormId:contactFormId:statusSlug:releasesOrgSlug:releasesProjectSlug:widgetStyle:widgetSize:)
  • surveySlug : String
  • supportFormId : String
  • contactFormId : String
  • statusSlug : String
  • releasesOrgSlug : String
  • releasesProjectSlug : String
  • widgetStyle : WidgetStyle

Observes app lifecycle events and provides callbacks for key events.

Properties

onBackground (() ->Void)?

Called when the app enters the background.

onForeground (() ->Void)?

Called when the app enters the foreground.

onLaunch (() ->Void)?

Called when the app finishes launching.

Methods

init()
struct

Announcement

Represents an announcement to be displayed to users.

Properties

createdAt Date

The date when the announcement was created.

features [AnnouncementFeature]

The list of features or highlights to display.

id String

The unique identifier for the announcement.

imageUrl String?

An optional preview image URL.

learnMoreUrl String?

An optional URL for “Learn more” link.

privacyNote String?

An optional privacy notice to display.

subtitle String?

An optional subtitle providing additional context.

title String

The title of the announcement (e.g., “Introducing agent mode”).

version String?

The version associated with this announcement.

Methods

init(from:)
hash(into:)
  • hasher : Hasher
from(release:) static → Announcement

Creates an announcement from a release.

class

PopupTracker

Actor for tracking popup display state and evaluating trigger conditions.

Methods

init()
canShowNow(configuration:) → Bool

Checks if the popup can be shown now, considering snooze and minimum interval.

getDaysOfUsage() → Int

Calculates the number of days since first app launch.

getDismissCount() → Int

Returns the number of times the popup was dismissed without interaction.

getInteractionCount() → Int

Returns the number of times the user interacted with the popup.

getLastShownDate() → Date?

Returns the date when the popup was last shown, if any.

getLastSnoozeDate() → Date?

Returns the date when the popup was last snoozed, if any.

getLaunchCount() → Int

Returns the current launch count.

getTotalShownCount() → Int

Returns the total number of times the popup has been shown.

isSnoozed(snoozeDuration:) → Bool

Checks if the popup is currently in a snoozed state.

recordDismissed()

Records that the user dismissed the popup.

recordInteraction()

Records that the user interacted with the popup (e.g., tapped a button).

recordLaunch()

Records an app launch.

recordShown()

Records that a popup was shown to the user.

recordSnoozed()

Records that the user snoozed the popup.

reset()

Resets all tracking data.

shouldShow(configuration:) → Bool

Determines whether the popup should be shown based on the configuration.

A reusable button configuration for SDK components.

Properties

action (() ->Void)?

Action to perform when button is tapped.

backgroundColor Color?

Background color of the button.

cornerRadius CGFloat

Corner radius for the button.

fontSize CGFloat

Font size for the button text.

fontWeight Font Weight

Font weight for the button text.

foregroundColor Color?

Foreground (text) color of the button.

height CGFloat?

Height of the button.

padding EdgeInsets

Padding for the button content.

style ButtonStyle

The button style.

title String

The button title text.

Methods

init(title:style:backgroundColor:foregroundColor:fontWeight:fontSize:cornerRadius:height:padding:action:)
  • title : String
  • style : ButtonStyle
  • backgroundColor : Color
  • foregroundColor : Color
  • fontWeight : Weight
  • fontSize : CGFloat
  • cornerRadius : CGFloat
  • height : CGFloat
  • padding : EdgeInsets
primary(title:backgroundColor:foregroundColor:action:) static

Default primary button configuration.

  • title : String
  • backgroundColor : Color
  • foregroundColor : Color
secondary(title:foregroundColor:action:) static

Default secondary button configuration.

  • title : String
  • foregroundColor : Color
text(title:foregroundColor:action:) static

Default text button configuration.

  • title : String
  • foregroundColor : Color

Represents a feature highlight within an announcement.

Properties

description String?

An optional description of the feature.

id String

The unique identifier for the feature.

imageUrl String?

An optional image URL showcasing the feature.

title String

The title of the feature.

Methods

init(from:)
hash(into:)
  • hasher : Hasher

Settings for the popup snooze functionality.

Properties

buttonTitle String

The title text for the snooze button.

enabled Bool

Whether the snooze button is enabled.

snoozeDuration TimeInterval

The duration (in seconds) to snooze the popup when the snooze button is tapped.

default SnoozeSettings

Default snooze settings.

Methods

init(enabled:snoozeDuration:buttonTitle:)
  • enabled : Bool
  • snoozeDuration : TimeInterval

Manages the display and lifecycle of announcements.

Properties

isShowingAnnouncements Bool
onAnnouncementAction ((Announcement) ->Void)?

Callback invoked when user takes action on an announcement.

Methods

init(configuration:releasesService:)

Initializes the announcement manager.

  • configuration : AnnouncementConfiguration
  • releasesService : ReleasesServiceProtocol
checkAndFetchAnnouncements() async

Checks for new announcements and fetches them if needed.

checkAndPresentIfNeeded() async

Checks if announcements should be shown and displays them if appropriate.

clearSeenHistory()

Clears the seen announcement history.

presentAnnouncements() async

Manually presents announcements.

start()

Starts the announcement manager.

struct

DesignSystem

Design system constants based on shadcn principles.

Configuration for the call-to-action button.

Properties

backgroundColor Color

Background color of the CTA button.

cornerRadius CGFloat

Corner radius for the CTA button.

fontWeight Font Weight

Font weight for the CTA button text.

foregroundColor Color

Foreground (text) color of the CTA button.

padding EdgeInsets

Padding for the CTA button.

title String

The title text for the CTA button.

default AGWidgetConfiguration CTAStyle

Default CTA style.

Methods

init(title:backgroundColor:foregroundColor:fontWeight:cornerRadius:padding:)
  • title : String
  • backgroundColor : Color
  • foregroundColor : Color
  • fontWeight : Weight
  • cornerRadius : CGFloat

Border width constants for subtle borders.

Properties

hairline CGFloat

Hairline border (0.5pt) - Ultra-subtle separation

medium CGFloat

Medium border (1.5pt) - Emphasized border

thick CGFloat

Thick border (2pt) - Strong border

thin CGFloat

Thin border (1pt) - Standard border (most common)

Animation constants for smooth, natural transitions.

Properties

easeIn Animation

Ease in animation - Starts slow, ends fast

easeInOut Animation

Ease in-out animation - Starts slow, fast in middle, ends slow

easeOut Animation

Ease out animation - Starts fast, ends slow

fast Double

Fast animation (0.15s) - Quick state changes

instant Double

Instant animation (0.1s) - Very quick state changes

normal Double

Normal animation (0.2s) - Standard transitions (most common)

slow Double

Slow animation (0.3s) - Deliberate animations

slower Double

Slower animation (0.4s) - Complex animations

spring Animation

Standard spring animation - Balanced and versatile

springBouncy Animation

Bouncy spring animation - Playful and energetic

springSmooth Animation

Smooth spring animation - Elegant and refined

Response from sending a magic link email.

Properties

message String

A message describing the result.

success Bool

Whether the magic link was sent successfully.

Methods

init(from:)

Properties

data SupportFormsResponse
success Bool?

Methods

init(from:)

Shadow style definition with color, radius, and offset.

Properties

color Color
radius CGFloat
x CGFloat
y CGFloat

Methods

init(color:radius:x:y:)
  • color : Color
  • radius : CGFloat
  • x : CGFloat
  • y : CGFloat

Configuration for announcement card appearance and behavior.

Properties

backgroundColor Color?

Background color for the announcement card.

cornerRadius CGFloat

Corner radius for the announcement card.

descriptionColor Color?

Description text color.

descriptionFontSize CGFloat

Description font size.

modalPadding CGFloat

Padding around the card within the modal.

pageIndicatorConfiguration PageIndicatorConfiguration

Configuration for page indicators when multiple announcements are shown.

presentationStyle PresentationStyle

Presentation style for the announcement content.

primaryButton ButtonConfiguration?

Primary button configuration (optional).

secondaryButton ButtonConfiguration?

Secondary button configuration (optional).

titleColor Color?

Title text color.

titleFontSize CGFloat

Title font size.

default AnnouncementCardConfiguration

Default configuration matching ChatGPT agent mode style.

noButtons AnnouncementCardConfiguration

Configuration with no buttons.

sheet AnnouncementCardConfiguration

Configuration for bottom-sheet style presentation (no card chrome).

Methods

init(backgroundColor:primaryButton:secondaryButton:titleColor:descriptionColor:titleFontSize:descriptionFontSize:cornerRadius:modalPadding:pageIndicatorConfiguration:presentationStyle:)

Creates an announcement card configuration.

  • backgroundColor : Color
  • primaryButton : ButtonConfiguration
  • secondaryButton : ButtonConfiguration
  • titleColor : Color
  • descriptionColor : Color
  • titleFontSize : CGFloat
  • descriptionFontSize : CGFloat
  • cornerRadius : CGFloat
  • modalPadding : CGFloat
  • pageIndicatorConfiguration : PageIndicatorConfiguration

Shadow constants for subtle elevation effects.

Properties

lg DesignSystem ShadowStyle

Large shadow - Prominent elements (radius: 12, y: 6, opacity: 0.10)

md DesignSystem ShadowStyle

Medium shadow - Standard cards (radius: 8, y: 4, opacity: 0.08)

none DesignSystem ShadowStyle

No shadow

sm DesignSystem ShadowStyle

Small shadow - Subtle elevation (radius: 4, y: 2, opacity: 0.06)

xl DesignSystem ShadowStyle

Extra large shadow - Floating elements (radius: 16, y: 8, opacity: 0.12)

xs DesignSystem ShadowStyle

Extra small shadow - Minimal elevation (radius: 2, y: 1, opacity: 0.04)

Spacing constants following a consistent scale (4px base).

Properties

lg CGFloat

Large spacing (16pt) - Default padding, most common

md CGFloat

Medium spacing (12pt) - Medium spacing, text gaps

sm CGFloat

Small spacing (8pt) - Small spacing, icon gaps

xl CGFloat

Extra large spacing (24pt) - Section spacing

xs CGFloat

Extra small spacing (4pt) - Tiny gaps, badge padding

xxl CGFloat

Extra extra large spacing (32pt) - Large sections

xxxl CGFloat

Extra extra extra large spacing (48pt) - Major sections

View model for managing announcements display and tracking.

Properties

announcements [Announcement
error AppGramError
isLoading Bool
shouldShowAnnouncements Bool

Methods

init(releasesService:orgSlug:projectSlug:maxAnnouncementsToShow:userDefaults:)

Initializes the announcement view model.

  • releasesService : ReleasesServiceProtocol
  • orgSlug : String
  • projectSlug : String
  • maxAnnouncementsToShow : Int
clearSeenHistory()

Clears all seen announcement history.

fetchAnnouncements(includeSeen:) async

Fetches new announcements from releases.

markAnnouncementsSeen(_:)

Marks feature announcements as seen.

markCurrentAnnouncementsSeen()

Marks all current feature announcements as seen.

shouldShowAnnouncementsAutomatically(minimumHoursSinceLastCheck:) → Bool

Checks if announcements should be shown automatically.

Properties

supportForms [String:SupportForm]

Methods

init(from:)

Configuration for page indicator appearance and behavior.

Properties

activeColor Color?

Active indicator color (for current page).

bottomPadding CGFloat?

Padding at the bottom of indicators.

customView ((Int,Int) ->AnyView)?

Custom indicator view builder. Parameters: (currentPage: Int, totalPages: Int) -> AnyView

inactiveColor Color?

Inactive indicator color (for other pages).

isVisible Bool

Whether to show indicators at all.

size CGFloat?

Size of each indicator dot.

spacing CGFloat?

Spacing between indicator dots.

default PageIndicatorConfiguration

Default configuration with white indicators.

hidden PageIndicatorConfiguration

Configuration that hides indicators.

Methods

init(activeColor:inactiveColor:size:spacing:bottomPadding:customView:isVisible:)

Creates a page indicator configuration.

  • activeColor : Color
  • inactiveColor : Color
  • size : CGFloat
  • spacing : CGFloat
  • bottomPadding : CGFloat
  • customView : AnyView
custom(_:) static → AnyView

Creates a configuration with a custom view.

styled(activeColor:inactiveColor:size:spacing:) static → PageIndicatorConfiguration

Creates a configuration with custom colors.

  • activeColor : Color
  • inactiveColor : Color
  • size : CGFloat

Protocol for interacting with survey functionality.

Protocol for interacting with roadmap functionality.

Protocol for interacting with help center functionality.

Protocol for interacting with widget-related functionality.

Protocol for interacting with feedback-related functionality.

Protocol for interacting with blog/resources functionality.

Protocol for interacting with releases functionality.

Protocol for interacting with contact form functionality.

Protocol for interacting with status page functionality.

Protocol for interacting with support ticket functionality.

The type of content to display in the popup.

Values

PopupContent.customView(_:)PopupContent.feedbackPopupContent.survey(slug:style:)

Button style options.

Values

ButtonConfiguration.ButtonStyle.customButtonConfiguration.ButtonStyle.primaryButtonConfiguration.ButtonStyle.secondaryButtonConfiguration.ButtonStyle.text

The state of a status update.

Values

StatusUpdate.State.activeStatusUpdate.State.resolved

Types of user interactions with the popup.

Values

InteractionType.actionInteractionType.dismissInteractionType.snooze

Values

NotificationManager.NotificationEvent.newRelease(_:)NotificationManager.NotificationEvent.newStatusUpdate(_:)NotificationManager.NotificationEvent.statusResolved(_:)
enum

StepState

Represents the state of a wizard step.

Values

StepState.completedStepState.currentStepState.upcoming

Visual presentation style for the announcement content.

Values

AnnouncementCardConfiguration.PresentationStyle.cardAnnouncementCardConfiguration.PresentationStyle.sheet

Represents a Yes/No answer in the decision tree.

Values

DecisionAnswer.noDecisionAnswer.yes

Size preset for the widget.

Values

AGWidgetConfiguration.WidgetSize.custom(_:)AGWidgetConfiguration.WidgetSize.largeAGWidgetConfiguration.WidgetSize.mediumAGWidgetConfiguration.WidgetSize.small

Methods

hash(into:)
  • hasher : Hasher

Log levels supported by the logger

Values

Logger.LogLevel.debugLogger.LogLevel.errorLogger.LogLevel.infoLogger.LogLevel.warning

Defines how articles are displayed when found in a decision tree.

Values

ArticleDisplayBehavior.inlineArticleDisplayBehavior.pushToStackArticleDisplayBehavior.replaceArticleDisplayBehavior.sheet

Visual style of the widget.

Values

AGWidgetConfiguration.WidgetStyle.bannerAGWidgetConfiguration.WidgetStyle.cardAGWidgetConfiguration.WidgetStyle.compactAGWidgetConfiguration.WidgetStyle.minimal

The presentation style for the popup.

Values

PresentationStyle.bottomBannerPresentationStyle.sheet

The type of widget content to display.

Values

AGWidgetConfiguration.WidgetType.customAGWidgetConfiguration.WidgetType.feedbackAGWidgetConfiguration.WidgetType.roadmapAGWidgetConfiguration.WidgetType.status