Organizations
The flight school itself: membership, invitations, and settings.
35 endpoints · base URL https://api.aerscheduler.com
/invitationsList pending invitations
Requires the admin role.
Query parameters
limit | integer | Rows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected. |
offset | integer | Rows to skip, for paging. Defaults to 0. |
sort | string | Field to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding. |
order | "asc" | "desc" | asc (default) or desc. Only meaningful with sort. |
Responses
200 | OK | Success.→ { data: object[] } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/invitations \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/joinRequestsList join requests
People asking to join a private organization. Requires the admin role.
Query parameters
limit | integer | Rows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected. |
offset | integer | Rows to skip, for paging. Defaults to 0. |
sort | string | Field to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding. |
order | "asc" | "desc" | asc (default) or desc. Only meaningful with sort. |
Responses
200 | OK | Success.→ { data: object[] } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/joinRequests \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizationsList your organizations
Every organization the signed-in account belongs to.
Query parameters
limit | integer | Rows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected. |
offset | integer | Rows to skip, for paging. Defaults to 0. |
sort | string | Field to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding. |
order | "asc" | "desc" | asc (default) or desc. Only meaningful with sort. |
Responses
200 | OK | The organizations.→ { data: Organization[] } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/organizations \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizationsUpdate your organization
Requires the admin role.
Request body
Fields to change.
name | string | |
organizationType | "flight_school" | "flying_club" | "rental" | "solo_instructor" | "aircraft_owner" | "maintenance_shop" | What kind of operation this is. Same values as create. Changing it here does not rewrite signup attribution. |
about | string | |
showInDirectory | boolean | |
bookingPolicy | object | Org-wide booking rules. Send only the keys you are changing; null clears a rule. Minimum notice, booking horizon, start interval, fixed duration, and buffers apply to every internal schedule booking (member self-book and front desk), not only future public embeds. The four balance gates apply only when the organization is in ledger billing mode. |
publicBookingEnabled | boolean | When true, guests can submit booking requests for active offerings at /book/{publicBookingSlug}/{offering.slug}. Staff still approve every request. |
publicBookingSlug | string | Lowercase letters, numbers, and hyphens. Unique across organizations. Generated from the organization name if you enable public booking without one. |
publicBookingEmbedHosts | string[] | HTTPS origins allowed to iframe /book pages, stored like https://www.yoursite.com. Empty keeps the share link only. No wildcards, no IP addresses except localhost/127.0.0.1. Public hosts must be https. Demo organizations are refused. |
publicBookingAccentHex | string | null | Guest /book accent, #RRGGBB. Null clears it. |
reservationTypeColors | object | null | Colors for reservation types on the schedule: keys dual, solo, shared, ground, sim, rental, guest, maintenance; values #RRGGBB dark enough to read on white (3:1). A type set to null goes back to its default; null for the whole field resets them all. Admins only. |
publicBookingAppearance | "light" | "dark" | "system" | |
publicBookingDensity | "compact" | "comfortable" | |
publicBookingCornerStyle | "rounded" | "sharp" |
Responses
200 | OK | Success.→ { data: Organization } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X PATCH https://api.aerscheduler.com/organizations \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"…","organizationType":"flight_school"}'/organizationsSchedule your organization for deletion
Puts the organization on a 30-day countdown. The organization stays usable until then. Every admin and owner is emailed and notified. Requires the owner role. Refused while any invoice is unpaid, or if a countdown is already running.
Responses
200 | OK | The organization with its deletion date.→ { data: object } |
400 | Bad Request | Unpaid invoices, already scheduled, or a demo organization. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X DELETE https://api.aerscheduler.com/organizations \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/joinRequests/{id}Delete a join request
Requires the admin role.
Path parameters
idrequired | integer | The join request id. |
Responses
204 | No Content | Success. No body. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X DELETE https://api.aerscheduler.com/joinRequests/:id \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/{orgId}Get an organization
Public detail for one organization.
Path parameters
orgIdrequired | integer | The organization id. |
Responses
200 | OK | Success.→ { data: Organization } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/organizations/:orgId \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/adTrackingRead whether AerScheduler finds the ADs for your aircraft
One switch. When enabled, each aircraft lists the published ADs that name its airframe, engine or propeller, from the AD library, for somebody to decide (see GET /maintenance/resources/{resourceId}/airworthiness-directives), with alerts and the AD status report. Off by default. Admin only.
Responses
200 | OK | The setting.→ { data: object } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/organizations/adTracking \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/adTrackingTurn finding the ADs for your aircraft on or off
Send enabled. The older mode (off or catalogue) is still accepted. Admin only.
Request body
enabled | boolean | |
mode | "off" | "catalogue" | Accepted in place of enabled. |
Responses
200 | OK | The updated setting.→ { data: object } |
400 | Bad Request | Neither enabled nor a valid mode was sent. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X PATCH https://api.aerscheduler.com/organizations/adTracking \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"enabled":true,"mode":"off"}'/organizations/billingCurrencyGet the billing currency
The currency every amount in this organization is in, whether it can still change, and the supported list. Any member may read. Pass includeStripe=true as an owner or admin to also get the connected Stripe account's own currency.
Query parameters
includeStripe | "true" | "false" | Also return the connected Stripe account's currency (owners and admins only). |
Responses
200 | OK | Success.→ { data: OrganizationBillingCurrency } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/organizations/billingCurrency \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/billingCurrencySet the billing currency
Changes the currency the organization bills in. Owner only. Refused with 409 once any invoice, account ledger entry or card charge exists, because every recorded amount is a number in the old currency.
Request body
The new currency.
currencyrequired | "usd" | "cad" | "aud" | "nzd" | "gbp" | "eur" |
Responses
200 | OK | The currency after the change.→ { data: OrganizationBillingCurrency } |
400 | Bad Request | Not one of the supported currencies. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Only the organization owner can change this. |
409 | The organization has already billed in its current currency. | |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X PUT https://api.aerscheduler.com/organizations/billingCurrency \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"currency":"usd"}'/organizations/cancelDeletionCancel a scheduled organization deletion
Clears the 30-day countdown. Requires the admin role (owners hold admin).
Responses
200 | OK | The organization with the countdown cleared.→ { data: object } |
400 | Bad Request | No deletion is currently scheduled. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/organizations/cancelDeletion \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/guestsList guests
Non-members who have appeared on bookings.
Query parameters
limit | integer | Rows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected. |
offset | integer | Rows to skip, for paging. Defaults to 0. |
sort | string | Field to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding. |
order | "asc" | "desc" | asc (default) or desc. Only meaningful with sort. |
Responses
200 | OK | The guests.→ { data: User[] } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/organizations/guests \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/inviteInvite someone
Emails an invitation with the roles they will get on acceptance. At least one role must be true. Joining uses the invitation up: somebody who leaves and comes back joins like anybody else. Requires the admin role.
Request body
Who to invite and as what.
emailrequired | string | |
admin | boolean | |
instructor | boolean | |
student | boolean | |
renter | boolean | |
technician | boolean | |
dispatcher | boolean | |
orgUserGroupIds | integer[] |
Responses
204 | No Content | Success. No body. |
400 | Bad Request | No role chosen, already a member, or a group that is not this organization's. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/organizations/invite \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"you@yourschool.com"}'/organizations/ledgerGet ledger billing mode
Whether this organization is in ledger billing mode. When on, members live on an account balance; money-in and refunds are separate from per-flight invoices. Default off. Any member may read.
Responses
200 | OK | Success.→ { data: OrganizationLedgerSettings } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/organizations/ledger \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/ledgerSet ledger billing mode
Turns ledger mode on or off, sets the optional card surcharge on member top-ups, and/or sets late fees on negative balances. Owner only. Desk cash/check credit is never surcharged. Late fees post once per member per calendar month after the grace period.
Request body
Ledger settings patch. Send any subset.
enabled | boolean | |
topUpCardFeePercent | integer | |
topUpCardFeeFlatCents | integer | |
lateFeePercent | integer | Whole percent of the amount owing. 0 or null = off. |
lateFeeFlatCents | integer | |
lateFeeGraceDays | integer | Days owing before a late fee posts. Null = 30. 0 = first eligible sweep. |
Responses
200 | OK | Updated settings.→ { data: OrganizationLedgerSettings } |
400 | Bad Request | Body failed validation. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Only the organization owner can change this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X PATCH https://api.aerscheduler.com/organizations/ledger \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"enabled":true,"topUpCardFeePercent":1}'/organizations/ratingsList ratings
The certificates and ratings your organization teaches.
Query parameters
limit | integer | Rows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected. |
offset | integer | Rows to skip, for paging. Defaults to 0. |
sort | string | Field to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding. |
order | "asc" | "desc" | asc (default) or desc. Only meaningful with sort. |
Responses
200 | OK | Success.→ { data: object[] } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/organizations/ratings \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/ratingsCreate a rating
Requires the admin role.
Request body
The rating.
namerequired | string | |
anyInstructorCanTeachrequired | boolean | |
defaultInstructorRaterequired | integer | Hourly rate in cents. |
Responses
200 | OK | Success.→ { data: object } |
400 | Bad Request | Validation failed. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/organizations/ratings \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"…","anyInstructorCanTeach":true,"defaultInstructorRate":1}'/organizations/reservationTypeColorsReservation type colors
The organization's own colors for reservation types on the schedule, readable by every member. Null means every type uses its default. Set them with PATCH /organizations (admins).
Responses
200 | OK | Success.→ { data: object | null } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/organizations/reservationTypeColors \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/salesTaxGet sales tax settings
The organization's sales tax rates, archived ones included, and which categories of invoice line each rate taxes. Administrators. Nothing is taxed until a rate exists and a category points at it (or a person ticks a line). Close-out bills for flights are not taxed.
Responses
200 | OK | Success.→ { data: SalesTaxSettings } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/organizations/salesTax \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/joinRequests/{id}/acceptAccept a join request
Requires the admin role.
Path parameters
idrequired | integer | The join request id. |
Responses
200 | OK | Success.→ { data: object } |
204 | No Content | Success. No body. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/joinRequests/:id/accept \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/joinRequests/{id}/declineDecline a join request
Requires the admin role.
Path parameters
idrequired | integer | The join request id. |
Responses
200 | OK | Success.→ { data: object } |
204 | No Content | Success. No body. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/joinRequests/:id/decline \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/leave/{orgId}Leave an organization
Removes yourself. The last owner cannot leave. An aircraft owner from outside the organization hands its record of them back instead (their aircraft, jobs and bills stay with the organization), and their saved payment methods and autopay are removed from it.
Path parameters
orgIdrequired | integer | The organization to leave. |
Responses
200 | OK | Success.→ { data: object } |
204 | No Content | Success. No body. |
400 | Bad Request | You cannot leave , you are the last owner or administrator. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/organizations/leave/:orgId \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/ledger/accountsList member account balances
Organization-wide ledger roster for the Operations Billing desk. Admin only. Current members only (not archived, not API keys). summary is org-wide and ignores q / status. Default sort is most owing first (balanceCents ascending).
Query parameters
q | string | Free-text filter. Matches the fields a person would search on. |
status | string | Comma-separated balance buckets: owing (negative), credit (positive), zero. |
limit | integer | Rows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected. |
offset | integer | Rows to skip, for paging. Defaults to 0. |
sort | string | Field to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding. |
order | "asc" | "desc" | asc (default) or desc. Only meaningful with sort. |
Responses
200 | OK | Paged accounts plus org-wide totals.→ { data: LedgerAccount[] } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not an administrator. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/organizations/ledger/accounts \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/ledger/blocksList prepaid blocks
The blocks this organization sells (pay a price, get more credit on the account ledger). Members get the active ones; owners and admins may pass includeArchived=true and get purchase counts.
Query parameters
includeArchived | "true" | "false" | Owners and admins: include archived blocks. |
limit | integer | Rows to return, 1,1000. Defaults to 1000; a larger value is clamped rather than rejected. |
offset | integer | Rows to skip, for paging. Defaults to 0. |
sort | string | Field to order by before paging, as a dot path into the row , total, user.firstName. Omit to keep the endpoint's own order. Numbers and ISO timestamps order as numbers and instants, not as text, and empty values always sort last regardless of direction. Ordering happens before the page is cut, so it orders the whole collection rather than the page you are holding. |
order | "asc" | "desc" | asc (default) or desc. Only meaningful with sort. |
Responses
200 | OK | Success.→ { data: LedgerBlock[] } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl https://api.aerscheduler.com/organizations/ledger/blocks \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/ledger/blocksCreate a prepaid block
Adds a block members can buy from Add funds and the desk can sell. Admin only. Requires Account ledger mode.
Request body
The block.
namerequired | string | |
description | string | null | |
priceCentsrequired | integer | What the member pays. |
creditCentsrequired | integer | What lands on the balance; at least priceCents, at most 100000000. |
active | boolean |
Responses
201 | Created | Success.→ { data: LedgerBlock } |
400 | Bad Request | A missing name, or amounts that do not work (credit below price, price under 1.00). |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
409 | The organization is not in Account ledger mode. | |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/organizations/ledger/blocks \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"…","priceCents":1,"creditCents":1}'/organizations/ratings/{ratingId}Update a rating
Requires the admin role.
Path parameters
ratingIdrequired | integer | The rating id. |
Request body
Fields to change.
name | string |
Responses
200 | OK | Success.→ { data: object } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X PATCH https://api.aerscheduler.com/organizations/ratings/:ratingId \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"…"}'/organizations/ratings/{ratingId}Delete a rating
Requires the admin role.
Path parameters
ratingIdrequired | integer | The rating id. |
Responses
204 | No Content | Success. No body. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X DELETE https://api.aerscheduler.com/organizations/ratings/:ratingId \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/removeUser/{userId}Remove a member
Removes someone from your organization. Requires the admin role.
Path parameters
userIdrequired | integer | The user to remove. |
Responses
204 | No Content | Success. No body. |
400 | Bad Request | They cannot be removed , the last owner or administrator, for instance. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/organizations/removeUser/:userId \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/salesTax/ratesAdd a sales tax rate
Owners and admins. Adding a rate taxes nothing by itself: point a category at it with PUT /organizations/salesTax/rules.
Request body
The rate.
namerequired | string | Printed on invoices, e.g. Idaho sales tax. |
ratePpmrequired | integer | Parts per million of the amount taxed: 60000 is 6%, 81875 is 8.1875%. |
country | string | Where the tax is owed, as an ISO 3166-1 alpha-2 code. Defaults to US. |
jurisdiction | string | Optional. In the US, a state (code or name, stored as the code); anything else is refused. Abroad, a region as you want it printed, up to 40 characters, never read as a US state. |
Responses
201 | Created | The new rate's id.→ { data: object } |
400 | Bad Request | Name or percentage failed validation. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Only the organization owner can change sales tax. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/organizations/salesTax/rates \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"…","ratePpm":1}'/organizations/salesTax/rulesSet which lines are taxed
Owners and admins. Replaces the whole table in one save: { rules: { part: 3, supply: null } } taxes parts at rate 3 and nothing else. Categories: labor, part, supply, outside_service, freight, fee (the organization's service fee line is a fee), rental, instruction, other.
Request body
The rules.
rulesrequired | object |
Responses
200 | OK | Success.→ { data: object } |
400 | Bad Request | An unknown category, or a rate that does not exist here or is archived. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Only the organization owner can change sales tax. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X PUT https://api.aerscheduler.com/organizations/salesTax/rules \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"rules":{}}'/organizations/ledger/blocks/{blockId}Change a prepaid block
Edit any of name, description, priceCents, creditCents, active, sortOrder. Past purchases keep their own figures. Setting active true also brings an archived block back. Admin only.
Path parameters
blockIdrequired | integer | The block id. |
Request body
Any subset.
name | string | |
description | string | null | |
priceCents | integer | |
creditCents | integer | |
active | boolean | |
sortOrder | integer |
Responses
200 | OK | Success.→ { data: LedgerBlock } |
400 | Bad Request | Amounts that do not work. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
404 | Not Found | No such block in this organization. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X PATCH https://api.aerscheduler.com/organizations/ledger/blocks/:blockId \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"…","description":"…"}'/organizations/ledger/blocks/{blockId}Archive a prepaid block
Hides the block from members. Blocks are never deleted, so purchase history keeps its name. Admin only.
Path parameters
blockIdrequired | integer | The block id. |
Responses
200 | OK | Success.→ { data: LedgerBlock } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Authenticated, but not allowed to do this. |
404 | Not Found | No such block in this organization. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X DELETE https://api.aerscheduler.com/organizations/ledger/blocks/:blockId \
-H "Authorization: Bearer $AERSCHEDULER_KEY"/organizations/salesTax/rates/{rateId}Change a sales tax rate
Owners and admins. Rename freely. The percentage, country and state change only while no invoice line has been charged at the rate; after that, archive it and add the new rate, so old invoices keep saying what they charged and where it is owed.
Path parameters
rateIdrequired | integer | The rate id. |
Request body
Any subset.
name | string | |
ratePpm | integer | |
country | string | |
jurisdiction | string | null |
Responses
200 | OK | Success.→ { data: object } |
400 | Bad Request | Failed validation, or the rate is already on invoices and only its name can change. |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Only the organization owner can change sales tax. |
404 | Not Found | No such rate at this organization. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X PATCH https://api.aerscheduler.com/organizations/salesTax/rates/:rateId \
-H "Authorization: Bearer $AERSCHEDULER_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"…","ratePpm":1}'/organizations/salesTax/rates/{rateId}/archiveArchive a sales tax rate
Owners and admins. Stops the rate applying to new invoices, and removes it from every category that used it, so those categories stop being taxed. Invoices already raised keep the rate they were charged.
Path parameters
rateIdrequired | integer | The rate id. |
Responses
200 | OK | Success.→ { data: object } |
401 | Unauthorized | No token, an expired token, a malformed one, or a session token naming a membership that is no longer yours ("Your session is out of date"). Sign in again. |
403 | Forbidden | Only the organization owner can change sales tax. |
404 | Not Found | No such rate at this organization. |
429 | Too Many Requests | Rate limited. Retry-After says how long to wait. |
curl -X POST https://api.aerscheduler.com/organizations/salesTax/rates/:rateId/archive \
-H "Authorization: Bearer $AERSCHEDULER_KEY"