Charthop customer API
The customer API from Charthop — 4 operation(s) for customer.
The customer API from Charthop — 4 operation(s) for customer.
swagger: '2.0'
info:
description: REST API for ChartHop
version: V1.0.0
title: ChartHop access customer API
contact:
name: ChartHop
url: https://www.charthop.com
email: support@charthop.com
host: localhost
schemes:
- https
- http
consumes:
- application/json
produces:
- application/json
tags:
- name: customer
paths:
/v1/customer:
get:
tags:
- customer
summary: Return all visible customers, paginated by name
operationId: findCustomers
consumes:
- application/json
produces:
- application/json
parameters:
- name: from
in: query
description: Customer id to start from
required: false
type: string
- name: limit
in: query
description: Number of results to return
required: false
type: integer
format: int32
- name: status
in: query
description: Customer.Status. (ACTIVE/INACTIVE/TRAIL)
required: false
type: string
- name: trialAsOf
in: query
description: Only return customers with a product trial in progress as of this date (range inclusive)
required: false
type: string
format: date
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/ResultsCustomer'
'400':
description: bad request
'404':
description: not found
post:
tags:
- customer
summary: Create a new customer
operationId: createCustomer
consumes:
- application/json
produces:
- application/json
parameters:
- name: body
in: body
description: Customer data to create
required: true
schema:
$ref: '#/definitions/CreateCustomer'
responses:
'201':
description: customer created
schema:
$ref: '#/definitions/Customer'
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
/v1/customer/{customerId}:
get:
tags:
- customer
summary: Return a particular customer by id
operationId: getCustomer
consumes:
- application/json
produces:
- application/json
parameters:
- name: customerId
in: path
description: Customer id
required: true
type: string
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Customer'
'400':
description: bad request
'404':
description: not found
patch:
tags:
- customer
summary: Update an existing customer
operationId: updateCustomer
consumes:
- application/json
produces:
- application/json
parameters:
- name: customerId
in: path
description: Customer id
required: true
type: string
- name: body
in: body
description: Customer data to update
required: true
schema:
$ref: '#/definitions/UpdateCustomer'
responses:
'204':
description: customer updated
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
/v1/customer/{customerId}/invoices:
get:
tags:
- customer
summary: Returns a list of all the invoices for the given customer
operationId: getCustomerInvoices
consumes:
- application/json
produces:
- application/json
parameters:
- name: customerId
in: path
description: Customer id
required: true
type: string
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/InvoiceResponse'
'400':
description: bad request
'404':
description: not found
/v1/customer/{customerId}/subscription:
get:
tags:
- customer
summary: Returns information about the Charthop subscription for the given customer
operationId: getCharthopSubscription
consumes:
- application/json
produces:
- application/json
parameters:
- name: customerId
in: path
description: Customer id
required: true
type: string
responses:
'200':
description: successful operation
schema:
$ref: '#/definitions/Subscription'
'400':
description: bad request
'404':
description: not found
patch:
tags:
- customer
summary: Update a subscription on a customer
operationId: updateSubscription
consumes:
- application/json
produces:
- application/json
parameters:
- name: customerId
in: path
description: Customer id
required: true
type: string
- name: body
in: body
description: Subscription data to update
required: true
schema:
$ref: '#/definitions/UpdateSubscription'
responses:
'204':
description: successful operation
'400':
description: invalid data
'401':
description: not authorized
'403':
description: permission denied
'404':
description: not found
definitions:
Address:
type: object
required:
- country
properties:
street1:
type: string
description: street address, line 1
example: 123 Anywhere Street
minItems: 0
maxItems: 200
street2:
type: string
description: street address, line 2
example: Apt 6L
minItems: 0
maxItems: 200
street3:
type: string
description: street address, line 3
example: Sixth Floor
minItems: 0
maxItems: 200
city:
type: string
description: city
example: New York
minItems: 0
maxItems: 80
state:
type: string
description: state
example: NY
minItems: 0
maxItems: 80
country:
type: string
description: country (two-digit ISO code)
example: NY
pattern: ^[A-Z]{2}$
postal:
type: string
description: postal code
example: '10001'
minItems: 0
maxItems: 10
geo:
description: geopoint location
$ref: '#/definitions/Geopoint'
approxGeo:
description: approximate geopoint location (suitable for a map placement, but not exact location)
$ref: '#/definitions/Geopoint'
Customer:
type: object
required:
- id
- name
- status
properties:
id:
type: string
description: unique id of customer
example: 588f7ee98f138b19220041a7
name:
type: string
description: name of customer
email:
type: string
description: email address for billing purposes
billAddress:
description: mailing address for billing purposes
$ref: '#/definitions/Address'
industry:
type: string
description: industry that customer is in
source:
type: string
description: source of customer signup
enum:
- ADP_MARKETPLACE
- SELF_SERVE
- SELF_SERVE_TEST
- SEQUOIA_ONE
- CONNECT
status:
type: string
description: current status
enum:
- ACTIVE
- INACTIVE
- TRIAL
- CHURN
- PAYMENT_ERROR
stripeCustomerId:
type: string
description: stripe customer id
salesforceAccountId:
type: string
description: salesforce account id
pattern: ^[a-zA-Z0-9]{15}|[a-zA-Z0-9]{18}$
products:
type: array
description: products that this customer has purchased
items:
$ref: '#/definitions/ProductItem'
trialProducts:
type: array
description: products this customer has temporary trial access to, each bounded by a date range
items:
$ref: '#/definitions/TrialProduct'
restrictedFeatures:
type: array
description: features that are restricted for the customer
items:
type: string
enum:
- AI_ACTION
- AI_AGENT
- AI_API_WRITE
- AI_SLACK_TEAM_CHAT
- ATS_SYNC
- BUDGET
- COMPENSATION_REVIEW
- CUSTOM_CALENDAR
- CUSTOM_FIELD
- CUSTOM_FIELD_READONLY
- CUSTOM_FORM
- CUSTOM_PROFILE_TAB
- CUSTOM_ROLE
- FORM_ANONYMOUS
- FORM_RELEASE
- FORM_SIGNATURE
- GOAL
- MULTI_PAYROLL
- PERFORMANCE_REVIEW
- REPORT
- REPORT_READONLY
- SCENARIO
- SIGNATURE
- SIGNATURE_QES
- SIMPLE_WORKFLOWS
- SURVEY
- TABLE
- TEMPLATE
- WORKDAY_ADAPTIVE
- PAYROLL_OUTBOUND
- APPROVAL_WORKFLOWS
- CONTENT
- IDENTITY_OUTBOUND
- ONBOARDING_OFFBOARDING
- TIMEOFF
featureOptionOverrides:
type: array
description: override feature options for the customer
items:
$ref: '#/definitions/FeatureAccessOption'
startDate:
type: string
format: date
description: initial date of billing
endDate:
type: string
format: date
description: end of service date for churning customers -- on or after this date, service should be disabled
nextInvoiceDate:
type: string
format: date
description: date of next invoice
orgCount:
type: integer
format: int32
description: number of orgs covered by this customer
primaryHeadCount:
type: integer
format: int32
description: number of total headcount across all orgs
secondaryHeadCount:
type: integer
format: int32
description: number of total headcount across all orgs
tertiaryHeadCount:
type: integer
format: int32
description: number of total headcount across all orgs
primaryHeadCountFilter:
type: string
description: primary headcount filter - used for billing purposes
secondaryHeadCountFilter:
type: string
description: secondary headcount filter - used for billing purposes
tertiaryHeadCountFilter:
type: string
description: tertiary headcount filter - used for billing purposes
arr:
type: number
description: current ARR of the customer based on most recent invoice
trialStartDate:
type: string
format: date
description: date this customer begins their trial period
trialEndDate:
type: string
format: date
description: date this customer ends their trial period
stripeSubscriptionSync:
type: string
description: Stripe subscription settings
enum:
- SYNC
- DELETE
createAt:
type: string
description: created timestamp
example: '2017-01-24T13:57:52Z'
createId:
type: string
description: created by
example: 588f7ee98f138b19220041a7
createBehalfId:
type: string
description: created on behalf of user id
example: 588f7ee98f138b19220041a7
createAttribution:
$ref: '#/definitions/Attribution'
updateAt:
type: string
description: updated timestamp
example: '2017-01-24T13:57:52Z'
updateId:
type: string
description: updated by
example: 588f7ee98f138b19220041a7
updateBehalfId:
type: string
description: last updated on behalf of user id
example: 588f7ee98f138b19220041a7
updateAttribution:
$ref: '#/definitions/Attribution'
Invoice:
type: object
required:
- number
- amount
- status
- createAt
properties:
number:
type: string
description: a unique identifying string for invoices
example: F38A6C8-0010
amount:
type: number
description: current final amount due for the invoices
example: '1002.31'
hostedInvoiceUrl:
type: string
description: URL for the hosted invoice page, which allows customers to view and pay an invoice
example: https://pay.stripe.com/invoice/invst_Nv8DFERQvTsBJqnZ4z19cGZBU1
invoicePdf:
type: string
description: the link to download the PDF for the invoice
example: https://pay.stripe.com/invoice/invst_wNK0BvV4iUOWOn5mzLT1ybQ2LC/pdf
status:
type: string
description: one of PAID, UNPAID, or VOID
example: PAID
enum:
- PAID
- UNPAID
- VOID
createAt:
type: string
description: created timestamp
example: '2019-07-27T20:56:10Z'
FeatureAccessOption:
type: object
required:
- name
- type
properties:
name:
type: string
description: The name of the feature option tied to the feature access
example: smart_fields
enum:
- CONFIGURED_ROLES
- SMART_FIELDS
- APP_FIELD_MAPPERS
- MULTI_PAYROLL_INSTALLS
description:
type: string
description: The description of the feature option
type:
type: string
description: The feature option type
enum:
- LIMIT
- FULL_ACCESS
limit:
type: integer
format: int32
description: The feature option limit
PaymentInfo:
type: object
required:
- paymentType
properties:
paymentType:
type: string
description: indicates how the customer has decided to pay; one of CREDIT_CARD, INVOICE
example: CREDIT_CARD
enum:
- CREDIT_CARD
- INVOICE
creditCardEndDigits:
type: string
description: if the customer has indicated they wish to pay by credit card, the last four digits of the credit card they are paying with. Null if the customer is paying by invoice.
example: '4242'
brand:
type: string
description: if the customer has indicated they wish to pay by credit card, the brand of the credit card they are paying with. Null if the customer is paying by invoice.
example: Visa
Subscription:
type: object
required:
- nextInvoiceAt
- plan
- paymentInfo
properties:
nextInvoiceAt:
type: string
description: Timestamp when the next invoice will be generated
example: '2019-07-27T20:56:10Z'
plan:
description: Plan this subscription is for
$ref: '#/definitions/Plan'
paymentInfo:
description: Information about how the customer pays for this subscription
$ref: '#/definitions/PaymentInfo'
AccessAction:
type: object
required:
- action
properties:
action:
type: string
fields:
type: array
uniqueItems: true
items:
type: string
types:
type: array
uniqueItems: true
items:
type: string
InvoiceResponse:
type: object
required:
- invoices
properties:
invoices:
type: array
items:
$ref: '#/definitions/Invoice'
CreateCustomer:
type: object
required:
- name
- email
- startDate
properties:
name:
type: string
description: name of customer
email:
type: string
description: email address for billing purposes
billAddress:
description: mailing address for billing purposes
$ref: '#/definitions/Address'
industry:
type: string
description: industry that customer is in
source:
type: string
description: source of customer signup
enum:
- ADP_MARKETPLACE
- SELF_SERVE
- SELF_SERVE_TEST
- SEQUOIA_ONE
- CONNECT
status:
type: string
description: current status
enum:
- ACTIVE
- INACTIVE
- TRIAL
- CHURN
- PAYMENT_ERROR
salesforceAccountId:
type: string
description: salesforce account id
pattern: ^[a-zA-Z0-9]{15}|[a-zA-Z0-9]{18}$
products:
type: array
description: products that this customer has purchased
items:
$ref: '#/definitions/ProductItem'
trialProducts:
type: array
description: products this customer has temporary trial access to, each bounded by a date range
items:
$ref: '#/definitions/TrialProduct'
restrictedFeatures:
type: array
description: features that are restricted for the customer
items:
type: string
enum:
- AI_ACTION
- AI_AGENT
- AI_API_WRITE
- AI_SLACK_TEAM_CHAT
- ATS_SYNC
- BUDGET
- COMPENSATION_REVIEW
- CUSTOM_CALENDAR
- CUSTOM_FIELD
- CUSTOM_FIELD_READONLY
- CUSTOM_FORM
- CUSTOM_PROFILE_TAB
- CUSTOM_ROLE
- FORM_ANONYMOUS
- FORM_RELEASE
- FORM_SIGNATURE
- GOAL
- MULTI_PAYROLL
- PERFORMANCE_REVIEW
- REPORT
- REPORT_READONLY
- SCENARIO
- SIGNATURE
- SIGNATURE_QES
- SIMPLE_WORKFLOWS
- SURVEY
- TABLE
- TEMPLATE
- WORKDAY_ADAPTIVE
- PAYROLL_OUTBOUND
- APPROVAL_WORKFLOWS
- CONTENT
- IDENTITY_OUTBOUND
- ONBOARDING_OFFBOARDING
- TIMEOFF
featureOptionOverrides:
type: array
description: override feature options for the customer
items:
$ref: '#/definitions/FeatureAccessOption'
startDate:
type: string
format: date
description: initial date of billing
endDate:
type: string
format: date
description: end of service date for churning customers -- on or after this date, service should be disabled
nextInvoiceDate:
type: string
format: date
description: date of next invoice
primaryHeadCountFilter:
type: string
description: primary headcount filter - used for billing purposes
secondaryHeadCountFilter:
type: string
description: secondary headcount filter - used for billing purposes
tertiaryHeadCountFilter:
type: string
description: tertiary headcount filter - used for billing purposes
arr:
type: number
description: current ARR of the customer based on most recent invoice
trialStartDate:
type: string
format: date
description: date this customer begins their trial period
trialEndDate:
type: string
format: date
description: date this customer ends their trial period
stripeSubscriptionSync:
type: string
description: Stripe subscription settings
enum:
- SYNC
- DELETE
Geopoint:
type: object
required:
- type
- coordinates
properties:
type:
type: string
description: Type of point
readOnly: true
coordinates:
type: array
description: The longitude and latitude of the point
readOnly: true
items:
type: number
format: double
Attribution:
type: object
properties:
principalUserId:
type: string
example: 588f7ee98f138b19220041a7
agentUserIds:
type: array
items:
type: string
example: 588f7ee98f138b19220041a7
eventId:
type: string
example: 588f7ee98f138b19220041a7
aiChatId:
type: string
example: 588f7ee98f138b19220041a7
aiToolUseId:
type: string
channel:
type: string
enum:
- WEB
- MOBILE
- SLACK
- TEAMS
- MCP
ResultsAccess:
type: object
required:
- allowed
properties:
ids:
type: array
uniqueItems: true
items:
type: string
example: 588f7ee98f138b19220041a7
allowed:
type: array
uniqueItems: true
items:
$ref: '#/definitions/AccessAction'
UpdateCustomer:
type: object
properties:
name:
type: string
description: name of customer
email:
type: string
description: email address for billing purposes
billAddress:
description: mailing address for billing purposes
$ref: '#/definitions/Address'
industry:
type: string
description: industry that customer is in
source:
type: string
description: source of customer signup
enum:
- ADP_MARKETPLACE
- SELF_SERVE
- SELF_SERVE_TEST
- SEQUOIA_ONE
- CONNECT
status:
type: string
description: current status
enum:
- ACTIVE
- INACTIVE
- TRIAL
- CHURN
- PAYMENT_ERROR
salesforceAccountId:
type: string
description: salesforce account id
pattern: ^[a-zA-Z0-9]{15}|[a-zA-Z0-9]{18}$
products:
type: array
description: products that this customer has purchased
items:
$ref: '#/definitions/ProductItem'
trialProducts:
type: array
description: products this customer has temporary trial access to, each bounded by a date range
items:
$ref: '#/definitions/TrialProduct'
restrictedFeatures:
type: array
description: features that are restricted for the customer
items:
type: string
enum:
- AI_ACTION
- AI_AGENT
- AI_API_WRITE
- AI_SLACK_TEAM_CHAT
- ATS_SYNC
- BUDGET
- COMPENSATION_REVIEW
- CUSTOM_CALENDAR
- CUSTOM_FIELD
- CUSTOM_FIELD_READONLY
- CUSTOM_FORM
- CUSTOM_PROFILE_TAB
- CUSTOM_ROLE
- FORM_ANONYMOUS
- FORM_RELEASE
- FORM_SIGNATURE
- GOAL
- MULTI_PAYROLL
- PERFORMANCE_REVIEW
- REPORT
- REPORT_READONLY
- SCENARIO
- SIGNATURE
- SIGNATURE_QES
- SIMPLE_WORKFLOWS
- SURVEY
- TABLE
- TEMPLATE
- WORKDAY_ADAPTIVE
- PAYROLL_OUTBOUND
- APPROVAL_WORKFLOWS
- CONTENT
- IDENTITY_OUTBOUND
- ONBOARDING_OFFBOARDING
- TIMEOFF
featureOptionOverrides:
type: array
description: override feature options for the customer
items:
$ref: '#/definitions/FeatureAccessOption'
startDate:
type: string
format: date
description: initial date of billing
endDate:
type: string
format: date
description: end of service date for churning customers -- on or after this date, service should be disabled
nextInvoiceDate:
type: string
format: date
description: date of next invoice
primaryHeadCountFilter:
type: string
description: primary headcount filter - used for billing purposes
secondaryHeadCountFilter:
type: string
description: secondary headcount filter - used for billing purposes
tertiaryHeadCountFilter:
type: string
description: tertiary headcount filter - used for billing purposes
arr:
type: number
description: current ARR of the customer based on most recent invoice
trialStartDate:
type: string
format: date
description: date this customer begins their trial period
trialEndDate:
type: string
format: date
description: date this customer ends their trial period
stripeSubscriptionSync:
type: string
description: Stripe subscription settings
enum:
- SYNC
- DELETE
Plan:
type: object
required:
- id
- name
- interval
- intervalCount
- tiers
- stripeProductId
properties:
id:
type: string
description: unique Stripe identifier for this plan
name:
type: string
description: human-readable nickname for this plan
interval:
type: string
description: interval for billing on this plan
enum:
- DAY
- WEEK
- MONTH
- YEAR
intervalCount:
type: integer
format: int32
description: number of intervals, for example 3 for quarterly billing
tiers:
type: array
description: pricing tiers, per employee per interval
items:
$ref: '#/definitions/PlanTier'
stripeProductId:
type: string
description: stripe product id that this plan belongs to
PlanTier:
type: object
required:
- unitAmount
properties:
upTo:
type: integer
format: int64
description: headcount up to this level is charged at the below rate
unitAmount:
type: number
description: PEPM rate
UpdateSubscription:
type: object
required:
- paymentMethod
properties:
paymentMethod:
type: string
description: Payment method to create; 'INVOICE' to make subscription paid by invoice, or the ID of the payment method if to make the subscription automatically charge a card
TrialProduct:
type: object
required:
- productId
- startDate
- endDate
properties:
productId:
type: string
description: id of the product the customer is trialing
example: 588f7ee98f138b19220041a7
startDate:
type: string
format: date
description: first date the trial grants access (inclusive)
endDate:
type: string
format: date
description: last date the trial grants access (inclusive)
ResultsCustomer:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/definitions/Customer'
next:
type: string
access:
type: array
items:
$ref: '#/definitions/ResultsAccess'
ProductItem:
type: object
required:
- productId
- stripePriceId
properties:
productId:
type: string
example: 588f7ee98f138b19220041a7
stripePriceId:
type: string