diff --git a/spec/swagger.yaml b/spec/swagger.yaml
index 3f4b45c..f665446 100644
--- a/spec/swagger.yaml
+++ b/spec/swagger.yaml
@@ -33,9 +33,9 @@ info:
name: Flat
url: https://flat.io/developers/docs/api/
email: developers@flat.io
- version: 2.13.0
+ version: 2.14.0
x-logo:
- url: https://flat.io/img/logo-flat.svg
+ url: https://prod.flat-cdn.com/img/logo-flat.svg
servers:
- url: https://api.flat.io/v2
tags:
@@ -114,7 +114,11 @@ paths:
- Score
summary: Create a new score
description: |
- Use this API method to **create a new music score in the current User account**. You will need a MusicXML 3 (`vnd.recordare.musicxml` or `vnd.recordare.musicxml+xml`), a MIDI (`audio/midi`), Guitar Pro (GP3, GP4, GP5, GPX, GP), PowerTab, TuxGuitar, or MuseScore file to create the new Flat document.
+ Use this API method to **create a new music score in the current User account**. This API endpoints provides 3 ways to create scores:
+
+ * `ScoreCreationBuilderData` : Create a blank score by providing the list of instruments to use. You can optionally customize the initial key signature, time signature, enable TABs, Chord grids, as well as the page layout.
+ * `ScoreCreationFileImport`: Import an existing MusicXML 3 file (`vnd.recordare.musicxml` or `vnd.recordare.musicxml+xml`), a MIDI file (`audio/midi`), Guitar Pro (GP3, GP4, GP5, GPX, GP), PowerTab, TuxGuitar, or MuseScore file to create the new Flat document.
+ * `ScoreCreationGoogleDriveImport`: Import an existing Google Drive file from the connected Google Drive account.
This API call will automatically create the first revision of the document, the score can be modified by the using our web application or by uploading a new revision of this file (`POST /v2/scores/{score}/revisions/{revision}`).
@@ -128,7 +132,10 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/ScoreCreation'
+ oneOf:
+ - $ref: '#/components/schemas/ScoreCreationBuilderData'
+ - $ref: '#/components/schemas/ScoreCreationFileImport'
+ - $ref: '#/components/schemas/ScoreCreationGoogleDriveImport'
required: true
responses:
200:
@@ -3762,6 +3769,14 @@ components:
format: password
locale:
$ref: '#/components/schemas/FlatLocales'
+ role:
+ description: Role of the new account
+ type: string
+ default: user
+ enum:
+ - user
+ - teacher
+ - admin
description: User creation
UserAdminUpdate:
type: object
@@ -4402,7 +4417,7 @@ components:
If the score is a file on Google Drive, this field property must contain its identifier. To use this method, the Drive file must be public or the Flat Drive App must have access to the file.
example:
googleDrive: 0B-0000000000000001
- ScoreCreation:
+ ScoreCreationCommon:
required:
- privacy
type: object
@@ -4416,24 +4431,8 @@ components:
- Use the title contained in the file (e.g. [`movement-title`](https://usermanuals.musicxml.com/MusicXML/Content/EL-MusicXML-movement-title.htm) or [`credit-words`](https://usermanuals.musicxml.com/MusicXML/Content/EL-MusicXML-credit-words.htm) for [MusicXML](http://www.musicxml.com/) files).
- Use the name of the file for files from a specified `source` (e.g. Google Drive) or the one in the `filename` property
- Set a default title (e.g. "New Music Score")
- filename:
- type: string
- description: If this is an imported file, its filename
privacy:
$ref: '#/components/schemas/ScorePrivacy'
- data:
- type: string
- description: |
- The data of the score file. It must be a MusicXML 3 file (`vnd.recordare.musicxml` or `vnd.recordare.musicxml+xml`), a MIDI file (`audio/midi`) or a Flat.json (aka Adagio.json) file.
- Binary payloads (`vnd.recordare.musicxml` and `audio/midi`) can be encoded in Base64, in this case the `dataEncoding` property must match the encoding used for the API request.
- example:
- dataEncoding:
- type: string
- description: The optional encoding of the score data. This property must match the encoding used for the `data` property.
- enum:
- - base64
- source:
- $ref: '#/components/schemas/ScoreSource'
collection:
type: string
description: |
@@ -4443,12 +4442,159 @@ components:
type: string
description: |
If the user uses Google Drive and this properties is specified, the file will be created in this directory. The currently user creating the file must be granted to write in this directory.
- description: A new created score
- example:
- title: My new score
- privacy: private
- data:
- googleDriveFolder: 0B-0000000000000000
+ ScoreCreationFileImport:
+ allOf:
+ - $ref: '#/components/schemas/ScoreCreationCommon'
+ - type: object
+ required:
+ - data
+ properties:
+ filename:
+ type: string
+ description: If this is an imported file, its filename
+ data:
+ type: string
+ description: |
+ The data of the score file. It must be a MusicXML 3 file (`vnd.recordare.musicxml` or `vnd.recordare.musicxml+xml`), a MIDI file (`audio/midi`) or a Flat.json (aka Adagio.json) file.
+ Binary payloads (`vnd.recordare.musicxml` and `audio/midi`) can be encoded in Base64, in this case the `dataEncoding` property must match the encoding used for the API request.
+ dataEncoding:
+ type: string
+ description: The optional encoding of the score data. This property must match the encoding used for the `data` property.
+ enum:
+ - base64
+ description: A newly created score from an imported file
+ example:
+ title: My new score
+ privacy: private
+ data: ...[Your actual file will be provided in this property]...
+ ScoreCreationGoogleDriveImport:
+ allOf:
+ - $ref: '#/components/schemas/ScoreCreationCommon'
+ - type: object
+ required:
+ - source
+ properties:
+ source:
+ $ref: '#/components/schemas/ScoreSource'
+ description: A newly created score from a file from Google Drive
+ example:
+ title: My new score
+ privacy: private
+ source:
+ googleDrive: 0B-0000000000000001
+ privacy: private
+ ScoreCreationBuilderData:
+ allOf:
+ - $ref: '#/components/schemas/ScoreCreationCommon'
+ - type: object
+ required:
+ - title
+ - builderData
+ properties:
+ builderData:
+ type: object
+ required:
+ - scoreData
+ properties:
+ scoreData:
+ required:
+ - instruments
+ type: object
+ properties:
+ useTabStaff:
+ type: boolean
+ description: true if the TAB staff is displayed with fretted instruments
+ useChordGrid:
+ type: boolean
+ description: true if the chord grid must be displayed with fretted instruments
+ fifths:
+ type: number
+ description: The key signature of the score (expressed between -7 and 7). Major C is used when the value is not provided.
+ nbBeats:
+ type: number
+ description: The number of beats in the measure
+ beatType:
+ type: number
+ description: The duration of a beat in the measure
+ instruments:
+ type: array
+ description: |
+ The list of instruments to add to the score.
+ See https://prod.flat-cdn.com/fixtures/instruments_en.json for the possible values for `group` and `instrument`.
+ items:
+ required:
+ - group
+ - instrument
+ type: object
+ properties:
+ group:
+ type: string
+ description: The of the instrument group (e.g. `keyboards`, `brass`)
+ instrument:
+ type: string
+ description: The identifier of the instrument (e.g. `piano`, `trumpet`)
+ longName:
+ type: string
+ description: The full name of the instrument
+ shortName:
+ type: string
+ description: The abbreviation of the name of the instrument
+ layoutData:
+ type: object
+ description: Control the appearance of the score. If missing, default values are used.
+ properties:
+ notesSpacingCoeff:
+ type: number
+ description: A float value >= 1 that controls the spacing between notes.
+ lengthUnit:
+ description: The unit to use for layout customizations
+ type: string
+ default: cm
+ enum:
+ - cm
+ - inch
+ pageHeight:
+ type: number
+ description: The height of the page in chosen unit (`lengthUnit`).
+ pageWidth:
+ type: number
+ description: The width of the page in chosen unit (`lengthUnit`).
+ pageMarginTop:
+ type: number
+ description: The top margin of the page in chosen unit (`lengthUnit`).
+ pageMarginBottom:
+ type: number
+ description: The bottom margin of the page in chosen unit (`lengthUnit`).
+ pageMarginLeft:
+ type: number
+ description: The left margin of the page in chosen unit (`lengthUnit`).
+ pageMarginRight:
+ type: number
+ description: The right margin of the page in chosen unit (`lengthUnit`).
+ example:
+ title: Violin and Piano
+ privacy: private
+ builderData:
+ scoreData:
+ fifths: 8
+ nbBeats: 2
+ beatType: 4
+ instruments:
+ - group: strings
+ instrument: hq-violin
+ - group: strings
+ instrument: hq-grand-piano
+ shortName: Pno.
+ longName: Super Piano
+ layoutData:
+ notesSpacingCoeff: 2
+ lengthUnit: cm
+ pageHeight: 29.7
+ pageWidth: 21
+ pageMarginTop: 1.5
+ pageMarginBottom: 1.5
+ pageMarginLeft: 2.5
+ pageMarginRight: 2.5
ScoreFork:
type: object
properties:
@@ -5376,6 +5522,9 @@ components:
items:
type: string
description: Identifiers for the students that have access to the assignment
+ shuffleExercises:
+ type: boolean
+ description: Mixing exercises for each students
description: Assignment creation details
example:
title: First assignment
@@ -5578,6 +5727,12 @@ components:
minimum: 0
maximum: 100
description: Optional grade. If unset, no grade was set.
+ exercisesIds:
+ type: array
+ nullable: true
+ items:
+ type: string
+ description: The ids of exercises when they need to be in a specific order
return:
type: boolean
description: If `true`, the submission will be marked as done
@@ -5650,6 +5805,12 @@ components:
maxPoints:
type: number
description: Optional max points for the grade. If set, a corresponding `draftGrade` or `grade` will be set.
+ exercisesIds:
+ type: array
+ nullable: true
+ items:
+ type: string
+ description: The ids of exercises when they need to be in a specific order
googleClassroom:
$ref: '#/components/schemas/GoogleClassroomSubmission'
microsoftGraph: