The fourteen space types

Embed
Preview of the card
<a href="https://forumulate.com/guides/space-types"><img src="https://forumulate.com/guides/_api/public/orgs/046a9bc0-d530-43ae-9bae-af7945008cda/spaces/36aa4df0-1e95-4cef-8ae9-795169441345/pages/e50b2632-6d6c-4170-a5e1-38e4c413f109/social-card.svg?v=3e7ae33eec8b" alt="The fourteen space types" width="600" height="315"></a>

A space is one surface of your site. Its type decides what a piece of content is called, how the index page is laid out, what navigation it gets, and which address prefix it answers on.

Earlier pages said eleven, then thirteen. There are fourteen: Events and Courses were added and never written up, and Content is the newest.

The list below is generated from the same declaration the console renders and the API serves, so it cannot drift from the product. Read it live at GET /space-types.

Type

Name

A piece is a

Platform prefix

Default slug

DOCS

Documentation

page

/p/

docs

FORUM

Community

topic

/f/

community

BLOG

Blog

article

/b/

blog

ROADMAP

Roadmap

item

/r/

roadmap

CHANGELOG

Changelog

release

/c/

changelog

STATUS

Status page

monitor

/st/

status

LEGAL

Legal

document

/legal/

legal

FAQ

FAQ

question

/faq/

faq

CAREERS

Careers

role

/jobs/

jobs

CONTACT

Contact

message

/contact/

contact

EVENTS

Events

event

/e/

events

COURSES

Course

lesson

/co/

course

CUSTOM

Custom

page

/x/

custom

CONTENT

Content

entry

none

content

The platform prefix is how a space is addressed on forumulate.com. On your own domain, or under a path of it, the space answers at the root of that address and the prefix disappears — which is the point of a custom domain. Content has no prefix at all: it has no public pages (below).

What each one is for

Documentation — guides and reference, in a nested tree. Pages in collections, with a sidebar, versions, locales and search.

Community — questions, answers and discussion. Categories, tags, solutions, votes, moderation.

Blog — announcements and longer writing. Reverse-chronological, with feeds.

Roadmap — what is planned, and what people want. Items in lanes, with voting (including anonymous voting, if you allow it).

Changelog — what shipped, newest first. Releases with version labels.

Status page — is it up? Monitors, uptime history, incidents and subscriptions. See Status monitors.

Legal — terms, privacy and the other documents every site needs. Addressed at the organization rather than under the space, because those documents belong to the company and not to one product surface.

FAQ — the questions you answer over and over, answered once. One page per question. See FAQ spaces.

Careers — open roles, and what it is like to work with you. Declared fields feed Google Jobs. See Careers spaces.

Contact — a way to reach you, and somewhere the messages land.

Custom — a space that starts with no opinion and takes the shape you give it. This is the only type that accepts a free-form shape at creation; see Creating a space.

Content — structured content for your own website: you define content types and their fields, write entries with drafts, review and scheduled publishing, and your site reads them through the delivery API with a key. It has no reader, so no address, and it is always private: creating one as PUBLIC, or changing one to PUBLIC, is refused with a 422. Nothing in it is ever listed in a sitemap, robots.txt, llms.txt, a feed, an embed, public search or a front page — those all read only spaces with a public reader.

Events

What is happening and when — webinars, AMAs, meetups, office hours. A piece is an event, which is its own backing kind rather than a page or a topic.

Readers get a list, each event's own page, and a calendar they can subscribe to so the event appears in their own calendar app.

Call

What it does

GET /orgs/{orgId}/spaces/{spaceId}/events

List events.

GET /orgs/{orgId}/spaces/{spaceId}/events/manage

The authoring view, including unpublished events.

POST /orgs/{orgId}/spaces/{spaceId}/events/{id}/rsvp

Record an RSVP.

GET /public/orgs/{orgId}/spaces/{spaceId}/events/calendar.ics

The whole space as an iCalendar feed.

GET /public/orgs/{orgId}/spaces/{spaceId}/events/{handle}/calendar.ics

One event, for an "add to calendar" link.

seed does nothing for an events space — events are not pages, so there is no default collection to create.

Courses

Teach something in order — modules of lessons a learner works through. A piece is a lesson, backed by a page, so everything you can do in a documentation page you can do in a lesson.

What makes it a course rather than a tree of pages: an ordered outline, quizzes with recorded attempts, lesson kinds (video, audio, PDF, assignment, live session, SCORM package and more) whose own requirement is what completes them, a learner's progress and a certificate somebody else can verify. Around that sit access and pacing rules, enrolment windows, cohorts and seat groups, selling the course on your own Stripe account, course mail and reports, a catalogue and learning paths, and LTI 1.3 for launching from an LMS.

Call

What it does

GET /orgs/{orgId}/spaces/{spaceId}/course/outline

The modules and their lessons, in order.

PUT /orgs/{orgId}/spaces/{spaceId}/course/enrolment

Enrol, or record the lesson the learner is on.

GET /public/orgs/{orgId}/spaces/{spaceId}/course/certificate/{verifyId}/pdf

A public, verifiable PDF of a certificate.

All of it — the learner rules, access and pacing, selling, the reader's looks and keys — is in Courses spaces.

Front pages

Every type's front door is a composed document you can edit; until you do, it is generated from the type's own bands, so it looks as it always did. The two types without a guide of their own:

  • Courses — the intro band, then the outline band. A courses feed sorts by latest and filters by section; its cards show title and section.

  • Contact — the intro band, then the form band. A contact space has no list to feed from, so a spaceFeed pointed at one renders nothing.

