Releases: FlatIO/api-reference
Releases 路 FlatIO/api-reference
Release list
v2.26.2
Patch release. No breaking change.
- Optical Music Recognition (OMR):
POST /omr/jobs(createOmrJob): AddedautoRotate. Off by default: pages are recognized in the orientation they are uploaded in, which is right when your client lets the user rotate pages before upload. Set it totruewhen it does not (for example a server-to-server integration importing scans as they come) and the server detects and corrects pages uploaded sideways or upside down before recognition. Small tilt correction always runs.OmrJobechoes the value.
- Documentation only, no change on the wire.
Full changelog: https://flat.io/developers/docs/api/changelog
v2.26.1
Patch release. No wire change, no breaking change.
- LTI:
POST /organizations/lti/credentials(createLtiConfiguration): The200response is nowLtiConfigurationdirectly, instead of an inlineallOfwrapping it to addregistrationUrl.LtiConfiguration1p3Dynamicalready carries that property, so the response is unchanged on the wire. The wrapper made code generators emit a type extending a union, which some languages cannot express at all.
v2.26.0
- Our API specification is now in OpenAPI 3.1.0 (previously 3.0.3). Nullable fields are declared
type: [<type>, 'null']instead ofnullable: true. No field changed nullability, but tooling pinned to 3.0 will need updating. - Flat for Education:
GET,PUTandDELETE /classes/{class}/assignments/{assignment}(getAssignment,updateClassAssignment,deleteAssignment): Read, update and delete an assignment. Previously only listing and creating were public.PUTupdates only the properties it carries, exceptattachments, which replaces the list.DELETEalso removes the submissions and the students' copies of the attached scores; usearchiveAssignmentto withdraw an assignment and keep the work.GET /organizations/users(listOrganizationUsers):sortacceptscreationDateandusername.
- Scores:
POST /scores(createScore): Finale.musxfiles can now be imported, on a best effort basis. Also documented the scanned music import (PDF and images, requiressupportsTasks, spends credits).
- Optical Music Recognition (OMR):
- The
/omrAPI is out of Beta. Endpoints, fields, and behavior are now stable, and any breaking change will follow our usual deprecation process. Keeping a generic fallback for open-ended values (statuses, step and error codes) is still recommended, as new values may be added. See the OMR API guide. - New FAQ section covering credits and billing, limits and performance, recognition quality and languages, and commercial use, privacy, and data.
GET /billing/credits/history(listBillingCreditsHistory): New. The credit ledger. Sum only entries whosestateisactive, and read the balance fromgetOmrCapabilities.GET /omr/capabilities(getOmrCapabilities): AddedacceptedExtensions.OmrJobFileUploadandOmrJobInputFile: RemovedmimeType.
- The
v2.25.0
- Optical Music Recognition (OMR), Beta API: Take control of your jobs' data retention.
GET /omr/capabilitiesnow advertisesretentionDays(30 by default), and jobs created withoutput: musicxmlcarry aretentionobject with theirexpiryDate.DELETE /omr/jobs/{job}(deleteOmrJob): Erase a job's files and results as soon as you have collected them, instead of waiting for the deadline. The job stays listable with thestatusit finished with and recordsretention.expiredDate; downloads then return409(OMR_JOB_EXPIRED).GET /omr/jobs(listOmrJobs): Newexpiredfilter, usable alongsidestatus.GET /omr/capabilities(getOmrCapabilities): Now available without authentication, so you can feature-detect before a user connects their account. AddedlocalesDetails, the supported recognition languages with their English names. The fields the server always returns are now declared required, so a generated client can read them without null checks;retentionDaysstays optional.OmrDetectedInstrumentandOmrInstrumentOverride: Clarified thatinstrumentIdis the dottedgroup.instrumentform, and documented the acceptedtransposeKeyvalues.
- Scores:
GET /scores/{score}/revisions/{revision}/{format}(getScoreRevisionData): Addedabcexport, for ABC notation. Like MIDI, this format is lossy and does not carry the full engraving of the score.ScoreTrack: Thescoreproperty is now optional.
- Flat for Education:
AssignmentandAssignmentUpdate: AddedfreeRecord, the configuration for Free Record assignments.GET /eduResources(listEduResources): Theparentdocumentation points atlistEduLibrariesfor the library ids you can pass, rather than listing them.
- Errors:
FlatErrorResponse: AddedproviderMessage, a localized message from an upstream provider (for example Google Classroom) when a request fails on their side.
v2.24.0
- Optical Music Recognition (OMR), Beta API: New resumable
/omrAPI to import sheet music images and PDFs, with live progress and an optional interactive instrument-review step. The/omr/jobsendpoints cover the full job lifecycle (create, upload files, start, poll, review, export to MusicXML/MIDI, cancel), andGET /omr/capabilitiesadvertises limits and credits for feature detection. Added theomrOAuth2 scope; importing the result into the Library (output: library) additionally requiresscores. See the OMR API guide. This API is in Beta and may change before the stable release: keep a generic fallback for open-ended values (statuses, step and error codes) and expect breaking changes to be announced. - Scores:
POST /scores(builder import): The instruments list now references the Instrument IDs reference and the@flat/instrumentspackage for the possiblegroupandinstrumentvalues.
- Flat for Education:
POST /organizations/{organization}/users(createOrganizationUser): Added theaccountAdminrole option (UserCreation).
v2.23.0
Asynchronous PDF import with OMR (Optical Music Recognition), see the Importing PDFs with OMR guide
POST /scores: addedsupportsTaskson file imports. Whentrueand the imported file requires OMR (e.g. a PDF), the API responds202 Acceptedwith aTaskreference instead of the score.- New
import-omrtask type. Clients pollGET /tasks/{task}untilstate: done, then read the new score id from the task'sscorefield. POST /scores: the200response now returns thex-flat-score-revisionandx-flat-score-revision-dateheaders.
Flat for Education
- Added the
accountAdminorganization role (OrganizationRole, organization invitation creation, and the role search parameter).
v2.22.0
-
Score Import & Export - 15+ import formats documented, new
.flatexport:POST /scores: Expanded the list of supported import formats with detailed documentation. MusicXML and MIDI are the preferred formats; also supported via conversion: Guitar Pro, MuseScore, ABC notation, PowerTab, Capella, MEI, Overture, TablEdit, Band-in-a-Box, Karaoke MIDI, MuseData, Score Writer, Bagpipe Music Writer, and Encore.GET /scores/{score}/revisions/{revision}/{format}: Addedflatexport format for native Flat compressed files (.flat).ScoreDetails: Addedmeproperty with information about the authenticated user's relationship to the score.
-
Collections - Simplified library navigation with virtual collections replacing the legacy folder hierarchy (blog: Library Design Revamp):
- New virtual collections:
allScores,collaborations, andlikesreplace the deprecatedrootandsharedWithMecollection types. GET /collections(listCollections): New defaultparent=userreturns all user collections including virtual ones. AddedmodificationDatesort option.Collection: AddedisPinned,labelKey, andmodificationDateproperties.POST /collections/{collection}/untrash: Deprecated. Collections untrashing is no longer supported.- Updated collection parameter descriptions across all endpoints to document the new virtual collections and deprecate
root/sharedWithMe.
- New virtual collections:
-
Flat for Education:
- Assignments & Rubrics - Rubric grading, video/audio performance recordings, and group submissions (blog: Performance Assignments upgrade, Grading Composition Assignments):
- Performance assignments: Added
recordingType(audio/video),allowBackingTrack,allowMetronome, andallowSpeedChangeoptions. - Group submissions: Added
submissionStudentsMode(single/group) for shared writing assignments, withassignedGroupsonClassAssignment. See blog: Introducing Shared Writing. - Rich text: Added
descriptionHtmlandteacherInstructionsHtmlon assignments,sharingDescriptionHtmlon education resources. ClassAttachmentCreation: AddedpartUuid,revision, andteacherOnlyproperties.
- Performance assignments: Added
- Student Groups - Manage student sub-groups for shared writing and group submissions (blog: Back to School updates):
- New CRUD endpoints for student sub-groups:
GET /groups(listGroups),POST /groups(createGroup),PUT /groups/{group}(renameGroup),DELETE /groups/{group}(deleteGroup). - New membership endpoints:
POST /groups/{group}/users(addGroupUser),DELETE /groups/{group}/users/{user}(removeGroupUser). - Groups can be filtered by classroom or assignment, and support test student tagging (
edu:testing-students). - New group types:
classStudentsSubGroupandassignmentStudentsSubGroup.
- New CRUD endpoints for student sub-groups:
- LTI Configuration - Unified LTI 1.1 and 1.3 configuration management, replacing the previous credentials-only API (blog: LTI 1.3 Integration):
- New CRUD endpoints under
/organizations/lti/configurations. - Supports LTI 1.1 manual, LTI 1.3 manual, LTI 1.3 dynamic registration, and LTI 1.3 deployment-based configurations.
- Added
enableEmailMatchingoption to control email-based user matching during LTI authentication. - Previous LTI 1.1 credentials endpoints (
/organizations/lti/credentials) are now deprecated. LTI 1.1 configurations can now be managed through the new unified endpoints.
- New CRUD endpoints under
- Score Tracks:
GET /scores/{score}/tracks(listScoreTracks): Added documentation for access control on performance submission tracks (student vs. teacher visibility).
- Organization & Users - Test account management, email verification, and improved class metadata:
GET /organizations/usersandGET /organizations/users/count: AddedtestAccountsfilter to include/exclude test student accounts.UserDetailsAdmin: AddedisEduTestingStudentproperty.UserDetails: AddedisEmailVerifiedproperty.OrganizationInvitation: AddedhtmlUrlwith a direct join URL.ClassDetails: AddedmodificationDate, and now requirescreationDate,name,state. Updatedltiproperty to cover LTI 1.1 and 1.3 context withhasNrpsService.
- Resource Library - Rich text descriptions and assignment type selection on resource creation:
EduResourceandEduResourceCreation: AddedsharingDescriptionHtmlfor rich text sharing descriptions.EduResourceCreation: Addedresourceproperty for assignment-specific creation options (e.g., assignment type).EduLibrary: Renamed library type fromflatEduSamplestoflatEduContent.
- Microsoft Teams Integration - Scheduled assignments and individual student targeting:
MicrosoftGraphAssignment: AddedassignDateTimefor scheduled assignments,assignToType(class/individual) andassignedStudentsMsIdsfor individual assignment targeting. Expandedstateenum withscheduledandinactivestatuses.
- Assignments & Rubrics - Rubric grading, video/audio performance recordings, and group submissions (blog: Performance Assignments upgrade, Grading Composition Assignments):
-
Accounts & Profiles:
UserPublic: AddedallPublicScoresCountproperty. Removed deprecatedinstrumentsproperty.UserCreation: Locale is now a free-form string (auto-normalized) instead of a strict enum.- Improved
TutteoProductdescriptions with links to each product.
-
Statistics:
- Added
yearlycounts toScoreCommentsCounts,ScoreLikesCounts,ScorePlaysCounts, andScoreViewsCounts.
- Added
-
Deprecations & Removals:
- Removed
FlatLocalesenum schema, replaced byFlatLocalesStringwith auto-normalization. - Removed unused
billingrole fromOrganizationRoles. - Deprecated
POST /collections/{collection}/untrash(untrashCollection). - Deprecated LTI credentials endpoints in favor of the new unified configuration API.
- Deprecated
rootandsharedWithMecollection parent aliases (useuserinstead). - Deprecated
staffIdxonScoreCommentContext.
- Removed
v2.21.0
-
Scores & Library:
GET /users/{user}/scores: As planned in 2020, this endpoint has been updated to only return public scores for user community profiles. The endpoint has also a new pagination system and sorting options.ScoreDetails: AddededitHtmlUrl,instrumentsNamesandscheduledDeletionDateproperties.Collection: Addedcontents.scoresCountproperty.
-
Flat Community profiles:
UserPublicnow includeslikesCountandplaysCountproperties.
-
Flat for Education:
GET /eduResources:- Added options
withoutSubfoldersResources,assignmentTypes,subjects, andgradesto filter content. - Added new response headers
X-Total-Assignments-CountandX-Total-Folders-Count.
- Added options
EduResource: AddedsharingDescription,subjects,gradesandcapabilities.canChangePrivacyproperties.EduResourceFolder: AddedassignmentsTypesandresourcesCountproperties.Assignment: AddedrestrictPlayNoteandrestrictToAudioTracksproperties.AssignmentSubmission: Updated LTI to support LTI 1.1 and 1.3 (lti.gradeServiceproperty).ScoreTrack: Addedpurposeproperty.
v2.20.1
v2.20.0
- Accounts:
- feat(account): Added pagination to
GET /users/{user}/likesand fixed typo in operationId. - feat(account): Added
productonUserDetailsto know the product the user is using.
- feat(account): Added pagination to
- Score Library:
- feat(library): Added
collaboratorTypetoResourceRightsto know if the user accessing a resource is the owner, user or group collaborator. Adjusted non-optional properties onResourceRights. - feat(library): Added
datetoResourceCollaboratorwith the date the collaborator was added. - feat(score): Added new
mainKeySignature,highlightedDateandorganizationproperties toScoreDetails. Adjusted non-optional properties onScoreDetails. - feat(score): Added new
purposeproperty toScoreTrack. Adjusted non-optional properties onScoreTrack. - feat(score): Added new
googleDriveDisabledoption when copying score (POST /scores/{score}/fork).
- feat(library): Added
- Flat for Education:
- feat(edu): Some Flat for Education invitatons can be re-used multiple times.
- fix(edu): Flat for Education invitatons can only be used to create
adminorteacheraccounts, fixedorganizationRoleenum. - feat(edu): Added new
verifyIfNotAlreadyInResourceLibraryoption toPOST /classes/{class}/assignments/{assignment}/copyto avoid copying to the Resource Library if the assignment is already in it. - fix(edu): Fixed
ClassAttachmentCreationenum values to reflect the current state of our product. - feat(edu): Added
playbackandltiproperties toAssignmentSubmission. - fix(edu):
commentsobject has never been available inAssignmentSubmissionUpdate, only inAssignmentSubmission. - feat(edu): Added
gradedstate for submissions. - feat(edu): Added
organizationResourceslibrary type toGET /eduResources/libraries, and addedorganizationPublicenum value toEduResourcePrivacy. - feat(edu): Added new
privacyproperty toPUT /eduResources/{resource} - fix(edu): Removed unused property
alternateLinkfromMicrosoftGraphSubmission.
- fix(schema): missing
required: trueon some POST/PUT bodies.