openapi: 3.2.0 info: description: API to manage CoorpAcademy brands version: 1.412.0 title: Platform Brands API servers: - url: https://platform.coorpacademy.com/api/v1 tags: - name: Brands paths: /brands: get: tags: - Brands summary: Brands description: List of brands operationId: brandsGET parameters: - name: issuer in: query description: filter brands by issuer required: false schema: type: string security: - authentication: [] responses: '200': description: An array of brands content: application/json: schema: $ref: '#/components/schemas/Brands' default: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' x-swagger-router-controller: brands post: tags: - Brands summary: Create a new brand description: Create a new brand operationId: brandsPOST security: - authentication: [] responses: '200': description: Created brand content: application/json: schema: $ref: '#/components/schemas/Brand' default: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' x-swagger-router-controller: brands requestBody: content: application/json: schema: $ref: '#/components/schemas/NewBrand' description: A brand required: true /brands/list: get: tags: - Brands summary: Brands description: List of brands ids operationId: brandsListGET security: - authentication: [] responses: '200': description: An array of brands content: application/json: schema: $ref: '#/components/schemas/BrandsList' default: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' x-swagger-router-controller: brands /brands/{id}/exist: get: tags: - Brands summary: Check if brand exist description: Check if brand exist operationId: brandsIdExistGET security: - authentication: [] parameters: - name: id in: path description: Id of the brand required: true x-example: digital schema: type: string pattern: ^[a-z][a-z0-9-]{0,39}[a-z0-9]$ responses: '200': description: An existing status content: application/json: schema: $ref: '#/components/schemas/Boolean' '404': description: An non-existing status content: application/json: schema: $ref: '#/components/schemas/Error' default: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' x-swagger-router-controller: brands /brands/{id}/metadatas: post: tags: - Brands summary: extract brand sso config info from metadata.xml description: extract brand sso config info from metadata.xml. it does not creates server side object, it just parses xml & send a json config back operationId: brandsIdSSOPOST security: - authentication: [] parameters: - name: id in: path description: Id of the brand required: true x-example: digital schema: type: string pattern: ^[a-z][a-z0-9-]{0,39}[a-z0-9]$ responses: '200': description: un-XMLized metadata's info content: application/json: schema: $ref: '#/components/schemas/Boolean' '404': description: An non-existing status content: application/json: schema: $ref: '#/components/schemas/Error' default: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' x-swagger-router-controller: brands requestBody: content: application/json: schema: type: string description: metadata.xml content required: true /brands/{id}: get: tags: - Brands summary: Get an existing brand description: Get an existing brand operationId: brandsIdGET security: - authentication: [] parameters: - name: id in: path description: Id of the brand required: true x-example: digital schema: type: string responses: '200': description: A brand content: application/json: schema: $ref: '#/components/schemas/Brand' default: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' x-swagger-router-controller: brands put: tags: - Brands summary: Update an existing brand description: Update an existing brand operationId: brandsIdPUT security: - authentication: [] parameters: - name: id in: path description: Id of the brand required: true x-example: digital schema: type: string responses: '200': description: Updated brand content: application/json: schema: $ref: '#/components/schemas/Brand' '400': description: A validation error content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: brand not found content: application/json: schema: $ref: '#/components/schemas/Error' default: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' x-swagger-router-controller: brands requestBody: content: application/json: schema: $ref: '#/components/schemas/Brand' description: Body of the brand required: true delete: tags: - Brands summary: DELETE an existing brand description: DELETE an existing brand operationId: brandsDELETE security: - authentication: [] parameters: - name: id in: path description: Id of the brand required: true x-example: digital schema: type: string - name: brandName in: header description: Id of the brand required: true schema: type: string responses: '202': description: delete brand by id content: application/json: schema: $ref: '#/components/schemas/Brand' '400': description: missing header content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: brand not found content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: header brandName value is not the same as given id parameter content: application/json: schema: $ref: '#/components/schemas/Error' default: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' x-swagger-router-controller: brands /brands/{id}/migrate: post: tags: - Brands summary: Migrate an existing brand description: Migrate an existing brand operationId: brandsIdMigratePOST security: - authentication: [] parameters: - name: id in: path description: Id of the brand required: true x-example: digital schema: type: string - name: clusterFrom in: query description: Original cluster of brand required: true x-example: coorp-clust-web-2 schema: type: string - name: clusterTo in: query description: Destination cluster the brand required: true x-example: coorp-clust-web-1 schema: type: string responses: '200': description: Migration status content: application/json: schema: $ref: '#/components/schemas/BrandMigrationStatus' default: description: Unexpected error content: application/json: schema: $ref: '#/components/schemas/Error' x-swagger-router-controller: brands components: schemas: OIDCPayload: type: object properties: auth: type: object properties: authorizationURL: type: string clientID: type: string clientSecret: type: string issuer: type: string scope: type: string tokenURL: type: string userInfoURL: type: string responseMode: type: string nonce: type: boolean skipUserProfile: type: boolean authorizationParams: type: object properties: resource: type: string userMapping: $ref: '#/components/schemas/userMappingPayload' userMappingPayload: type: object properties: uniqueLogin: $ref: '#/components/schemas/UserMappingValue' emails: type: array items: type: object properties: value: $ref: '#/components/schemas/UserMappingValue' name: type: object properties: familyName: $ref: '#/components/schemas/UserMappingValue' givenName: $ref: '#/components/schemas/UserMappingValue' provider: $ref: '#/components/schemas/UserMappingValue' language: $ref: '#/components/schemas/UserMappingValue' providerInfos: type: object additionalProperties: $ref: '#/components/schemas/UserMappingValue' roles: type: array items: $ref: '#/components/schemas/UserMappingValue' organizations: type: array items: type: object properties: name: $ref: '#/components/schemas/UserMappingValue' title: $ref: '#/components/schemas/UserMappingValue' branch': $ref: '#/components/schemas/UserMappingValue' businessUnit: $ref: '#/components/schemas/UserMappingValue' workingCountry: $ref: '#/components/schemas/UserMappingValue' workingCity: $ref: '#/components/schemas/UserMappingValue' boutiqueReferent: $ref: '#/components/schemas/UserMappingValue' boutique: $ref: '#/components/schemas/UserMappingValue' address1: $ref: '#/components/schemas/UserMappingValue' address2: $ref: '#/components/schemas/UserMappingValue' zipcode: $ref: '#/components/schemas/UserMappingValue' region: $ref: '#/components/schemas/UserMappingValue' role: $ref: '#/components/schemas/UserMappingValue' contractType: $ref: '#/components/schemas/UserMappingValue' grade: $ref: '#/components/schemas/UserMappingValue' entity: $ref: '#/components/schemas/UserMappingValue' lmsId: $ref: '#/components/schemas/UserMappingValue' extendedField1: $ref: '#/components/schemas/UserMappingValue' extendedField2: $ref: '#/components/schemas/UserMappingValue' extendedField3: $ref: '#/components/schemas/UserMappingValue' ImportPayload: type: object properties: users: type: object properties: template: type: string BrandMigrationStatus: type: object properties: message: type: string description: Message status: type: string description: Status of migration brand: type: string description: Brand migrated cluster: type: string description: cluster migrated to NewBrand: type: object properties: hostname: type: string pattern: ^[a-z][a-z0-9-]{0,39}[a-z0-9]$ description: Web site host x-example: up skin: type: string description: Brand name used for skinning x-example: digital required: - hostname Slide: type: object properties: image: type: string description: Image url to be used as background for the slide align: type: string description: 'Text align on the slide. It should be one of these 3 values: ''left'', ''middle'', ''right''' style: type: string description: 'Color style for text on the slide. It should be one of these 2 values: ''light'', ''dark''' Boolean: type: object properties: value: type: boolean SSOPayload: type: object properties: enabled: type: boolean connectEnabled: type: boolean enableDefaultRoute: type: boolean type: type: string enum: - saml - oidc saml2: $ref: '#/components/schemas/SAMLPayload' oidc: $ref: '#/components/schemas/OIDCPayload' Brand: type: object properties: alias: type: string description: Unique name of the brand accross all etcd host: type: string description: Web site host payload: type: object $ref: '#/components/schemas/BrandPayload' Slider: type: object properties: start: type: object $ref: '#/components/schemas/Slide' resume: type: object $ref: '#/components/schemas/Slide' battle: type: object $ref: '#/components/schemas/Slide' Brands: type: array items: $ref: '#/components/schemas/Brand' BrandsList: type: array items: type: string SAMLPayload: type: object properties: authnRequestBinding: type: string enum: - HTTP-POST - HTTP-REDIRECT disableRequestedAuthnContext: type: boolean identifierFormat: type: string forceAuthn: type: boolean skipRequestCompression: type: boolean logoutUrl: type: string idpIssuer: type: string acceptedClockSkewMs: type: number minimum: 0 maximum: 100000 signatureAlgorithm: type: string enum: - sha1 - sha256 - sha512 cert: type: string entryPoint: type: string userMapping: $ref: '#/components/schemas/userMappingPayload' Error: type: object properties: success: type: boolean id: type: string status: type: integer format: int32 message: type: string BrandPayload: type: object properties: name: type: string description: Unique name of the brand description: type: string description: Description of the brand skin: type: string description: Brand name used for skinning moocName: type: string description: Name of the platform, used in the certification diploma x-example: Coorpacademy for digital default: Coorpacademy for digital teamName: type: string description: Name of the team behind the platform, used in emails x-example: Formation default: Formation teamEmail: type: string description: Email address, used in emails send by the application x-example: paul@coorpacademy.com default: paul@coorpacademy.com assistanceEmail: type: string description: Email address where requests regarding content would be sent x-example: assistance@coorpacademy.com contentCategoryName: type: string description: Name that will be used to categorize all the content created by your team x-example: custom default: custom sector: type: string description: Sector the company belongs to x-example: none default: none baseUrl: type: string description: The root site brand href defaultTimePerChapter: type: number description: default Time to complete a chapter x-example: 8 default: 8 sso: type: object $ref: '#/components/schemas/SSOPayload' language: type: object properties: default: type: string description: Default language supported: type: array description: Default language items: type: string import: type: object $ref: '#/components/schemas/ImportPayload' slider: type: object $ref: '#/components/schemas/Slider' autoPush: type: object properties: content-catalogue@cockpit-tutorial-course: type: boolean description: Activate tutorial course AutoPush content-catalogue@cockpit-catalog: type: boolean description: Activate coorpacademy catalog AutoPush content-cegos@cockpit-cegos: type: boolean description: Activate cegos catalog AutoPush content-catalogue@cockpit-escape-game: type: boolean description: Activate escape games AutoPush content-catalogue@cockpit-interactive-series: type: boolean description: Activate Interactive series AutoPush content-catalogue@cockpit-webinar: type: boolean description: Activate webinar AutoPush content-catalogue@cockpit-mandarine: type: boolean description: Activate mandarine AutoPush content-go1@cockpit-go1-prospect: type: boolean description: Activate go1 catalog (for Sales Team) content-catalogue@cockpit-faurecia-partners: type: boolean description: Activate faurecia partners AutoPush content-catalogue@cockpit-catalog-smb: type: boolean description: Activate catalog smb AutoPush emails: type: object properties: mandatory: type: object properties: welcome-import: type: boolean description: Activate welcome email for user flat import welcome-sso: type: boolean description: Activate welcome email for user SSO welcome-sign-up: type: boolean description: Activate welcome email for newly signed up user password: type: object properties: enforcePasswordRenewal: type: boolean description: Enforce password renewal policy x-example: true validityInDays: type: integer description: Number of days after which a password must be renewed x-example: 60 mustChangePassword: type: boolean description: Force password renewal at first connection x-example: false dashboardSections: type: object additionalProperties: type: - object - 'null' properties: type: type: string enum: - default - theme - goal - skill order: type: integer display: type: boolean recommendations: type: object properties: limit: type: number nbCustom: type: number lms: type: object additionalProperties: type: - object - 'null' properties: enabled: type: boolean type: type: string enum: - XAPI - CSOD - SAP - WORKDAY - SCORMISATION - GO1 - ORACLE endpoint: type: string proxyPathName: type: string clientId: type: string clientSecret: type: string materialTypeCourse: type: string materialTypeChapter: type: string materialTypeLevel: type: string materialTypeExternalContent: type: string provider: type: string course: type: boolean level: type: boolean chapter: type: boolean externalContent: type: boolean progression: type: boolean allowMultipleCompletedProgressions: type: boolean default: false subjectTitle: type: string tenantName: type: string watermark: type: - string - 'null' username: type: string password: type: string availabilities: type: boolean isKeywordsActivated: type: boolean offeringReport: type: string enrollmentReport: type: string topicId: type: string assessorId: type: string progressionRestreamDate: type: string availableLanguageSource: type: string supportedLanguages: type: array items: type: string userFilter: type: object properties: field: type: string allowedValues: type: array items: type: string diallowedValues: type: array items: type: string customAvailabilities: type: array items: type: object properties: __type: type: string IncludeSubs: type: boolean PreApproved: type: boolean RegisterUponApproval: type: boolean Id: type: string SubType: type: string chapterDescription: type: string customSupportedLocales: type: object properties: supported: type: object additionalProperties: type: array items: type: string default: type: string customFields: type: object properties: CONTACT: type: string SELF_RECORD_LRNGEVT: type: string CPNT_TYP_ID: type: string NOTACTIVE: type: string CPNT_ID: type: string CPNT_TITLE: type: string RTYP_ID: type: string DMN_ID: type: string CREDIT_HRS: type: number TGT_AUDNC: type: string SELF_ENRL: type: string USER_CAN_WAITLIST: type: string REV_DTE: type: string description: 'Date in format MMM-DD-YYYY hh:mm:ss A (for example : Nov-16-2020 11:30:51 AM )' apiType: type: object properties: type: type: string enum: - EXPRESS_CLASS facilitatorId: type: number authentication: type: object properties: type: type: string enum: - basic username: type: string password: type: string scopeUserId: type: string scopeCompanyId: type: string contactEmail: type: string sftp: type: object properties: username: type: string password: type: string host: type: string path: type: string titleTemplate: type: object properties: course: type: - string - 'null' example: '{{title}} -suffix' level: type: - string - 'null' example: '{{levelLocale}} {{title}} -suffix' chapter: type: - string - 'null' example: '{{title}} -suffix' externalContent: type: - string - 'null' example: '{{title}} -suffix' shortDescription: type: string prefixTitle: type: string ownedByPersonNumber: type: string globalAccessGroupNumber: type: string defaultCategory: type: string defaultOracleLanguage: type: string errorReportPath: type: string enableOneLanguagePerLo: type: boolean defaultUserFields: type: object description: Default user field values for GO1 and SCORMISATION user creation properties: familyName: type: string description: Default family name for users example: Doe givenName: type: string description: Default given name for users example: John email: type: string format: email description: Default email address for users example: user@example.com authEndpoint: type: string description: GO1 authentication endpoint URL portalId: type: string description: GO1 portal identifier loType: type: string enum: - link - dynamic description: GO1 learning object type createUsers: type: boolean description: Enable automatic user creation in GO1 progressionClientId: type: string description: GO1 progression client ID (optional) progressionClientSecret: type: string description: GO1 progression client secret (optional) progressionPortalId: type: string description: GO1 progression portal ID (optional) enrollmentEndpoint: type: string description: GO1 enrollment endpoint URL (optional) maintenance: type: object properties: enabled: type: boolean ip: type: array items: type: string x-example: 127.0.0.1 url: type: string features: type: object properties: mobile: type: boolean customExternalContent: type: boolean scormification: type: boolean enableScormMultilang: type: boolean bulkImport: type: object properties: enabled: type: boolean repository: type: string myLearning: type: object properties: enabled: type: boolean learnerFeatures: type: boolean learningPriorities: type: array items: type: object properties: type: type: string enum: - skill - playlist - certificate ref: type: string microsoftTeams: type: object properties: enabled: type: boolean tid: type: string externalTeamsAuth: type: boolean widgets: type: object properties: stonly: type: object properties: enabled: type: boolean issuer: type: string enum: - coorpacademy - smb version: type: number description: Incremental number to indicate a new version related to changes on config UserMappingValue: type: array items: type: string securitySchemes: authentication: type: apiKey name: authentication in: header