openapi: 3.0.3 info: title: GrowthZone REST Certifications Contacts 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. 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' components: responses: NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Missing or invalid API key. content: application/json: schema: $ref: '#/components/schemas/Error' parameters: ContactId: name: contactId in: path required: true description: The GrowthZone ContactId (individual or organization). schema: type: string PageSize: name: pageSize in: query required: false schema: type: integer minimum: 1 maximum: 500 default: 100 Page: name: page in: query required: false schema: type: integer minimum: 1 default: 1 schemas: Group: type: object properties: GroupId: type: string Name: type: string CategoryId: type: integer 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 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 Category: type: object properties: CategoryId: type: integer Name: type: string ContactListResponse: type: object properties: TotalRecordAvailable: type: integer Results: type: array items: $ref: '#/components/schemas/Contact' Membership: type: object properties: MembershipId: type: string ContactId: type: string MembershipTypeId: type: integer Status: type: string JoinDate: type: string format: date Error: type: object properties: Message: type: string Code: type: string 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.'