Docs and Custom spaces have no generated front page under the guide preset — readers land on the first page — but the Landing preset generates intro, search and sections, and a stored front page gives any of them one. A docs feed sorts by latest and filters by section (a collection).

Picking a type, and changing your mind

A space's type is chosen at creation and is not editable afterwards. What is editable is its shape — the index layout, the ordering, the navigation and who may create a piece. A named type picks from its own presets; see Creating a space.

If you genuinely chose the wrong type, create the right one and move the content across; there is no conversion.

Slot keys

Nine of the fourteen types say a piece has named parts rather than one body: a roadmap item has a problem and a proposal, a release has what was added and what was fixed. Those names are its slot keys, and they are what an agent, the sandbox and the CLI write a piece one part at a time with.

They are declared, not invented, and there are three ways to read them:

GET /api/space-types/{type}/slots            # by type, before a space exists
GET /api/space-types/slots                   # every type at once
GET /api/orgs/{orgId}/spaces/{spaceId}/shape # this space, renames folded in

On the shape response the keys are base.sections[].key — base is the type's declaration with this space's own additions and renames already applied — and jsonSchema beside it is the machine-readable form an agent can validate a body against before sending it.

Type

Slot keys

BLOG

standfirst, body

ROADMAP

problem, proposal, notes, success

CHANGELOG

summary, added, changed, fixed, removed, deprecated, security, downloads, upgrade-notes

FAQ

answer, short-answer, related

CAREERS

summary, responsibilities, requirements, nice-to-have, benefits, process

LEGAL

summary, definitions, terms, subprocessors, contact

CONTACT

intro, response-times, what-to-include, elsewhere

STATUS

impact, timeline, root-cause, resolution

EVENTS

details

DOCS, FORUM, COURSES, CUSTOM and CONTENT declare none: a piece there is one body, and sections comes back as {} with the whole piece under markdown.

Three doors take them:

POST /api/orgs/{orgId}/spaces/{spaceId}/items          { "sections": { "problem": "…" } }
PUT  /api/orgs/{orgId}/spaces/{spaceId}/items/{itemId}/sections/{key}
GET  /api/orgs/{orgId}/spaces/{spaceId}/items/{itemId}

The read always carries sections, and contentIn says whether to read it or markdown. On the LIST — GET …/items — slot text is left out until you ask for it with ?include=sections, because a page of whole pieces is a much bigger response.

A key the type does not declare is a 422 that lists the ones it does, so you never have to guess. conformance on a read says which declared slots are filled and which are still empty — that, rather than the absence of an error, is how an agent knows it finished.

A space may rename or add slots on top of its type (that is its shape), so the shape endpoint is the authority for a particular space and the table above is the default each type starts from.

Several types, one address

A site publishes several spaces on one address, each under its own path — documentation at /docs, a community at /community, a changelog at /changelog. The site's sitemap indexes each space inside it, so you submit one address to Search Console. See Publish on your own domain.

In the API

Every operation below is also reachable from the other surfaces without a dedicated command. forumulate api <Operation> calls it from the CLI, the JavaScript SDK has a typed method for each one (the last column names it; the Python and Go clients are generated from the same spec), and an agent reaches the organization-scoped ones through the MCP call_api tool. Where a CLI command or MCP tool exists too, the last column names it. Operation names link to the API reference.

Course Access

Operation

Request

What it does

Shortcuts

CourseAccess_get

GET /orgs/{orgId}/spaces/{spaceId}/course/authoring/access

Get the access in a space (course authoring)

client.courses.access.get()

CourseAccess_set

PUT /orgs/{orgId}/spaces/{spaceId}/course/authoring/access

Replace the access in a space (course authoring)

client.courses.access.set()

Course Checkout Extras

Operation

Request

What it does

Shortcuts

CourseCheckoutExtras_confirmPaypal

POST /orgs/{orgId}/spaces/{spaceId}/course/checkout/paypal/confirm

Confirm the paypal

client.courses.checkoutExtras.confirmPaypal()

CourseCheckoutExtras_upsell

GET /orgs/{orgId}/spaces/{spaceId}/course/upsell

Get the upsell in a space

client.courses.checkoutExtras.upsell()

CourseCheckoutExtras_acceptUpsell

POST /orgs/{orgId}/spaces/{spaceId}/course/upsell

Create the upsell in a space

client.courses.checkoutExtras.acceptUpsell()

CourseCheckoutExtras_redeem

POST /orgs/{orgId}/spaces/{spaceId}/course/gift/redeem

Create the redeem in a space (course gift)

client.courses.checkoutExtras.redeem()

CourseCheckoutExtras_cancel

POST /orgs/{orgId}/spaces/{spaceId}/course/purchase/cancel

Cancel the purchase

client.courses.checkoutExtras.cancel()

CourseCheckoutExtras_resume

POST /orgs/{orgId}/spaces/{spaceId}/course/purchase/resume

Resume the purchase

client.courses.checkoutExtras.resume()

CourseCheckoutExtras_invoices

GET /orgs/{orgId}/spaces/{spaceId}/course/purchase/invoices

List invoices in a space

client.courses.checkoutExtras.invoices()

CourseCheckoutExtras_bundleCheckout

POST /orgs/{orgId}/spaces/{spaceId}/course/bundles/{slug}/checkout

Create the checkout in a space (course bundles)

client.courses.checkoutExtras.bundleCheckout()

Course Cohort Learner

