Flat REST API Changelog β
We regularly update our API and services, you can discover all the changes to our public specification. While we try to avoid breaking changes during the Beta Period, they will be written below in bold if any.
v2.21.0 (2024-10-18) β
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 (2024-03-11) β
- Keep
rightsproperty optional onScoreDetails
v2.20.0 (2024-03-08) β
- 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.
v2.19.0 (2023-08-25) β
- feat(edu): added new
POST /eduResources/{resource}/createLtiLinkendpoint to create LTI links from Flat for Education resources. - feat(edu): maximum graded has been increased from 100 to 10000.
- feat(score): new nullable properties in
PUT /scores/{score}to unset properties (subtitle,composer,lyricist,arranger,description,creationType,license,licenseText). - fix(score): wrong user object in
ScoreSummary, returned object has more properties than the specification (UserPublic). - fix(spec): various properties marked as required as they will always be returned.
v2.18.0 (2023-05-05) β
- feat(edu): Released Resource Library API in beta (
/eduResources) with new OAuth 2 scopesedu.resourcesandedu.resources.readonly. - feat(edu): Updated
POST /classes/{class}/assignments/{assignment}/copyto allow to copy to Resource Library. - feat(edu): Updated
DELETE /classes/{class}/assignments/{assignment}/submissions/{submission}behavior, now only resets the submission instead of deleting it. - feat(edu): Added
POST /classes/{class}/testStudentto create testing student accounts. - feat(edu): Operation
POST /classes/{class}/assignmentshas been renamed fromcreateAssignment->createClassAssignmentin schema. - feat(edu):
Assignmentmodels now include a newcapabilitiesproperty returning which actions are possible with a specific resource (canEdit,canPublishInClass,canPublishInClassError,canArchive,canUnarchive). - feat(edu):
Assignmentmodels now include a newuseDedicatedAttachmentsproperty to know if the underlying resources are dedicated and stored inside the assignment (new behavior with the resource library). - feat(edu):
ClassAssignmentnow includes a newissueproperty to return any issues encountered with the assignment. - feat(edu):
toolsetid provided when creating or updated assignments will now make a copy of the toolset to have a dedicated object for the assignment. - feat(edu):
AssignmentSubmissionHistorynow includes thesourceof the change, when this one comes from a third party (Google Classroom, Microsoft Teams, LTI). It also includes the following new properties:dueDate,commentandattachment.title. - feat(edu):
UserDetailsnow contains Microsoft Sign in details (azureDetails) and list of groups the user is part of (groups). - feat(edu): Added optional metadata on class objects (
level,skillsFocused,size). - fix(edu): Fixed
ClassAttachmentCreationenum values to reflect the current state of our product. - feat(scores): Updated
GET /scores/{score}/revisions/{revision}now returns thestartDateandendDatefor the score revisions. - feat(scores): Updated
POST /scoresto addhasQuarterToneon score builders to enable quarter tones on score parts. - feat(scores): Updated
POST /scores/{score}/forkto add option to keep original title during a file copy (keepOriginalTitle). - fix(schema): Added missing required properties on models
ScoreSummary,MediaAttachmentandFlatErrorResponse.
v2.17.0 (2022-03-23) β
- feat(collections): Add new dedicated App Collections. When creating new scores, by default Flat will add the scores to a dedicated collection for the 3rd party app. This collection is automatically created in the user account and has a new alias
appthat can be used in the URLs paths.
v2.16.0 (2021-12-11) β
- feat(scores): added
POST /scores/{score}/revisions/{revision}/{format}/taskto create a new export task for a score andGET /tasks/{task}to fetch the progress of an export task.
v2.15.0 (2021-11-10) β
- feat(edu): added
POST /organizations/users/{user}/signinLinkto allow admins to create sign in links for their organization's users. - feat(edu): added
POST /organizations/users/{user}/accessTokento allow admins to create delegated access tokens for their organization's users. - feat(locale): added
ja-HIRA - feat(comments): added
moderationobject on public comments - feat(scores): added
defaultTrackoption toGET /scores/{score}/revisions/{revision}/{format}to return mp3 tracks when a mp3 is set as default track. - DEPRECATED: removed
onlyCachedoption fromGET /scores/{score}/revisions/{revision}/{format}since only cached files are now returned for audio exports.
v2.14.0 (2021-10-04) β
- feat(scores):
POST /v2/scoreshas a new score builder to easily create blank scores without the need of importing a MusicXML file. Provide a list of instruments to use, and optionally customize the time signature, key signature, enable TABs, Chord grids as well as the page layout. - feat(edu):
POST /v2/organizations/usershas support for roles. - feat(edu): added new
shuffleExercisesoption for worksheets. - feat(edu): added new
exercisesIdsin students submissions.
v2.13.0 (2021-07-19) β
- feat(scores):
GET /v2/scores/{score}/trackshas new query strings:listAutoTrackto fetch tracks automatically generated & synced (playback available as a MP3 file).assignmentto filter tracks related to a Flat for Education assignment.
- feat(scores): added
GET /v2/scores/{score}/revisions/{revision}/synchronizationPointsto fetch synchronization points automatically generated from latest MP3 playback file. - feat(scores):
GET /v2/scores/{score}/revisions/{revision}/{format}has a new query stringurlto fetch the CDN URL of the exported file in the JSON body. - feat(edu): added
DELETE /v2/classes/{class}/assignments/{assignment}/submissions/{submission}to let teachers reset students' submissions. - feat(edu): added detected
issueson classes with the list fo accounts that couldn't be added to the classes during synchronizations. - feat(edu): added
microsoftGraphproperty on assignments with the Microsoft Teams assignmentsstate, URLs (alternateLink) andcategories. - feat(edu): added
microsoftGraphproperty on submissions with the Microsoft Teams submissionsstateand URLs (alternateLink). - feat(edu):
POST /v2/classes/{class}/assignments/{assignment}/copyhas a new propertyscheduledDateto schedule assignments copies. - feat(edu): added
trackproperty to submissions for performance assigments saved audio tracks. - feat(account): added a
coverPictureproperty with the URL of the profile cover picture, andpictureFileandcoverPictureFilecontaining the ID of the corresponding files. - feat(account):
GET /v2/mehas a newonlyIdquery string to quickly fetch current user id.
v2.12.0 (2021-02-18) β
- update(scores):
ResourceCollaboratornow includes ainvitedboolean property to know if the collaborator is still a pending invite. - feat(assignments): Export grades as CSV and Excel files (
GET /classes/{class}/assignments/{assignment}/submissions/csvand/classes/{class}/assignments/{assignment}/submissions/excel) - update(assignments): Assignment creation (
POST /classes/{class}/assignments) and assignments objects now include atype(AssignmentType). - update(assignments): Assignments objects (
Assignment) now include a cover URL (cover) and the corresponding file identifier (`coverFile). - update(assignments): Assignment copy (
POST /classes/{class}/assignments/{assignment}/copy) now accepts an optionalassigmentidentifier. This can be used to override a draft assignment with the content from another assignment. - style: Lint OpenAPI v3 specification
v2.11.0 (2020-10-26) β
- feat(edu):
PUT /organizations/users/{user}has new parameters to edit accounts:username,firstname,lastname,email. - feat(edu):
POST /classes/{class}/assignmentshas new parameters:toolsetid to enable a toolset for the assignment.nbPlaybackAuthorizedto limit the number of time the playback can be usedmaxPointsfor grading purposegoogleClassroom.topicIdto add the assignment under a specific Google Classroom course topicassigneeModeandassignedStudentsto assign specific studentslockScoreTemplateto lock assigned templatesdueDateandscheduledDateare nullable to unset properties- returns new information about LTI assigments, Canvas assignments and MusicFirst assignments
- feat(edu):
PUT /classes/{class}/assignments/{assignment}/submissionshas:- New parameters for grading (
draftGrade,grade) - A new parameter for teacher to return a submission (
return) and - Computed comments counters (
comments) - Returned object
AssignmentSubmissionnow includesmaxPointsfor the maximum number of points when the grade was set.
- New parameters for grading (
- feat(edu): New endpoints under
/classes/{class}/assignments/{assignment}/submissions/{submission}/commentsto create, list, update and delete comments for the submission. - update(scores):
GET /scores/{score}/revisions/{revision}/{format}query stringpartsnow only accepts parts UUIDs. - update(edu):
GET /organizations/usersquery stringlicenseExpirationDatenow also acceptsactiveandnotActivevalues, and has a new query optiononlyIds - DEPRECATED:
PUT /classes/{class}/assignments/{assignment}/submissionsparametersstudentCommentandreturnFeedbackhave been removed.returnFeedbackhas been replace by a booleanreturnto return a submission as a teacher.
v2.10.0 (2020-06-03) β
- feat(edu):
POST /v2/organizations/usersnow accepts optionalfirstnameandlastname - update(edu):
GET /v2/organizations/usersnow accepts sort options and filters - feat(edu): added
GET /v2/organizations/users/countto count users matching specified filters - feat(edu): removed deprecated
roleproperty fromPOST /organizations/invitations(previously renamed toorganizationRole) - feat(assignments): added
POST/DELETE /v2/classes/{class}/assignments/{assignment}/archiveto archive/unarchive assignments - feat(assignments): returned assignments object from
GET /v2/classes/{class}/assignments/{assignment}now includes the main type of the assignment:newScore,scoreTemplareorsharedWriting. - feat(edu): users returned by
GET /v2/groups/{group}/userscan now be filtered by the sync source:googleClassroom,microsoftGraphorclever. - feat(scores): scores details returned by
GET /v2/scores/{score}(and similar) now includes the audio samples list used by our playback. Theinstrumentsproperty now includes a normalized list of instruments that is not dependent from the samples used.
v2.9.0 (2020-01-10) β
- Schema is now using OpenAPI 3.0.2 (previous schemas were using OpenAPI 2)
- feat(scores): New metadata and update of
GET/PUT /v2/scores/{score}:arrangerproperty has been addedplaysstatistics are now returned (ScorePlaysCounts)
- feat(scores): New
nowproprty on theDELETEmethod to schedule a deletion to be executed shortly (avoid keeping in trash) - feat(edu): Attachments (
MediaAttachmentandClassAttachmentCreation) have new typegoogleDrivefor attached Drive file, and a newgoogleDriveFileIdproperty. If the attachment is agoogleDriveitem, theiconUrlandmimeTypeproperties are also returned - feat(edu): Add
microsoftGraphinfo toClassDetails(e.g.GET /v2/classesandGET /v2/classes/{class}) - feat(account): Add
firstnameandlastnameproperties for education accounts
v2.8.0 (2019-04-27) β
- feat(scores): New metadata and update of
PUT /v2/scores/{score}:subtitle,composer,lyricistandlicenseTextproperties has been added- when updating
title,subtitle,composer,lyricistandlicenseTextvia the API, the modifications events will be pushed to our real-time engine, and a new version will be scheduled (asynchronous) descriptioncan now be up to 2000 characters (was previously 1000)
- feat(submissions): Added education submissions states (
created,turnedIn,returned) - feat(revisions): Return the last modification
eventwhen fetching a revision metadata (UUID) - feat(locale): added Turkish (
tr) - feat(licenses): added new license source
appStore - feat(user): added
isFlatTeamproperty to public profiles - chore(specs): Inline schemas
UserInstruments,ResourceSharingKey,ScoreData,ScoreDataEncoding,CollectionTitle
v2.7.0 (2018-09-11) β
- update(spec): specify
producesandconsumeson endpoints instead of globally - feat(scores): now support Guitar Pro (GP3, GP4, GP5, GPX, GP), PowerTab, TuxGuitar and MuseScore files in POST /scores
- feat(scores): add support for
filenamewhen importing scores - feat(collections):
parentcollection can now be a collection id when listing collections - feat(collections): includes parent collections when listing scores
- feat(collections): add
creationDateproperty in collection details - feat(comments): add
staffUuidfor contextualized comments, which will completely replacestaffIdxin the future - feat(rights): now return a
isCollaboratorboolean property with the Score or Collection rights - update(account): added new locales supported
v2.6.0 (2018-04-23) β
- feat(collections): Add new Collections API endpoints
POST /collections: Create new collectionGET /collections: List collectionsGET /collections/{collection}: Get collection detailsPUT /collections/{collection}: Update collection detailsDELETE /collections/{collection}: Delete collectionPOST /collections/{collection}/untrash: Untrash collectionGET /collections/{collection}/scores: List scores contained in a collectionPUT /collections/{collection}/scores/{score}: Add a score to a collectionDELETE /collections/{collection}/scores/{score}: Remove a score from a collection
- feat(collections): Add new OAuth2 scopes for new features:
collections.readonly: Allow read-only access to a user's collections.collections.add_scores: Allow to add scores to a user's collections.collections: Full, permissive scope to access all of a user's collections.
- feat(score): Added new method to untrash a score (
POST /v2/scores/{score}/untrash) - feat(score):
DELETE /v2/scores/{score}can now be used without admin rights. This new behavior will unshare the score from the current account. - feat(score):
POST /scores/{score}/forknow accepts a collection identifier to copy a score to a specific collection. - feat(comments): Comments can now be filtered by type with the new query string
type(documentorinline). - update(openapi): Some schema definitions have been renamed, they are now used for Scores and Collections
ScoreRights->ResourceRightsScoreCollaborator->ResourceCollaboratorScoreCollaboratorCreation->ResourceCollaboratorCreation- existing score sharing key ->
ResourceSharingKey
- DEPRECATED:
GET /scores/{score}/revisions/{revision}/{format}no longer support part indexes for single/set of parts exports, but our own part UUIDs. - DEPRECATED on 2019-09-01:
GET /users/{user}/scoreswill no longer list private and shared scores, but only public scores of a Flat account.
v2.5.2 (2018-02-07) β
- fix(score): missing ScoreRights.aclRead type
v2.5.1 (2018-01-16) β
- fix(user): Add missing escape in
pattern(UserCreation.username).
v2.5.0 (2017-10-22) β
- feat(scores): Add video & audio tracks support for scores:
/v2/scores/{score}/tracks.
v2.4.0 (2017-10-02) β
- feat(scores): New metadata and update of
PUT /v2/scores/{score}:- Added metadata in API
subtitle,lyricist,composer,description,tags,creationType,license,licenseText,durationTime,numberMeasures,mainTempoQpm,publicationDate. PUT /v2/scores/{score}: Removetitleproperty, this one can be updated by saving a new revision of the score data.PUT /v2/scores/{score}: New settable properties:description,tags,creationType,license.
- Added metadata in API
v2.3.0 (2017-08-28) β
- feat(user): Add profile theme and instruments played.
- feat(edu): Add new cursor-based pagination for
GET /v2/organizations/usersandGET /v2/organizations/invitations. - feat(edu): Add new methods:
PUT /v2/organizations/users/{user}: Admin endpoint to update managed accounts.DELETE /v2/organizations/users/{user}: Admin endpoint to delete or convert edu accounts to consumer accounts.
- feat(edu): Classes have a new state
inactivethat can be activated using the new methodPOST /v2/classes/{class}/activate. - feat(edu): Assignments have a new state
draftand can have a new attachment typeexercise. - feat(edu): Return Canvas LMS Instance domain in classes details
- feat(edu): Return Clever.com section information in classes details
v2.2.0 (2017-07-02) β
- feat(edu): Public release of the first education APIs:
/v2/classes: Classes management/v2/classes/{class}/assignments: Flat Assignments and Submissions/v2/organizations/users: Organization accounts management/v2/organizations/invitations: Organization invitations for admins and teachers/v2/organizations/lti/credentials: LTI credentials management/v2/groups/{group}and/groups/{group}/users: List of groups and users part of groups/v2/scores/{score}/submissions: Submissions linked to a score
- feat(edu): New OAuth2 scopes:
edu.classes: Full, permissive scope to manage the classes.edu.classes.readonly: Read-only access to the classes.edu.assignments: Read-write access to the assignments and submissions.edu.assignments.readonly: Read-only access to the assignments and submissions.edu.admin: Full, permissive scope to manage all the admin of an organization.edu.admin.lti: Access and manage the LTI Credentials for an organization.edu.admin.lti.readonly: Read-only access to the LTI Credentials of an organization.edu.admin.users: Access and manage the users and invitations of the organization.edu.admin.users.readonly: Read-only access to the users and invitations of the organization.
- fix(spec): Add missing scopes in specification for
GET /v2/scores/{score}/revisions/{revision}andGET /v2/scores/{score}/revisions/{revision}/{format}
v2.1.0 (2017-04-17) β
- feat(scores): Add support of private links sharing with
sharingKey. - feat(comments): Make "revision" optional when creating comments and support of "last" keyword.
- fix(revisions): Missing
idproperty inScoreRevision. - update(spec): Specify
binaryresponse type forGET /v2/scores/{score}/revisions/{revision}/{format}
v2.0.0 (2017-04-10) β
- chore(api): First API public release with
/v2/me,/v2/scores,/v2/usersand/v2/groups.