GrowthZone Certifications API
Mark certification components complete for a contact's certification track, supporting continuing-education and credentialing programs run inside GrowthZone.
Mark certification components complete for a contact's certification track, supporting continuing-education and credentialing programs run inside GrowthZone.
openapi: 3.0.3
info:
title: GrowthZone REST API
description: >-
Programmatic access to a GrowthZone association management (AMS) database -
contacts (members and organizations), memberships, groups and directories,
scheduled billing, certifications, and events. GrowthZone is a REST-based,
JSON API served per customer database at
https://{subdomain}.growthzoneapp.com/api, where {subdomain} is the customer
database sub-domain visible in the application URL (some databases are served
from app.memberzone.org). The API is customer/partner-gated: an account must
have API Access enabled, and an API Key is issued by GrowthZone WebSupport
(websupport@growthzone.com). Authenticate by sending an
`Authorization: ApiKey {API_Key}` header (Server authentication); OAuth 2.0 /
OpenID Connect is also supported for user (SSO) flows.
Endpoint status: paths marked "Confirmed" appear in GrowthZone's public
integration documentation and Curated API reference. Paths marked "Modeled"
are honestly inferred to round out standard CRUD or reflect the
ChamberMaster/MemberZone (MicroNet) event feed; verify exact shapes against
the gated full reference at documentation.growthzoneapp.com.
version: '1.0'
contact:
name: GrowthZone WebSupport
url: https://integration.growthzone.com
email: websupport@growthzone.com
license:
name: Proprietary
url: https://www.growthzone.com
servers:
- url: https://{subdomain}.growthzoneapp.com/api
description: GrowthZone customer database (replace {subdomain} with your database sub-domain)
variables:
subdomain:
default: app
description: The customer database sub-domain from your GrowthZone application URL.
- url: https://app.memberzone.org/api
description: MemberZone-hosted GrowthZone databases
security:
- apiKeyAuth: []
tags:
- name: Contacts
description: Individuals (persons) and organizations, and their related data.
- name: Memberships
description: Membership types and member rosters.
- name: Groups & Directory
description: Groups, categories, and directory listings.
- name: Scheduled Billing
description: Recurring membership billing runs by membership type.
- name: Certifications
description: Certification tracks and component completion.
- name: Events
description: Association event calendar and registration (modeled).
paths:
/contacts:
get:
operationId: listContacts
tags: [Contacts]
summary: List contacts (Confirmed)
description: >-
Returns a paged list of contacts. Responses include TotalRecordAvailable
and a Results array of contact records (ContactId, Name,
MembershipStatusTypeId, Balance, ImageUrl, ...).
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PageSize'
responses:
'200':
description: A paged list of contacts.
content:
application/json:
schema:
$ref: '#/components/schemas/ContactListResponse'
'401':
$ref: '#/components/responses/Unauthorized'
/contacts/delta:
get:
operationId: listChangedContacts
tags: [Contacts]
summary: List contacts changed since a date (Confirmed)
description: Returns contacts created or modified since the supplied date.
parameters:
- name: since
in: query
required: true
description: ISO 8601 date/time; return contacts changed at or after this instant.
schema:
type: string
format: date-time
responses:
'200':
description: Changed contacts.
content:
application/json:
schema:
$ref: '#/components/schemas/ContactListResponse'
'401':
$ref: '#/components/responses/Unauthorized'
/contacts/person/{contactId}:
get:
operationId: getPerson
tags: [Contacts]
summary: Get expanded individual contact (Confirmed)
parameters:
- $ref: '#/components/parameters/ContactId'
responses:
'200':
description: Expanded individual contact.
content:
application/json:
schema:
$ref: '#/components/schemas/Contact'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/contacts/PersonSummary/{contactId}:
get:
operationId: getPersonSummary
tags: [Contacts]
summary: Get basic individual contact summary (Confirmed)
parameters:
- $ref: '#/components/parameters/ContactId'
responses:
'200':
description: Basic individual contact summary.
content:
application/json:
schema:
$ref: '#/components/schemas/Contact'
'401':
$ref: '#/components/responses/Unauthorized'
/contacts/OrgGeneral/{contactId}:
get:
operationId: getOrganizationGeneral
tags: [Contacts]
summary: Get organization contact summary (Confirmed)
parameters:
- $ref: '#/components/parameters/ContactId'
responses:
'200':
description: Organization contact summary.
content:
application/json:
schema:
$ref: '#/components/schemas/Contact'
'401':
$ref: '#/components/responses/Unauthorized'
/contacts/ContactAddresses/{contactId}:
get:
operationId: getContactAddresses
tags: [Contacts]
summary: Get contact addresses (Confirmed)
parameters:
- $ref: '#/components/parameters/ContactId'
responses:
'200':
description: Addresses for the contact.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Address'
'401':
$ref: '#/components/responses/Unauthorized'
/contacts/PrimaryContact/Emails/{primaryContactId}:
get:
operationId: getPrimaryContactEmails
tags: [Contacts]
summary: Get primary contact email addresses (Confirmed)
parameters:
- name: primaryContactId
in: path
required: true
schema:
type: string
responses:
'200':
description: Email addresses for the primary contact.
content:
application/json:
schema:
type: array
items:
type: string
format: email
'401':
$ref: '#/components/responses/Unauthorized'
/contacts/lookup/{contactId}/contactwebsites:
get:
operationId: getContactWebsites
tags: [Contacts]
summary: Get contact websites (Confirmed)
parameters:
- $ref: '#/components/parameters/ContactId'
responses:
'200':
description: Website URLs for the contact.
content:
application/json:
schema:
type: array
items:
type: string
format: uri
'401':
$ref: '#/components/responses/Unauthorized'
/contacts/{contactId}/NotesAndFields:
get:
operationId: getContactNotesAndFields
tags: [Contacts]
summary: Get contact notes and custom fields (Confirmed)
parameters:
- $ref: '#/components/parameters/ContactId'
responses:
'200':
description: Notes and custom field values for the contact.
content:
application/json:
schema:
type: object
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
/contacts/person/{contactId}/categorySummary:
get:
operationId: getPersonCategorySummary
tags: [Contacts]
summary: Get category summary for an individual (Confirmed)
parameters:
- $ref: '#/components/parameters/ContactId'
responses:
'200':
description: Category summary.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Category'
'401':
$ref: '#/components/responses/Unauthorized'
/contacts/person/{contactId}/memberships:
get:
operationId: getPersonMemberships
tags: [Contacts]
summary: Get memberships for an individual (Confirmed)
parameters:
- $ref: '#/components/parameters/ContactId'
responses:
'200':
description: Memberships held by the individual.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Membership'
'401':
$ref: '#/components/responses/Unauthorized'
/contacts/org/{contactId}/groups:
get:
operationId: getOrganizationGroups
tags: [Contacts]
summary: Get groups for an organization (Confirmed)
parameters:
- $ref: '#/components/parameters/ContactId'
responses:
'200':
description: Groups the organization belongs to.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Group'
'401':
$ref: '#/components/responses/Unauthorized'
/memberships/types:
get:
operationId: listMembershipTypes
tags: [Memberships]
summary: List membership types (Confirmed)
description: Returns all membership types, paged.
parameters:
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/PageSize'
responses:
'200':
description: A paged list of membership types.
content:
application/json:
schema:
type: object
properties:
TotalRecordAvailable:
type: integer
Results:
type: array
items:
$ref: '#/components/schemas/MembershipType'
'401':
$ref: '#/components/responses/Unauthorized'
/memberships/all:
post:
operationId: listAllMemberships
tags: [Memberships]
summary: List all memberships, filtered by type/status (Confirmed)
description: >-
Returns memberships across the database, optionally filtered by
membership type and status. Accepts a JSON body of filter criteria and
returns TotalRecordAvailable plus a paged Results array.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/MembershipQuery'
responses:
'200':
description: A paged list of memberships.
content:
application/json:
schema:
type: object
properties:
TotalRecordAvailable:
type: integer
Results:
type: array
items:
$ref: '#/components/schemas/Membership'
'401':
$ref: '#/components/responses/Unauthorized'
/GroupsApi_GetGroupsByCategories:
post:
operationId: getGroupsByCategories
tags: [Groups & Directory]
summary: Get groups by categories (Confirmed)
description: Resolves groups for one or more categories to build a filtered directory.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
CategoryIds:
type: array
items:
type: integer
responses:
'200':
description: Groups matching the supplied categories.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Group'
'401':
$ref: '#/components/responses/Unauthorized'
/groups/{groupId}/members:
get:
operationId: listGroupMembers
tags: [Groups & Directory]
summary: List members of a group (Modeled)
description: >-
Modeled. Lists the member contacts belonging to a group, for directory
rendering. Exact path and shape are behind the gated reference.
parameters:
- name: groupId
in: path
required: true
schema:
type: string
responses:
'200':
description: Group members.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Contact'
'401':
$ref: '#/components/responses/Unauthorized'
/certifications/{certificationContactId}/Components/{certificationComponentId}/Completed:
post:
operationId: markCertificationComponentCompleted
tags: [Certifications]
summary: Mark a certification component completed (Confirmed)
parameters:
- name: certificationContactId
in: path
required: true
schema:
type: string
- name: certificationComponentId
in: path
required: true
schema:
type: string
responses:
'200':
description: The component was marked complete.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/scheduledbilling/membershiptype/items:
post:
operationId: previewScheduledBillingItems
tags: [Scheduled Billing]
summary: Preview scheduled billing items by membership type (Confirmed)
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduledBillingRequest'
responses:
'200':
description: Preview of items that would be billed.
content:
application/json:
schema:
type: object
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
/scheduledbilling/membershiptype/items/export:
post:
operationId: exportScheduledBillingItems
tags: [Scheduled Billing]
summary: Export scheduled billing items (Confirmed)
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduledBillingRequest'
responses:
'200':
description: Exported billing items.
'401':
$ref: '#/components/responses/Unauthorized'
/scheduledbilling/membershiptype/items/run/setup:
post:
operationId: setupScheduledBillingRun
tags: [Scheduled Billing]
summary: Set up a scheduled billing run (Confirmed)
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduledBillingRequest'
responses:
'200':
description: Billing run configured.
'401':
$ref: '#/components/responses/Unauthorized'
/scheduledbilling/membershiptype/items/run:
post:
operationId: runScheduledBilling
tags: [Scheduled Billing]
summary: Run scheduled billing for a membership type (Confirmed)
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduledBillingRequest'
responses:
'200':
description: Billing run started; returns a system job identifier.
content:
application/json:
schema:
type: object
properties:
SystemJobId:
type: string
'401':
$ref: '#/components/responses/Unauthorized'
/scheduledbilling/membershiptype/run/history:
get:
operationId: listScheduledBillingRunHistory
tags: [Scheduled Billing]
summary: List scheduled billing run history (Confirmed)
responses:
'200':
description: History of past scheduled billing runs.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/BillingRun'
'401':
$ref: '#/components/responses/Unauthorized'
/scheduledbilling/membershiptype/run/history/download/{systemjobid}:
post:
operationId: downloadScheduledBillingRun
tags: [Scheduled Billing]
summary: Download a scheduled billing run result (Confirmed)
parameters:
- name: systemjobid
in: path
required: true
schema:
type: string
responses:
'200':
description: The billing run result file.
content:
application/octet-stream:
schema:
type: string
format: binary
'401':
$ref: '#/components/responses/Unauthorized'
/events:
get:
operationId: listEvents
tags: [Events]
summary: List events by date range and status (Modeled)
description: >-
Modeled from the GrowthZone ChamberMaster/MemberZone event feed (legacy
base api.micronetonline.com/v1/associations({id})/events/details).
Returns events filtered by date range and status for calendar embeds.
parameters:
- name: startDate
in: query
schema:
type: string
format: date
- name: endDate
in: query
schema:
type: string
format: date
- name: status
in: query
schema:
type: string
responses:
'200':
description: A list of events.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Event'
'401':
$ref: '#/components/responses/Unauthorized'
/events/{eventId}:
get:
operationId: getEvent
tags: [Events]
summary: Get event details (Modeled)
parameters:
- name: eventId
in: path
required: true
schema:
type: string
responses:
'200':
description: Event details.
content:
application/json:
schema:
$ref: '#/components/schemas/Event'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
securitySchemes:
apiKeyAuth:
type: apiKey
in: header
name: Authorization
description: >-
Server authentication. Send `Authorization: ApiKey {API_Key}` where the
API Key is issued per application by GrowthZone WebSupport. OAuth 2.0 /
OpenID Connect (authorize/token/userinfo at growthzoneapp.com) is used
for user SSO flows.
parameters:
ContactId:
name: contactId
in: path
required: true
description: The GrowthZone ContactId (individual or organization).
schema:
type: string
Page:
name: page
in: query
required: false
schema:
type: integer
minimum: 1
default: 1
PageSize:
name: pageSize
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 500
default: 100
responses:
Unauthorized:
description: Missing or invalid API key.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: The requested resource was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
ContactListResponse:
type: object
properties:
TotalRecordAvailable:
type: integer
Results:
type: array
items:
$ref: '#/components/schemas/Contact'
Contact:
type: object
properties:
ContactId:
type: string
Name:
type: string
ContactType:
type: string
enum: [Individual, Organization]
MembershipStatusTypeId:
type: integer
description: >-
Status code - 1 Prospective, 2 Active, 4 Courtesy, 8 NonMember,
16 Inactive, 32 Deleted.
Balance:
type: number
ImageUrl:
type: string
format: uri
Address:
type: object
properties:
Type:
type: string
Line1:
type: string
Line2:
type: string
City:
type: string
StateProvince:
type: string
PostalCode:
type: string
Country:
type: string
Category:
type: object
properties:
CategoryId:
type: integer
Name:
type: string
Group:
type: object
properties:
GroupId:
type: string
Name:
type: string
CategoryId:
type: integer
Membership:
type: object
properties:
MembershipId:
type: string
ContactId:
type: string
MembershipTypeId:
type: integer
Status:
type: string
JoinDate:
type: string
format: date
MembershipType:
type: object
properties:
MembershipTypeId:
type: integer
Name:
type: string
IsActive:
type: boolean
MembershipQuery:
type: object
properties:
MembershipTypeId:
type: integer
MembershipStatusTypeId:
type: integer
Page:
type: integer
PageSize:
type: integer
ScheduledBillingRequest:
type: object
properties:
MembershipTypeId:
type: integer
BillingDate:
type: string
format: date
BillingRun:
type: object
properties:
SystemJobId:
type: string
RunDate:
type: string
format: date-time
Status:
type: string
RecordCount:
type: integer
Event:
type: object
properties:
EventId:
type: string
Name:
type: string
StartDateTime:
type: string
format: date-time
EndDateTime:
type: string
format: date-time
Location:
type: string
Status:
type: string
RegistrationUrl:
type: string
format: uri
Error:
type: object
properties:
Message:
type: string
Code:
type: string