Operation

Request

What it does

Shortcuts

CourseCohortLearner_joinWaitlist

POST /orgs/{orgId}/spaces/{spaceId}/course/waitlist

Create the waitlist in a space

client.courses.cohortLearner.joinWaitlist()

CourseCohortLearner_leaveWaitlist

DELETE /orgs/{orgId}/spaces/{spaceId}/course/waitlist

Delete the waitlist in a space

client.courses.cohortLearner.leaveWaitlist()

CourseCohortLearner_join

POST /orgs/{orgId}/spaces/{spaceId}/course/cohorts/{cohortId}/join

Join the cohort

client.courses.cohortLearner.join()

CourseCohortLearner_joinSeat

POST /orgs/{orgId}/spaces/{spaceId}/course/seats/join

Join the seat

client.courses.cohortLearner.joinSeat()

CourseCohortLearner_managed

GET /orgs/{orgId}/spaces/{spaceId}/course/seats/managed

Get the managed in a space

client.courses.cohortLearner.managed()

CourseCohortLearner_invite

POST /orgs/{orgId}/spaces/{spaceId}/course/seats/{groupId}/invite

Invite the seat

client.courses.cohortLearner.invite()

CourseCohortLearner_removeMember

DELETE /orgs/{orgId}/spaces/{spaceId}/course/seats/{groupId}/members/{memberId}

Delete the member (spaces course seats)

client.courses.cohortLearner.removeMember()

CourseCohortLearner_members

GET /orgs/{orgId}/spaces/{spaceId}/course/members

List members in a space (course)

client.courses.cohortLearner.members()

CourseCohortLearner_messages

GET /orgs/{orgId}/spaces/{spaceId}/course/cohort/messages

List messages in a space (cohort)

client.courses.cohortLearner.messages()

CourseCohortLearner_post

POST /orgs/{orgId}/spaces/{spaceId}/course/cohort/messages

Create a message in a space

client.courses.cohortLearner.post()

CourseCohortLearner_deleteMessage

DELETE /orgs/{orgId}/spaces/{spaceId}/course/cohort/messages/{messageId}

Delete the message (spaces course cohort)

client.courses.cohortLearner.deleteMessage()

Course Cohorts

Operation

Request

What it does

Shortcuts

CourseCohorts_list

GET /orgs/{orgId}/spaces/{spaceId}/course/cohorts

List cohorts in a space

client.courses.cohorts.list()

CourseCohorts_create

POST /orgs/{orgId}/spaces/{spaceId}/course/cohorts

Create a cohort in a space

client.courses.cohorts.create()

CourseCohorts_update

PUT /orgs/{orgId}/spaces/{spaceId}/course/cohorts/{cohortId}

Replace the cohort

client.courses.cohorts.update()

CourseCohorts_remove

DELETE /orgs/{orgId}/spaces/{spaceId}/course/cohorts/{cohortId}

Delete the cohort

client.courses.cohorts.remove()

CourseCohorts_staffMessages

GET /orgs/{orgId}/spaces/{spaceId}/course/cohorts/{cohortId}/messages

List messages in a space (cohorts)

client.courses.cohorts.staffMessages()

CourseCohorts_move

PUT /orgs/{orgId}/spaces/{spaceId}/course/learners/{userId}/cohort

Replace the cohort in a space

client.courses.cohorts.move()

CourseCohorts_unenrol

DELETE /orgs/{orgId}/spaces/{spaceId}/course/learners/{userId}

Delete the learner

client.courses.cohorts.unenrol()

CourseCohorts_bulk

POST /orgs/{orgId}/spaces/{spaceId}/course/enrolments/bulk

Create the bulk in a space (course enrolments)

client.courses.cohorts.bulk()

CourseCohorts_waitlist

GET /orgs/{orgId}/spaces/{spaceId}/course/waitlist

Get the waitlist in a space

client.courses.cohorts.waitlist()

CourseCohorts_admit

POST /orgs/{orgId}/spaces/{spaceId}/course/waitlist/{entryId}/admit

Create the admit in a space

client.courses.cohorts.admit()

CourseCohorts_dropEntry

DELETE /orgs/{orgId}/spaces/{spaceId}/course/waitlist/{entryId}

Delete the waitlist

client.courses.cohorts.dropEntry()

CourseCohorts_groups

GET /orgs/{orgId}/spaces/{spaceId}/course/seat-groups

List seat groups in a space

client.courses.cohorts.groups()

CourseCohorts_createGroup

POST /orgs/{orgId}/spaces/{spaceId}/course/seat-groups

Create a seat group in a space

client.courses.cohorts.createGroup()

CourseCohorts_updateGroup

PUT /orgs/{orgId}/spaces/{spaceId}/course/seat-groups/{groupId}

Replace the seat group

client.courses.cohorts.updateGroup()

CourseCohorts_deleteGroup

DELETE /orgs/{orgId}/spaces/{spaceId}/course/seat-groups/{groupId}

Delete the seat group

client.courses.cohorts.deleteGroup()

CourseCohorts_report

GET /orgs/{orgId}/spaces/{spaceId}/course/seat-groups/{groupId}/report

Get the report in a space (course seat groups)

client.courses.cohorts.report()

Course Commerce

Operation

Request

What it does

Shortcuts

CourseCommerce_terms

GET /orgs/{orgId}/spaces/{spaceId}/course/authoring/commerce

Get the commerce in a space

client.courses.commerce.terms()

CourseCommerce_setTerms

PUT /orgs/{orgId}/spaces/{spaceId}/course/authoring/commerce

Replace the commerce in a space

client.courses.commerce.setTerms()

CourseCommerce_coupons

GET /orgs/{orgId}/spaces/{spaceId}/course/coupons

List coupons in a space

client.courses.commerce.coupons()

CourseCommerce_createCoupon

POST /orgs/{orgId}/spaces/{spaceId}/course/coupons

Create a coupon in a space

client.courses.commerce.createCoupon()

CourseCommerce_patchCoupon

PUT /orgs/{orgId}/spaces/{spaceId}/course/coupons/{couponId}

Replace the coupon

client.courses.commerce.patchCoupon()

CourseCommerce_deleteCoupon

DELETE /orgs/{orgId}/spaces/{spaceId}/course/coupons/{couponId}

Delete the coupon

client.courses.commerce.deleteCoupon()

CourseCommerce_purchases

GET /orgs/{orgId}/spaces/{spaceId}/course/purchases

List purchases in a space

client.courses.commerce.purchases()

CourseCommerce_grant

PUT /orgs/{orgId}/spaces/{spaceId}/course/purchases/grant

Replace the grant in a space

client.courses.commerce.grant()

CourseCommerce_revoke

DELETE /orgs/{orgId}/spaces/{spaceId}/course/purchases/{purchaseId}

Delete the purchase

client.courses.commerce.revoke()

CourseCommerce_refund

POST /orgs/{orgId}/spaces/{spaceId}/course/purchases/{purchaseId}/refund

Create the refund in a space (course purchases)

client.courses.commerce.refund()

Course Community

Operation

Request

What it does

Shortcuts

CourseCommunity_mine

GET /orgs/{orgId}/spaces/{spaceId}/course/reviews/mine

List mine reviews in a space

client.courses.community.mine()

CourseCommunity_review

PUT /orgs/{orgId}/spaces/{spaceId}/course/reviews/mine

List mine reviews in a space (replace)

client.courses.community.review()

CourseCommunity_unreview

DELETE /orgs/{orgId}/spaces/{spaceId}/course/reviews/mine

List mine reviews in a space (delete)

client.courses.community.unreview()

CourseCommunity_questions

GET /orgs/{orgId}/spaces/{spaceId}/course/questions

List questions in a space (course)

client.courses.community.questions()

CourseCommunity_ask

POST /orgs/{orgId}/spaces/{spaceId}/course/questions

Create a question in a space (course)

client.courses.community.ask()

CourseCommunity_leaderboard

GET /orgs/{orgId}/spaces/{spaceId}/course/leaderboard

Get the leaderboard in a space (course)

client.courses.community.leaderboard()

Course Community Admin

Operation

Request

What it does

Shortcuts

CourseCommunityAdmin_all

GET /orgs/{orgId}/spaces/{spaceId}/course/reviews/all

Get the all in a space (course reviews)

client.courses.communityAdmin.all()

CourseCommunityAdmin_moderate

PUT /orgs/{orgId}/spaces/{spaceId}/course/reviews/{reviewId}/moderate

Replace the moderate in a space

client.courses.communityAdmin.moderate()

CourseCommunityAdmin_inbox

GET /orgs/{orgId}/spaces/{spaceId}/course/questions/inbox

Get the inbox in a space

client.courses.communityAdmin.inbox()

CourseCommunityAdmin_answer

PUT /orgs/{orgId}/spaces/{spaceId}/course/questions/{questionId}

Replace the question

client.courses.communityAdmin.answer()

CourseCommunityAdmin_broadcasts

GET /orgs/{orgId}/spaces/{spaceId}/course/broadcasts

List broadcasts in a space (course)

client.courses.communityAdmin.broadcasts()

CourseCommunityAdmin_broadcast

POST /orgs/{orgId}/spaces/{spaceId}/course/broadcasts

Create a broadcast in a space (course)

client.courses.communityAdmin.broadcast()

CourseCommunityAdmin_unbroadcast

DELETE /orgs/{orgId}/spaces/{spaceId}/course/broadcasts/{broadcastId}

Delete the broadcast

client.courses.communityAdmin.unbroadcast()

CourseCommunityAdmin_sequences

GET /orgs/{orgId}/spaces/{spaceId}/course/sequences

List sequences in a space

client.courses.communityAdmin.sequences()

CourseCommunityAdmin_createSequence

POST /orgs/{orgId}/spaces/{spaceId}/course/sequences

Create a sequence in a space

client.courses.communityAdmin.createSequence()

CourseCommunityAdmin_updateSequence

PUT /orgs/{orgId}/spaces/{spaceId}/course/sequences/{sequenceId}

Replace the sequence

client.courses.communityAdmin.updateSequence()

CourseCommunityAdmin_deleteSequence

DELETE /orgs/{orgId}/spaces/{spaceId}/course/sequences/{sequenceId}

Delete the sequence

client.courses.communityAdmin.deleteSequence()

CourseCommunityAdmin_schedules

GET /orgs/{orgId}/spaces/{spaceId}/course/report-schedules

List report schedules in a space

client.courses.communityAdmin.schedules()

CourseCommunityAdmin_createSchedule

POST /orgs/{orgId}/spaces/{spaceId}/course/report-schedules

Create a report schedule in a space

client.courses.communityAdmin.createSchedule()

CourseCommunityAdmin_deleteSchedule

DELETE /orgs/{orgId}/spaces/{spaceId}/course/report-schedules/{scheduleId}

Delete the report schedule

