Coorpacademy Platform API

Brand (tenant) management for the Coorpacademy platform — create, read, update, delete and migrate brands, check brand existence, list brands, and extract SSO configuration from an uploaded SAML `metadata.xml`. Carries the SAML/OIDC/SSO payload schemas used to configure enterprise single sign-on per brand. 6 paths / 9 operations. Key-gated via an `authentication` header.

OpenAPI Specification

coorpacademy-platform-openapi.json Raw ↑
{"swagger":"2.0","info":{"description":"API to manage CoorpAcademy brands","version":"1.412.0","title":"Platform API"},"host":"platform.coorpacademy.com","basePath":"/api/v1","schemes":["https"],"produces":["application/json"],"securityDefinitions":{"authentication":{"type":"apiKey","name":"authentication","in":"header"}},"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,"type":"string"}],"security":[{"authentication":[]}],"responses":{"200":{"description":"An array of brands","schema":{"$ref":"#/definitions/Brands"}},"default":{"description":"Unexpected error","schema":{"$ref":"#/definitions/Error"}}},"x-swagger-router-controller":"brands"},"post":{"tags":["Brands"],"consumes":["application/json"],"summary":"Create a new brand","description":"Create a new brand","operationId":"brandsPOST","parameters":[{"name":"brand","in":"body","description":"A brand","required":true,"schema":{"$ref":"#/definitions/NewBrand"}}],"security":[{"authentication":[]}],"responses":{"200":{"description":"Created brand","schema":{"$ref":"#/definitions/Brand"}},"default":{"description":"Unexpected error","schema":{"$ref":"#/definitions/Error"}}},"x-swagger-router-controller":"brands"}},"/brands/list":{"get":{"tags":["Brands"],"summary":"Brands","description":"List of brands ids","operationId":"brandsListGET","security":[{"authentication":[]}],"responses":{"200":{"description":"An array of brands","schema":{"$ref":"#/definitions/BrandsList"}},"default":{"description":"Unexpected error","schema":{"$ref":"#/definitions/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,"type":"string","pattern":"^[a-z][a-z0-9-]{0,39}[a-z0-9]$","x-example":"digital"}],"responses":{"200":{"description":"An existing status","schema":{"$ref":"#/definitions/Boolean"}},"404":{"description":"An non-existing status","schema":{"$ref":"#/definitions/Error"}},"default":{"description":"Unexpected error","schema":{"$ref":"#/definitions/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,"type":"string","pattern":"^[a-z][a-z0-9-]{0,39}[a-z0-9]$","x-example":"digital"},{"name":"metadata","in":"body","description":"metadata.xml content","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"un-XMLized metadata's info","schema":{"$ref":"#/definitions/Boolean"}},"404":{"description":"An non-existing status","schema":{"$ref":"#/definitions/Error"}},"default":{"description":"Unexpected error","schema":{"$ref":"#/definitions/Error"}}},"x-swagger-router-controller":"brands"}},"/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,"type":"string","x-example":"digital"}],"responses":{"200":{"description":"A brand","schema":{"$ref":"#/definitions/Brand"}},"default":{"description":"Unexpected error","schema":{"$ref":"#/definitions/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,"type":"string","x-example":"digital"},{"name":"body","in":"body","description":"Body of the brand","required":true,"schema":{"$ref":"#/definitions/Brand"}}],"responses":{"200":{"description":"Updated brand","schema":{"$ref":"#/definitions/Brand"}},"400":{"description":"A validation error","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"brand not found","schema":{"$ref":"#/definitions/Error"}},"default":{"description":"Unexpected error","schema":{"$ref":"#/definitions/Error"}}},"x-swagger-router-controller":"brands"},"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,"type":"string","x-example":"digital"},{"name":"brandName","in":"header","description":"Id of the brand","required":true,"type":"string"}],"responses":{"202":{"description":"delete brand by id","schema":{"$ref":"#/definitions/Brand"}},"400":{"description":"missing header","schema":{"$ref":"#/definitions/Error"}},"404":{"description":"brand not found","schema":{"$ref":"#/definitions/Error"}},"409":{"description":"header brandName value is not the same as given id parameter","schema":{"$ref":"#/definitions/Error"}},"default":{"description":"Unexpected error","schema":{"$ref":"#/definitions/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,"type":"string","x-example":"digital"},{"name":"clusterFrom","in":"query","description":"Original cluster of brand","required":true,"type":"string","x-example":"coorp-clust-web-2"},{"name":"clusterTo","in":"query","description":"Destination cluster the brand","required":true,"type":"string","x-example":"coorp-clust-web-1"}],"responses":{"200":{"description":"Migration status","schema":{"$ref":"#/definitions/BrandMigrationStatus"}},"default":{"description":"Unexpected error","schema":{"$ref":"#/definitions/Error"}}},"x-swagger-router-controller":"brands"}}},"definitions":{"Brands":{"type":"array","items":{"$ref":"#/definitions/Brand"}},"BrandsList":{"type":"array","items":{"type":"string"}},"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"]},"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":"#/definitions/BrandPayload"}}},"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":"#/definitions/SSOPayload"},"language":{"type":"object","properties":{"default":{"type":"string","description":"Default language"},"supported":{"type":"array","description":"Default language","items":{"type":"string"}}}},"import":{"type":"object","$ref":"#/definitions/ImportPayload"},"slider":{"type":"object","$ref":"#/definitions/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"}}},"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"}}},"Slider":{"type":"object","properties":{"start":{"type":"object","$ref":"#/definitions/Slide"},"resume":{"type":"object","$ref":"#/definitions/Slide"},"battle":{"type":"object","$ref":"#/definitions/Slide"}}},"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'"}}},"ImportPayload":{"type":"object","properties":{"users":{"type":"object","properties":{"template":{"type":"string"}}}}},"SSOPayload":{"type":"object","properties":{"enabled":{"type":"boolean"},"connectEnabled":{"type":"boolean"},"enableDefaultRoute":{"type":"boolean"},"type":{"type":"string","enum":["saml","oidc"]},"saml2":{"$ref":"#/definitions/SAMLPayload"},"oidc":{"$ref":"#/definitions/OIDCPayload"}}},"userMappingPayload":{"type":"object","properties":{"uniqueLogin":{"$ref":"#/definitions/UserMappingValue"},"emails":{"type":"array","items":{"type":"object","properties":{"value":{"$ref":"#/definitions/UserMappingValue"}}}},"name":{"type":"object","properties":{"familyName":{"$ref":"#/definitions/UserMappingValue"},"givenName":{"$ref":"#/definitions/UserMappingValue"}}},"provider":{"$ref":"#/definitions/UserMappingValue"},"language":{"$ref":"#/definitions/UserMappingValue"},"providerInfos":{"type":"object","additionalProperties":{"$ref":"#/definitions/UserMappingValue"}},"roles":{"type":"array","items":{"$ref":"#/definitions/UserMappingValue"}},"organizations":{"type":"array","items":{"type":"object","properties":{"name":{"$ref":"#/definitions/UserMappingValue"},"title":{"$ref":"#/definitions/UserMappingValue"},"branch'":{"$ref":"#/definitions/UserMappingValue"},"businessUnit":{"$ref":"#/definitions/UserMappingValue"},"workingCountry":{"$ref":"#/definitions/UserMappingValue"},"workingCity":{"$ref":"#/definitions/UserMappingValue"},"boutiqueReferent":{"$ref":"#/definitions/UserMappingValue"},"boutique":{"$ref":"#/definitions/UserMappingValue"},"address1":{"$ref":"#/definitions/UserMappingValue"},"address2":{"$ref":"#/definitions/UserMappingValue"},"zipcode":{"$ref":"#/definitions/UserMappingValue"},"region":{"$ref":"#/definitions/UserMappingValue"},"role":{"$ref":"#/definitions/UserMappingValue"},"contractType":{"$ref":"#/definitions/UserMappingValue"},"grade":{"$ref":"#/definitions/UserMappingValue"},"entity":{"$ref":"#/definitions/UserMappingValue"},"lmsId":{"$ref":"#/definitions/UserMappingValue"},"extendedField1":{"$ref":"#/definitions/UserMappingValue"},"extendedField2":{"$ref":"#/definitions/UserMappingValue"},"extendedField3":{"$ref":"#/definitions/UserMappingValue"}}}}}},"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":"#/definitions/userMappingPayload"}}},"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":"#/definitions/userMappingPayload"}}},"Boolean":{"type":"object","properties":{"value":{"type":"boolean"}}},"UserMappingValue":{"type":"array","items":{"type":"string"}},"Error":{"type":"object","properties":{"success":{"type":"boolean"},"id":{"type":"string"},"status":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}