client.courses.communityAdmin.deleteSchedule()

CourseCommunityAdmin_preview

GET /orgs/{orgId}/spaces/{spaceId}/course/report-preview

Get the report preview in a space

client.courses.communityAdmin.preview()

Course Feed

Operation

Request

What it does

Shortcuts

CourseFeed_address

POST /orgs/{orgId}/spaces/{spaceId}/course/feed

Create the feed in a space

client.courses.feed.address()

Course Landing Variants

Operation

Request

What it does

Shortcuts

CourseLandingVariants_list

GET /orgs/{orgId}/spaces/{spaceId}/course/landing-variants

List landing variants in a space

client.courses.landingVariants.list()

CourseLandingVariants_create

POST /orgs/{orgId}/spaces/{spaceId}/course/landing-variants

Create a landing variant in a space

client.courses.landingVariants.create()

CourseLandingVariants_reset

POST /orgs/{orgId}/spaces/{spaceId}/course/landing-variants/reset

Reset the landing variant

client.courses.landingVariants.reset()

CourseLandingVariants_update

PUT /orgs/{orgId}/spaces/{spaceId}/course/landing-variants/{variantId}

Replace the landing variant

client.courses.landingVariants.update()

CourseLandingVariants_remove

DELETE /orgs/{orgId}/spaces/{spaceId}/course/landing-variants/{variantId}

Delete the landing variant

client.courses.landingVariants.remove()

Course Learner Depth

Operation

Request

What it does

Shortcuts

CourseLearnerDepth_notes

GET /orgs/{orgId}/spaces/{spaceId}/course/notes

List notes in a space (course)

client.courses.learnerDepth.notes()

CourseLearnerDepth_addNote

POST /orgs/{orgId}/spaces/{spaceId}/course/lessons/{slug}/notes

Create a note in a space (course lessons)

client.courses.learnerDepth.addNote()

CourseLearnerDepth_deleteNote

DELETE /orgs/{orgId}/spaces/{spaceId}/course/notes/{id}

Delete the note (spaces course)

client.courses.learnerDepth.deleteNote()

CourseLearnerDepth_heartbeat

POST /orgs/{orgId}/spaces/{spaceId}/course/heartbeat

Create the heartbeat in a space (course)

client.courses.learnerDepth.heartbeat()

CourseLearnerDepth_setLesson

PUT /orgs/{orgId}/spaces/{spaceId}/course/learners/{userId}/lessons/{slug}

Replace the lesson

client.courses.learnerDepth.setLesson()

CourseLearnerDepth_reset

DELETE /orgs/{orgId}/spaces/{spaceId}/course/learners/{userId}/progress

Delete the progress in a space

client.courses.learnerDepth.reset()

CourseLearnerDepth_issue

POST /orgs/{orgId}/spaces/{spaceId}/course/learners/{userId}/certificate

Create the certificate in a space

client.courses.learnerDepth.issue()

Course Learner Extras

Operation

Request

What it does

Shortcuts

CourseLearnerExtras_positions

GET /orgs/{orgId}/spaces/{spaceId}/course/lessons/{slug}/media

Get the media in a space

client.courses.learnerExtras.positions()

CourseLearnerExtras_savePosition

PUT /orgs/{orgId}/spaces/{spaceId}/course/lessons/{slug}/media

Replace the media in a space

client.courses.learnerExtras.savePosition()

CourseLearnerExtras_stats

GET /orgs/{orgId}/spaces/{spaceId}/course/me/stats

List stats in a space (course me)

client.courses.learnerExtras.stats()

CourseLearnerExtras_mine

GET /orgs/{orgId}/spaces/{spaceId}/course/purchase

Get the purchase in a space

client.courses.learnerExtras.mine()

CourseLearnerExtras_checkout

POST /orgs/{orgId}/spaces/{spaceId}/course/checkout

Create the checkout in a space (course)

client.courses.learnerExtras.checkout()

CourseLearnerExtras_confirm

POST /orgs/{orgId}/spaces/{spaceId}/course/checkout/confirm

Confirm the checkout

client.courses.learnerExtras.confirm()

CourseLearnerExtras_refund

POST /orgs/{orgId}/spaces/{spaceId}/course/purchase/refund

Create the refund in a space (course purchase)

client.courses.learnerExtras.refund()

Course Lesson Kinds

Operation

Request

What it does

Shortcuts

CourseLessonKinds_requirement

GET /orgs/{orgId}/spaces/{spaceId}/course/lessons/{slug}/requirement

Get the requirement in a space

client.courses.lessonKinds.requirement()

CourseLessonKinds_watch

POST /orgs/{orgId}/spaces/{spaceId}/course/lessons/{slug}/watch

Create the watch in a space (course lessons)

client.courses.lessonKinds.watch()

CourseLessonKinds_mine

GET /orgs/{orgId}/spaces/{spaceId}/course/lessons/{slug}/assignment

Get the assignment in a space

client.courses.lessonKinds.mine()

CourseLessonKinds_submit

POST /orgs/{orgId}/spaces/{spaceId}/course/lessons/{slug}/assignment

Create the assignment in a space

client.courses.lessonKinds.submit()

CourseLessonKinds_upload

POST /orgs/{orgId}/spaces/{spaceId}/course/lessons/{slug}/assignment-files

Create an assignment file in a space

client.courses.lessonKinds.upload()

CourseLessonKinds_quizFile

POST /orgs/{orgId}/spaces/{spaceId}/course/quizzes/{quizId}/files

Create a file in a space

client.courses.lessonKinds.quizFile()

CourseLessonKinds_queue

GET /orgs/{orgId}/spaces/{spaceId}/course/assignments

List assignments in a space

client.courses.lessonKinds.queue()

CourseLessonKinds_grade

PATCH /orgs/{orgId}/spaces/{spaceId}/course/assignments/{id}

Update the assignment

client.courses.lessonKinds.grade()

Course Offers

Operation

Request

What it does

Shortcuts

CourseOffers_list

GET /orgs/{orgId}/spaces/{spaceId}/course/offers

List offers in a space

client.courses.offers.list()

CourseOffers_create

POST /orgs/{orgId}/spaces/{spaceId}/course/offers

Create an offer in a space

client.courses.offers.create()

CourseOffers_update

PUT /orgs/{orgId}/spaces/{spaceId}/course/offers/{offerId}

Replace the offer

client.courses.offers.update()

CourseOffers_remove

DELETE /orgs/{orgId}/spaces/{spaceId}/course/offers/{offerId}

Delete the offer

client.courses.offers.remove()

CourseOffers_bulk

POST /orgs/{orgId}/spaces/{spaceId}/course/coupons/bulk

Create the bulk in a space (course coupons)

client.courses.offers.bulk()

CourseOffers_earnings

GET /orgs/{orgId}/spaces/{spaceId}/course/earnings

List earnings in a space

client.courses.offers.earnings()

CourseOffers_instructors

PUT /orgs/{orgId}/spaces/{spaceId}/course/instructors

Replace instructors in a space

client.courses.offers.instructors()

CourseOffers_payout

POST /orgs/{orgId}/spaces/{spaceId}/course/payouts

Create a payout in a space

client.courses.offers.payout()

CourseOffers_rev

GET /orgs/{orgId}/spaces/{spaceId}/course/revenue

Get the revenue in a space

client.courses.offers.rev()

CourseOffers_csv

GET /orgs/{orgId}/spaces/{spaceId}/course/revenue/export.csv

File of export (spaces course revenue)

client.courses.offers.csv()

Course Package Files

Operation

Request

What it does

Shortcuts

CoursePackageFiles_file[0]

GET /course-packages/{id}/{token}/{p0}

Get the course package

client.courses.packageFiles['file[0]']()

CoursePackageFiles_file[1]

GET /course-packages/{id}/{token}/{p0}/{p1}

Get the course package (for a p1)

client.courses.packageFiles['file[1]']()

CoursePackageFiles_file[2]

GET /course-packages/{id}/{token}/{p0}/{p1}/{p2}

Get the course package (for a p1 and a p2)

client.courses.packageFiles['file[2]']()

CoursePackageFiles_file[3]

GET /course-packages/{id}/{token}/{p0}/{p1}/{p2}/{p3}

Get the course package (for a p1 and a p2 and a p3)

client.courses.packageFiles['file[3]']()

CoursePackageFiles_file[4]

GET /course-packages/{id}/{token}/{p0}/{p1}/{p2}/{p3}/{p4}

Get the course package (for a p1 and a p2 and a p3 and a p4)

client.courses.packageFiles['file[4]']()

CoursePackageFiles_file[5]

GET /course-packages/{id}/{token}/{p0}/{p1}/{p2}/{p3}/{p4}/{p5}

Get the course package (for a p1 and a p2 and a p3 and a p4 and a p5)

client.courses.packageFiles['file[5]']()

CoursePackageFiles_file[6]

GET /course-packages/{id}/{token}/{p0}/{p1}/{p2}/{p3}/{p4}/{p5}/{p6}

Get the course package (for a p1 and a p2 and a p3 and a p4 and a p5 and a p6)

client.courses.packageFiles['file[6]']()

CoursePackageFiles_file[7]

GET /course-packages/{id}/{token}/{p0}/{p1}/{p2}/{p3}/{p4}/{p5}/{p6}/{p7}

Get the course package (for a p1 and a p2 and a p3 and a p4 and a p5 and a p6 and a p7)

client.courses.packageFiles['file[7]']()

CoursePackageFiles_file[8]

GET /course-packages/{id}/{token}/{p0}/{p1}/{p2}/{p3}/{p4}/{p5}/{p6}/{p7}/{p8}

Get the course package (for a p1 and a p2 and a p3 and a p4 and a p5 and a p6 and a p7 and a p8)

client.courses.packageFiles['file[8]']()

CoursePackageFiles_file[9]

GET /course-packages/{id}/{token}/{p0}/{p1}/{p2}/{p3}/{p4}/{p5}/{p6}/{p7}/{p8}/{p9}

Get the course package (for a p1 and a p2 and a p3 and a p4 and a p5 and a p6 and a p7 and a p8 and a p9)

client.courses.packageFiles['file[9]']()

CoursePackageFiles_statements

POST /course-xapi/{id}/{token}/statements

Create a statement

client.courses.packageFiles.statements()

CoursePackageFiles_putStatements

PUT /course-xapi/{id}/{token}/statements

Replace statements

client.courses.packageFiles.putStatements()

CoursePackageFiles_fetch

POST /course-xapi/{id}/{token}/fetch

Create the fetch

client.courses.packageFiles.fetch()

CoursePackageFiles_launchData

GET /course-xapi/{id}/{token}/activities/state

Get the state

client.courses.packageFiles.launchData()

CoursePackageFiles_saveState

PUT /course-xapi/{id}/{token}/activities/state

Replace the state

client.courses.packageFiles.saveState()

Course Packages

Operation

Request

What it does

Shortcuts

CoursePackages_launch

GET /orgs/{orgId}/spaces/{spaceId}/course/lessons/{slug}/package

Get the package in a space (course lessons)

client.courses.packages.launch()

CoursePackages_upload

POST /orgs/{orgId}/spaces/{spaceId}/course/lessons/{slug}/package

Create the package in a space

client.courses.packages.upload()

CoursePackages_commit

POST /orgs/{orgId}/spaces/{spaceId}/course/packages/{packageId}/state

Create the state in a space (course packages)

client.courses.packages.commit()

Course Paths

Operation

Request

What it does

Shortcuts

CoursePaths_list

GET /orgs/{orgId}/course-paths

List course paths in an organization

client.courses.paths.list()

CoursePaths_create

POST /orgs/{orgId}/course-paths

Create a course path in an organization

client.courses.paths.create()

CoursePaths_replace

PUT /orgs/{orgId}/course-paths/{pathId}

Replace the course path

client.courses.paths.replace()

CoursePaths_remove

DELETE /orgs/{orgId}/course-paths/{pathId}

Delete the course path

client.courses.paths.remove()

Course Public

Operation

Request

What it does

Shortcuts

CoursePublic_outline

GET /public/orgs/{orgId}/spaces/{spaceId}/course/outline

Get the outline in a space (public reader)

client.courses.public.outline()

Course Quiz Review

Operation

Request

What it does

Shortcuts

CourseQuizReview_queue

GET /orgs/{orgId}/spaces/{spaceId}/course/quiz-reviews

List quiz reviews in a space

client.courses.quizReview.queue()

CourseQuizReview_review

PATCH /orgs/{orgId}/spaces/{spaceId}/course/quiz-reviews/{attemptId}

Update the quiz review

client.courses.quizReview.review()

CourseQuizReview_analytics

GET /orgs/{orgId}/spaces/{spaceId}/course/quizzes/{quizId}/analytics

List analytics in a space (orgs course quizzes)

client.courses.quizReview.analytics()

CourseQuizReview_parse

POST /orgs/{orgId}/spaces/{spaceId}/course/authoring/quiz-import

Create the quiz import in a space

client.courses.quizReview.parse()

Course Scorm Export

Operation

Request

What it does

Shortcuts

CourseScormExport_scorm

GET /orgs/{orgId}/spaces/{spaceId}/course/export/scorm

Get the scorm in a space

client.courses.scormExport.scorm()

Course Store

Operation

Request

What it does

Shortcuts

CourseStore_bundles

GET /orgs/{orgId}/course-store/bundles

List bundles in an organization

client.courses.store.bundles()

CourseStore_createBundle

POST /orgs/{orgId}/course-store/bundles

Create a bundle in an organization

client.courses.store.createBundle()

CourseStore_updateBundle

PUT /orgs/{orgId}/course-store/bundles/{bundleId}

Replace the bundle

client.courses.store.updateBundle()

CourseStore_deleteBundle

DELETE /orgs/{orgId}/course-store/bundles/{bundleId}

Delete the bundle

client.courses.store.deleteBundle()

CourseStore_affiliates

GET /orgs/{orgId}/course-store/affiliates

List affiliates in an organization

client.courses.store.affiliates()

CourseStore_createAffiliate

POST /orgs/{orgId}/course-store/affiliates

Create an affiliate in an organization

client.courses.store.createAffiliate()

CourseStore_updateAffiliate

PUT /orgs/{orgId}/course-store/affiliates/{affiliateId}

Replace the affiliate

client.courses.store.updateAffiliate()

CourseStore_deleteAffiliate

DELETE /orgs/{orgId}/course-store/affiliates/{affiliateId}

Delete the affiliate

client.courses.store.deleteAffiliate()

CourseStore_affiliatePayout

POST /orgs/{orgId}/course-store/affiliates/{affiliateId}/payouts

Create a payout in an organization

client.courses.store.affiliatePayout()

Events

Operation

Request

What it does

Shortcuts

Events_list

GET /orgs/{orgId}/spaces/{spaceId}/events

List events in a space

forumulate events list<br>client.events.list()

Events_create

POST /orgs/{orgId}/spaces/{spaceId}/events

Create an event in a space

forumulate events create<br>client.events.create()

Events_listAll

GET /orgs/{orgId}/spaces/{spaceId}/events/manage

Get the manage in a space

forumulate events manage<br>client.events.listAll()

Events_get

GET /orgs/{orgId}/spaces/{spaceId}/events/{handle}

Get the event

forumulate events get<br>client.events.get()

Events_update

PATCH /orgs/{orgId}/spaces/{spaceId}/events/{handle}

Update the event

forumulate events update<br>client.events.update()

Events_remove

DELETE /orgs/{orgId}/spaces/{spaceId}/events/{handle}

Delete the event

forumulate events delete<br>client.events.remove()

Events_duplicate

POST /orgs/{orgId}/spaces/{spaceId}/events/{handle}/duplicate

Duplicate the event

forumulate events duplicate<br>client.events.duplicate()

Events_myRsvp

GET /orgs/{orgId}/spaces/{spaceId}/events/{handle}/rsvp

Get the rsvp in a space

forumulate events rsvp<br>client.events.myRsvp()

Events_rsvp

PUT /orgs/{orgId}/spaces/{spaceId}/events/{handle}/rsvp

Replace the rsvp in a space

forumulate events rsvp set<br>client.events.rsvp()

Events_clearRsvp

DELETE /orgs/{orgId}/spaces/{spaceId}/events/{handle}/rsvp

Delete the rsvp in a space

forumulate events rsvp clear<br>client.events.clearRsvp()

Events Public

Operation

Request

What it does

Shortcuts

EventsPublic_list

GET /public/orgs/{orgId}/spaces/{spaceId}/events

List events in a space (public reader)

client.events.public.list()

EventsPublic_feed

GET /public/orgs/{orgId}/spaces/{spaceId}/events/calendar.ics

File of calendar

client.events.public.feed()

EventsPublic_rss

GET /public/orgs/{orgId}/spaces/{spaceId}/events/rss.xml

RSS feed of the event

client.events.public.rss()

EventsPublic_atom

GET /public/orgs/{orgId}/spaces/{spaceId}/events/atom.xml

Atom feed of the event

client.events.public.atom()

EventsPublic_jsonFeed

GET /public/orgs/{orgId}/spaces/{spaceId}/events/feed.json

JSON feed of the event

client.events.public.jsonFeed()

EventsPublic_subscribe

POST /public/orgs/{orgId}/spaces/{spaceId}/events/subscribe

Subscribe the event

client.events.public.subscribe()

EventsPublic_search

GET /public/orgs/{orgId}/spaces/{spaceId}/events/search

Get the search in a space (public reader events)

client.events.public.search()

EventsPublic_get

GET /public/orgs/{orgId}/spaces/{spaceId}/events/{handle}

Get the event (public reader)

client.events.public.get()

EventsPublic_ics

GET /public/orgs/{orgId}/spaces/{spaceId}/events/{handle}/calendar.ics

File of calendar (for a named one)

client.events.public.ics()

Path Certificate Public

Operation

Request

What it does

Shortcuts

PathCertificatePublic_verify

GET /public/orgs/{orgId}/course-paths/certificates/{verifyId}

Verify a learning-path certificate

client.tokens.publicHCertificate.verify()

PathCertificatePublic_pdf

GET /public/orgs/{orgId}/course-paths/certificates/{verifyId}/pdf

Get the PDF in an organization

client.tokens.publicHCertificate.pdf()

Progression

Operation

Request

What it does

Shortcuts

Progression_state

GET /orgs/{orgId}/users/{userId}/progression/state

Get the state in an organization

client.users.progression.state()

Progression_signal

POST /orgs/{orgId}/users/{userId}/progression/signals

Create a signal in an organization

client.users.progression.signal()

Public Course Commerce

Operation

Request

What it does

Shortcuts

PublicCourseCommerce_quote

GET /public/orgs/{orgId}/spaces/{spaceId}/course/commerce/quote

Get the quote in a space

client.courses.publicCommerce.quote()

Public Course Feed

Operation

Request

What it does

Shortcuts

PublicCourseFeed_feed

GET /public/orgs/{orgId}/course-feeds/{token}

Get the course feed

client.courses.publicFeed.feed()

Public Course Landing Variants

Operation

Request

What it does

Shortcuts

PublicCourseLandingVariants_list

GET /public/orgs/{orgId}/spaces/{spaceId}/course/landing-variants

List landing variants in a space (public reader)

client.courses.publicLandingVariants.list()

PublicCourseLandingVariants_view

POST /public/orgs/{orgId}/spaces/{spaceId}/course/landing-variants/{variantId}/view

Create the view in a space (course landing variants)

client.courses.publicLandingVariants.view()

PublicCourseLandingVariants_conversion

POST /public/orgs/{orgId}/spaces/{spaceId}/course/landing-variants/{variantId}/conversion

Create the conversion in a space

client.courses.publicLandingVariants.conversion()

Public Course Reviews

Operation

Request

What it does

Shortcuts

PublicCourseReviews_reviews

GET /public/orgs/{orgId}/spaces/{spaceId}/course/reviews

List reviews in a space

client.courses.publicReviews.reviews()

Public Course Store

Operation

Request

What it does

Shortcuts

PublicCourseStore_pricing

GET /public/orgs/{orgId}/spaces/{spaceId}/course/commerce/pricing

Get the pricing in a space

client.courses.publicStore.pricing()

PublicCourseStore_bundlesFor

GET /public/orgs/{orgId}/spaces/{spaceId}/course/commerce/bundles

List bundles in a space

client.courses.publicStore.bundlesFor()

PublicCourseStore_bundle

GET /public/orgs/{orgId}/course-bundles/{slug}

Get the course bundle

client.courses.publicStore.bundle()

PublicCourseStore_click

POST /public/orgs/{orgId}/course-affiliates/{code}/click

Create the click in an organization

client.courses.publicStore.click()

Wallet

Operation

Request

What it does

Shortcuts

Wallet_summary

GET /orgs/{orgId}/users/{userId}/wallet

Get the wallet in an organization

client.users.wallet.summary()

Wallet_credit

POST /orgs/{orgId}/users/{userId}/wallet/credit

Create the credit in an organization

client.users.wallet.credit()

Wallet_debit

POST /orgs/{orgId}/users/{userId}/wallet/debit

Create the debit in an organization

client.users.wallet.debit()

Wallet_grantItem

POST /orgs/{orgId}/users/{userId}/wallet/items/grant

Create the grant in an organization

client.users.wallet.grantItem()

Wallet_consumeItem

POST /orgs/{orgId}/users/{userId}/wallet/items/consume

Create the consume in an organization

client.users.wallet.consumeItem()

The Forumulate teamUpdated