All URIs are relative to SUBMISSION_API_URL configuration variable.
Method | HTTP request | Description |
---|---|---|
searchSubmissions | GET /submissions | Search submissions. |
headSubmissions | HEAD /submissions | Same to search submissions, but only response status and headers information return. |
createSubmission | POST /submissions | Create a submission. |
getSubmission | GET /submissions/{submissionId} | Get the submission. |
headSubmission | HEAD /submissions/{submissionId} | Same to get submission, but only response status and headers information return. |
updateSubmission | PUT /submissions/{submissionId} | Fully update submission. |
patchSubmission | PATCH /submissions/{submissionId} | Partially update submission. |
deleteSubmission | DELETE /submissions/{submissionId} | Delete the submission. |
downloadSubmission | GET /submissions/{submissionId}/download | Download the submission. |
createArtifact | POST /submissions/{submissionId}/artifacts | Create artifact for submission. |
listArtifacts | GET /submissions/{submissionId}/artifacts | List artifacts of specified submission. |
downloadArtifact | GET /submissions/{submissionId}/artifacts/{artifactId}/download | Download artifact |
deleteArtifact | DELETE /submissions/{submissionId}/artifacts/{artifactId} | Delete artifact |
searchSubmissions(reqQuery[, jwt])
Search submissions. Link headers are sent back and they have rel set to prev, next, first, last and contain the relevant URL.
const submissionApi = require('topcoder-submission-api-wrapper')
const submissionApiM2MClient = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
const submissionApiUserCredentialsClient = submissionApi(_.pick(config,
['USERNAME', 'PASSWORD', 'TC_AUTHN_URL', 'TC_AUTHZ_URL', 'TC_CLIENT_ID',
'TC_CLIENT_V2_CONNECTION', 'SUBMISSION_API_URL']))
const submissionApiJwtMethodArgClient = submissionApi(_.pick(config, 'SUBMISSION_API_URL'))
const reqQuery = {
page: 1,
perPage: 10,
challengeId: 30054692
}
// Promise model
submissionApiM2MClient
.searchSubmissions(reqQuery)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
submissionApiUserCredentialsClient
.searchSubmissions(reqQuery)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
submissionApiJwtMethodArgClient
.searchSubmissions(reqQuery, config.JWT)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
// Async / await model
await submissionApiM2MClient.searchSubmissions(reqQuery)
await submissionApiUserCredentialsClient.searchSubmissions(reqQuery)
await submissionApiJwtMethodArgClient.searchSubmissions(reqQuery, config.JWT)
Name | Type | Description |
---|---|---|
reqQuery | SearchSubmissionsCriteria | the search submissions criteria |
jwt | String | the optional json web token |
Array of Submission
- Content-Type: application/json
- Accept: application/json
headSubmissions(reqQuery[, jwt])
Same to search submissions, but only response status and headers information return.
const submissionApi = require('topcoder-submission-api-wrapper')
const submissionApiM2MClient = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
const submissionApiUserCredentialsClient = submissionApi(_.pick(config,
['USERNAME', 'PASSWORD', 'TC_AUTHN_URL', 'TC_AUTHZ_URL', 'TC_CLIENT_ID',
'TC_CLIENT_V2_CONNECTION', 'SUBMISSION_API_URL']))
const submissionApiJwtMethodArgClient = submissionApi(_.pick(config, 'SUBMISSION_API_URL'))
const reqQuery = {
page: 1,
perPage: 10,
challengeId: 30054692
}
// Promise model
submissionApiM2MClient
.headSubmissions(reqQuery)
.then(result => console.log(result.status))
.catch(err => console.log(err))
submissionApiUserCredentialsClient
.headSubmissions(reqQuery)
.then(result => console.log(result.status))
.catch(err => console.log(err))
submissionApiJwtMethodArgClient
.headSubmissions(reqQuery, config.JWT)
.then(result => console.log(result.status))
.catch(err => console.log(err))
// Async / await model
await submissionApiM2MClient.headSubmissions(reqQuery)
await submissionApiUserCredentialsClient.headSubmissions(reqQuery)
await submissionApiJwtMethodArgClient.headSubmissions(reqQuery, config.JWT)
Name | Type | Description |
---|---|---|
reqQuery | SearchSubmissionsCriteria | the search submissions criteria |
jwt | String | the optional json web token |
null (empty response body)
- Content-Type: application/json
- Accept: application/json
createSubmission(reqFormData[, jwt])
Create a submission.
const path = require('path')
const fs = require('fs')
const fileData = fs.readFileSync(path.resolve(__dirname, './data/fileToUpload.zip'))
const submissionApi = require('topcoder-submission-api-wrapper')
const submissionApiM2MClient = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
const submissionApiUserCredentialsClient = submissionApi(_.pick(config,
['USERNAME', 'PASSWORD', 'TC_AUTHN_URL', 'TC_AUTHZ_URL', 'TC_CLIENT_ID',
'TC_CLIENT_V2_CONNECTION', 'SUBMISSION_API_URL']))
const submissionApiJwtMethodArgClient = submissionApi(_.pick(config, 'SUBMISSION_API_URL'))
const reqFormData1 = {
submission: {
name: 'fileToUpload.zip',
data: fileData // a Buffer contain file content
},
type: 'Contest Submission',
memberId: 40493050,
challengeId: 30054692
}
const reqFormData2 = {
url: 'https://tc-test-submission-scan.s3.amazonaws.com/good.zip',
type: 'Contest Submission',
memberId: 40493050,
challengeId: 30054692
}
// Promise model
submissionApiM2MClient
.createSubmission(reqFormData1)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
submissionApiUserCredentialsClient
.createSubmission(reqFormData1)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
submissionApiJwtMethodArgClient
.createSubmission(reqFormData1, config.JWT)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
// Async / await model
await submissionApiM2MClient.createSubmission(reqFormData2)
await submissionApiUserCredentialsClient.createSubmission(reqFormData2)
await submissionApiJwtMethodArgClient.createSubmission(reqFormData2, config.JWT)
const config = require('config')
const express = require('express')
const bodyParser = require('body-parser')
const fileUpload = require('express-fileupload')
const cors = require('cors')
const submissionApi = require('topcoder-submission-api-wrapper')
const client = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
// setup express app
const app = express()
app.use(cors())
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.use(fileUpload())
app.set('port', process.env.TEST_PORT || 4000)
app.post('/proxy/submit', function (req, res) {
let formData = req.body
if (req.files && req.files.submission) {
formData.submission = req.files.submission
}
client
.createSubmission(formData)
.then(result => {
res.send(result.body)
})
.catch(err => {
res.status(err.status).send(err.response.body)
})
})
app.listen(app.get('port'), () => {
console.info(`Express server listening on port ${app.get('port')}`)
})
Name | Type | Description |
---|---|---|
reqFormData | SubmissionData | the submission data |
jwt | String | the optional json web token |
- Content-Type: multipart/form-data
- Accept: application/json
getSubmission(submissionId[, jwt])
Get submission by id.
const submissionApi = require('topcoder-submission-api-wrapper')
const submissionApiM2MClient = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
const submissionApiUserCredentialsClient = submissionApi(_.pick(config,
['USERNAME', 'PASSWORD', 'TC_AUTHN_URL', 'TC_AUTHZ_URL', 'TC_CLIENT_ID',
'TC_CLIENT_V2_CONNECTION', 'SUBMISSION_API_URL']))
const submissionApiJwtMethodArgClient = submissionApi(_.pick(config, 'SUBMISSION_API_URL'))
const submissionId = '8f4e8b6a-0ad2-4ff6-ab19-afeb102ff3b4'
// Promise model
submissionApiM2MClient
.getSubmission(submissionId)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
submissionApiUserCredentialsClient
.getSubmission(submissionId)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
submissionApiJwtMethodArgClient
.getSubmission(submissionId, config.JWT)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
// Async / await model
await submissionApiM2MClient.getSubmission(submissionId)
await submissionApiUserCredentialsClient.getSubmission(submissionId)
await submissionApiJwtMethodArgClient.getSubmission(submissionId, config.JWT)
Name | Type | Description |
---|---|---|
submissionId | String | the submission id |
jwt | String | the optional json web token |
- Content-Type: application/json
- Accept: application/json
headSubmission(submissionId[, jwt])
Same to get submission, but only response status and headers information return.
const submissionApi = require('topcoder-submission-api-wrapper')
const submissionApiM2MClient = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
const submissionApiUserCredentialsClient = submissionApi(_.pick(config,
['USERNAME', 'PASSWORD', 'TC_AUTHN_URL', 'TC_AUTHZ_URL', 'TC_CLIENT_ID',
'TC_CLIENT_V2_CONNECTION', 'SUBMISSION_API_URL']))
const submissionApiJwtMethodArgClient = submissionApi(_.pick(config, 'SUBMISSION_API_URL'))
const submissionId = '8f4e8b6a-0ad2-4ff6-ab19-afeb102ff3b4'
// Promise model
submissionApiM2MClient
.headSubmission(submissionId)
.then(result => console.log(result.status))
.catch(err => console.log(err))
submissionApiUserCredentialsClient
.headSubmission(submissionId)
.then(result => console.log(result.status))
.catch(err => console.log(err))
submissionApiJwtMethodArgClient
.headSubmission(submissionId, config.JWT)
.then(result => console.log(result.status))
.catch(err => console.log(err))
// Async / await model
await submissionApiM2MClient.headSubmission(submissionId)
await submissionApiUserCredentialsClient.headSubmission(submissionId)
await submissionApiJwtMethodArgClient.headSubmission(submissionId, config.JWT)
Name | Type | Description |
---|---|---|
submissionId | String | the submission id |
jwt | String | the optional json web token |
null (empty response body)
- Content-Type: application/json
- Accept: application/json
updateSubmission(submissionId, reqBody[, jwt])
Fully update submission.
const submissionApi = require('topcoder-submission-api-wrapper')
const submissionApiM2MClient = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
const submissionApiUserCredentialsClient = submissionApi(_.pick(config,
['USERNAME', 'PASSWORD', 'TC_AUTHN_URL', 'TC_AUTHZ_URL', 'TC_CLIENT_ID',
'TC_CLIENT_V2_CONNECTION', 'SUBMISSION_API_URL']))
const submissionApiJwtMethodArgClient = submissionApi(_.pick(config, 'SUBMISSION_API_URL'))
const submissionId = '8f4e8b6a-0ad2-4ff6-ab19-afeb102ff3b4'
const reqBody = {
url: 'https://tc-test-submission-scan.s3.amazonaws.com/good.zip',
type: 'Contest Submission',
memberId: 40493050,
challengeId: 30054692
}
// Promise model
submissionApiM2MClient
.updateSubmission(submissionId, reqBody)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
submissionApiUserCredentialsClient
.updateSubmission(submissionId, reqBody)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
submissionApiJwtMethodArgClient
.updateSubmission(submissionId, reqBody, config.JWT)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
// Async / await model
await submissionApiM2MClient.updateSubmission(submissionId, reqBody)
await submissionApiUserCredentialsClient.updateSubmission(submissionId, reqBody)
await submissionApiJwtMethodArgClient.updateSubmission(submissionId, reqBody, config.JWT)
Name | Type | Description |
---|---|---|
submissionId | String | the submission id |
reqBody | SubmissionUpdataData | the submission data |
jwt | String | the optional json web token |
- Content-Type: application/json
- Accept: application/json
patchSubmission(submissionId, reqBody[, jwt])
Partially update submission.
const submissionApi = require('topcoder-submission-api-wrapper')
const submissionApiM2MClient = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
const submissionApiUserCredentialsClient = submissionApi(_.pick(config,
['USERNAME', 'PASSWORD', 'TC_AUTHN_URL', 'TC_AUTHZ_URL', 'TC_CLIENT_ID',
'TC_CLIENT_V2_CONNECTION', 'SUBMISSION_API_URL']))
const submissionApiJwtMethodArgClient = submissionApi(_.pick(config, 'SUBMISSION_API_URL'))
const submissionId = '8f4e8b6a-0ad2-4ff6-ab19-afeb102ff3b4'
const reqBody = {
url: 'https://tc-test-submission-scan.s3.amazonaws.com/good.zip',
type: 'Contest Submission'
}
// Promise model
submissionApiM2MClient
.patchSubmission(submissionId, reqBody)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
submissionApiUserCredentialsClient
.patchSubmission(submissionId, reqBody)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
submissionApiJwtMethodArgClient
.patchSubmission(submissionId, reqBody, config.JWT)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
// Async / await model
await submissionApiM2MClient.patchSubmission(submissionId, reqBody)
await submissionApiUserCredentialsClient.patchSubmission(submissionId, reqBody)
await submissionApiJwtMethodArgClient.patchSubmission(submissionId, reqBody, config.JWT)
Name | Type | Description |
---|---|---|
submissionId | String | the submission id |
reqBody | SubmissionUpdataData | the submission data |
jwt | String | the optional json web token |
- Content-Type: application/json
- Accept: application/json
deleteSubmission(submissionId[, jwt])
Delete submission by id.
const submissionApi = require('topcoder-submission-api-wrapper')
const submissionApiM2MClient = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
const submissionApiUserCredentialsClient = submissionApi(_.pick(config,
['USERNAME', 'PASSWORD', 'TC_AUTHN_URL', 'TC_AUTHZ_URL', 'TC_CLIENT_ID',
'TC_CLIENT_V2_CONNECTION', 'SUBMISSION_API_URL']))
const submissionApiJwtMethodArgClient = submissionApi(_.pick(config, 'SUBMISSION_API_URL'))
const submissionId = '8f4e8b6a-0ad2-4ff6-ab19-afeb102ff3b4'
// Promise model
submissionApiM2MClient
.deleteSubmission(submissionId)
.then(result => console.log(result.status))
.catch(err => console.log(err))
submissionApiUserCredentialsClient
.deleteSubmission(submissionId)
.then(result => console.log(result.status))
.catch(err => console.log(err))
submissionApiJwtMethodArgClient
.deleteSubmission(submissionId, config.JWT)
.then(result => console.log(result.status))
.catch(err => console.log(err))
// Async / await model
await submissionApiM2MClient.deleteSubmission(submissionId)
await submissionApiUserCredentialsClient.deleteSubmission(submissionId)
await submissionApiJwtMethodArgClient.deleteSubmission(submissionId, config.JWT)
Name | Type | Description |
---|---|---|
submissionId | String | the submission id |
jwt | String | the optional json web token |
null (empty response body)
- Content-Type: application/json
- Accept: application/json
downloadSubmission(submissionId[, jwt])
Download submission by id.
const submissionApi = require('topcoder-submission-api-wrapper')
const submissionApiM2MClient = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
const submissionApiUserCredentialsClient = submissionApi(_.pick(config,
['USERNAME', 'PASSWORD', 'TC_AUTHN_URL', 'TC_AUTHZ_URL', 'TC_CLIENT_ID',
'TC_CLIENT_V2_CONNECTION', 'SUBMISSION_API_URL']))
const submissionApiJwtMethodArgClient = submissionApi(_.pick(config, 'SUBMISSION_API_URL'))
const submissionId = '8f4e8b6a-0ad2-4ff6-ab19-afeb102ff3b4'
// Promise model
submissionApiM2MClient
.downloadSubmission(submissionId)
.then(result => console.log(result.status, result.body))
.catch(err => console.log(err))
submissionApiUserCredentialsClient
.downloadSubmission(submissionId)
.then(result => console.log(result.status, result.body))
.catch(err => console.log(err))
submissionApiJwtMethodArgClient
.downloadSubmission(submissionId, config.JWT)
.then(result => console.log(result.status, result.body))
.catch(err => console.log(err))
// Async / await model
await submissionApiM2MClient.downloadSubmission(submissionId)
await submissionApiUserCredentialsClient.downloadSubmission(submissionId)
await submissionApiJwtMethodArgClient.downloadSubmission(submissionId, config.JWT)
// Stream Model
const outputStream = fs.createWriteStream(filePath)
const req = await submissionApiM2MClient.downloadSubmission(submissionId, null, true)
req.pipe(outputStream)
const outputStream = fs.createWriteStream(filePath)
const req = await submissionApiUserCredentialsClient.downloadSubmission(submissionId, null, true)
req.pipe(outputStream)
const outputStream = fs.createWriteStream(filePath)
const req = await submissionApiJwtMethodArgClient.downloadSubmission(submissionId, config.JWT, true)
req.pipe(outputStream)
const config = require('config')
const express = require('express')
const bodyParser = require('body-parser')
const fileUpload = require('express-fileupload')
const cors = require('cors')
const submissionApi = require('topcoder-submission-api-wrapper')
const client = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
// setup express app
const app = express()
app.use(cors())
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.use(fileUpload())
app.set('port', process.env.TEST_PORT || 4000)
app.get('/proxy/download/:submissionId', function (req, res) {
client
.downloadSubmission(req.params.submissionId)
.then(result => {
res.set(result.headers)
res.send(result.body)
})
.catch(err => {
res.status(err.status).send(err.response.body)
})
})
app.listen(app.get('port'), () => {
console.info(`Express server listening on port ${app.get('port')}`)
})
Name | Type | Description |
---|---|---|
submissionId | String | the submission id |
jwt | String | the optional json web token |
streamed | Boolean | the optional flag indicating whether or not to return a stream instead of a promise (default is promise) |
Binary data
- Content-Type: application/json
- Accept: application/json
createArtifact(submissionId, reqFormData[, jwt])
Create artifact for submission
const path = require('path')
const fs = require('fs')
const fileData = fs.readFileSync(path.resolve(__dirname, './data/fileToUpload.zip'))
const submissionApi = require('topcoder-submission-api-wrapper')
const submissionApiM2MClient = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
const submissionApiUserCredentialsClient = submissionApi(_.pick(config,
['USERNAME', 'PASSWORD', 'TC_AUTHN_URL', 'TC_AUTHZ_URL', 'TC_CLIENT_ID',
'TC_CLIENT_V2_CONNECTION', 'SUBMISSION_API_URL']))
const submissionApiJwtMethodArgClient = submissionApi(_.pick(config, 'SUBMISSION_API_URL'))
const submissionId = '8f4e8b6a-0ad2-4ff6-ab19-afeb102ff3b4'
const reqFormData = {
artifact: {
name: 'fileToUpload.zip',
data: fileData // a Buffer contain file content
},
typeId: 'c56a4180-65aa-42ec-a945-5fd21dec0503'
}
// Promise model
submissionApiM2MClient
.createArtifact(submissionId, reqFormData)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
submissionApiUserCredentialsClient
.createArtifact(submissionId, reqFormData)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
submissionApiJwtMethodArgClient
.createArtifact(submissionId, reqFormData, config.JWT)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
// Async / await model
await submissionApiM2MClient.createArtifact(submissionId, reqFormData)
await submissionApiUserCredentialsClient.createArtifact(submissionId, reqFormData)
await submissionApiJwtMethodArgClient.createArtifact(submissionId, reqFormData, config.JWT)
const config = require('config')
const express = require('express')
const bodyParser = require('body-parser')
const fileUpload = require('express-fileupload')
const cors = require('cors')
const submissionApi = require('topcoder-submission-api-wrapper')
const client = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
// setup express app
const app = express()
app.use(cors())
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.use(fileUpload())
app.set('port', process.env.TEST_PORT || 4000)
app.post('/proxy/submission/:submissionId/artifact', function (req, res) {
let formData = req.body
if (req.files && req.files.artifact) {
formData.artifact = req.files.artifact
}
client
.createArtifact(req.params.submissionId, formData)
.then(result => {
res.send(result.body)
})
.catch(err => {
res.status(err.status).send(err.response.body)
})
})
app.listen(app.get('port'), () => {
console.info(`Express server listening on port ${app.get('port')}`)
})
Name | Type | Description |
---|---|---|
submissionId | String | the submission id |
reqFormData | ArtifactData | the artifact |
jwt | String | the optional json web token |
- Content-Type: multipart/form-data
- Accept: application/json
listArtifacts(submissionId[, jwt])
List artifacts of specified submission
const submissionApi = require('topcoder-submission-api-wrapper')
const submissionApiM2MClient = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
const submissionApiUserCredentialsClient = submissionApi(_.pick(config,
['USERNAME', 'PASSWORD', 'TC_AUTHN_URL', 'TC_AUTHZ_URL', 'TC_CLIENT_ID',
'TC_CLIENT_V2_CONNECTION', 'SUBMISSION_API_URL']))
const submissionApiJwtMethodArgClient = submissionApi(_.pick(config, 'SUBMISSION_API_URL'))
const submissionId = '8f4e8b6a-0ad2-4ff6-ab19-afeb102ff3b4'
// Promise model
submissionApiM2MClient
.listArtifacts(submissionId)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
submissionApiUserCredentialsClient
.listArtifacts(submissionId)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
submissionApiJwtMethodArgClient
.listArtifacts(submissionId, config.JWT)
.then(result => console.log(result.body, result.status))
.catch(err => console.log(err))
// Async / await model
await submissionApiM2MClient.listArtifacts(submissionId)
await submissionApiUserCredentialsClient.listArtifacts(submissionId)
await submissionApiJwtMethodArgClient.listArtifacts(submissionId, config.JWT)
Name | Type | Description |
---|---|---|
submissionId | String | the submission id |
jwt | String | the optional json web token |
- Content-Type: application/json
- Accept: application/json
downloadArtifact(submissionId, artifactId[, jwt])
Download artifact using submission id and artifact id.
const submissionApi = require('topcoder-submission-api-wrapper')
const submissionApiM2MClient = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
const submissionApiUserCredentialsClient = submissionApi(_.pick(config,
['USERNAME', 'PASSWORD', 'TC_AUTHN_URL', 'TC_AUTHZ_URL', 'TC_CLIENT_ID',
'TC_CLIENT_V2_CONNECTION', 'SUBMISSION_API_URL']))
const submissionApiJwtMethodArgClient = submissionApi(_.pick(config, 'SUBMISSION_API_URL'))
const submissionId = '8f4e8b6a-0ad2-4ff6-ab19-afeb102ff3b4'
const artifactId = 'c56a4180-65aa-42ec-a945-5fd21dec0503'
// Promise model
submissionApiM2MClient
.downloadArtifact(submissionId, artifactId)
.then(result => console.log(result.status, result.body))
.catch(err => console.log(err))
submissionApiUserCredentialsClient
.downloadArtifact(submissionId, artifactId)
.then(result => console.log(result.status, result.body))
.catch(err => console.log(err))
submissionApiJwtMethodArgClient
.downloadArtifact(submissionId, artifactId, config.JWT)
.then(result => console.log(result.status, result.body))
.catch(err => console.log(err))
// Async / await model
await submissionApiM2MClient.downloadArtifact(submissionId, artifactId)
await submissionApiUserCredentialsClient.downloadArtifact(submissionId, artifactId)
await submissionApiJwtMethodArgClient.downloadArtifact(submissionId, artifactId, config.JWT)
// Stream Model
const outputStream = fs.createWriteStream(filePath)
const req = await submissionApiM2MClient.downloadArtifact(submissionId, artifactId, null, true)
req.pipe(outputStream)
const outputStream = fs.createWriteStream(filePath)
const req = await submissionApiUserCredentialsClient.downloadArtifact(submissionId, artifactId, null, true)
req.pipe(outputStream)
const outputStream = fs.createWriteStream(filePath)
const req = await submissionApiJwtMethodArgClient.downloadArtifact(submissionId, artifactId, config.JWT, true)
req.pipe(outputStream)
const config = require('config')
const express = require('express')
const bodyParser = require('body-parser')
const fileUpload = require('express-fileupload')
const cors = require('cors')
const submissionApi = require('topcoder-submission-api-wrapper')
const client = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
// setup express app
const app = express()
app.use(cors())
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.use(fileUpload())
app.set('port', process.env.TEST_PORT || 4000)
app.get('/proxy/submission/:submissionId/artifact/:artifactId', function (req, res) {
client
.downloadArtifact(req.params.submissionId, req.params.artifactId)
.then(result => {
res.set(result.headers)
res.send(result.body)
})
.catch(err => {
res.status(err.status).send(err.response.body)
})
})
app.listen(app.get('port'), () => {
console.info(`Express server listening on port ${app.get('port')}`)
})
Name | Type | Description |
---|---|---|
submissionId | String | the submission id |
artifactId | String | the artifact id |
jwt | String | the optional json web token |
streamed | Boolean | the optional flag indicating whether or not to return a stream instead of a promise (default is a promise) |
Binary data
- Content-Type: application/json
- Accept: application/json
deleteArtifact(submissionId, artifactId[, jwt])
Delete artifact using submission id and artifact id.
const submissionApi = require('topcoder-submission-api-wrapper')
const submissionApiM2MClient = submissionApi(_.pick(config,
['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME',
'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'SUBMISSION_API_URL',
'AUTH0_PROXY_SERVER_URL']))
const submissionApiUserCredentialsClient = submissionApi(_.pick(config,
['USERNAME', 'PASSWORD', 'TC_AUTHN_URL', 'TC_AUTHZ_URL', 'TC_CLIENT_ID',
'TC_CLIENT_V2_CONNECTION', 'SUBMISSION_API_URL']))
const submissionApiJwtMethodArgClient = submissionApi(_.pick(config, 'SUBMISSION_API_URL'))
const submissionId = '8f4e8b6a-0ad2-4ff6-ab19-afeb102ff3b4'
const artifactId = 'c56a4180-65aa-42ec-a945-5fd21dec0503'
// Promise model
submissionApiM2MClient
.deleteArtifact(submissionId, artifactId)
.then(result => console.log(result.status))
.catch(err => console.log(err))
submissionApiUserCredentialsClient
.deleteArtifact(submissionId, artifactId)
.then(result => console.log(result.status))
.catch(err => console.log(err))
submissionApiJwtMethodArgClient
.deleteArtifact(submissionId, artifactId, config.JWT)
.then(result => console.log(result.status))
.catch(err => console.log(err))
// Async / await model
await submissionApiM2MClient.deleteSubmission(submissionId, artifactId)
await submissionApiUserCredentialsClient.deleteSubmission(submissionId, artifactId)
await submissionApiJwtMethodArgClient.deleteSubmission(submissionId, artifactId, config.JWT)
Name | Type | Description |
---|---|---|
submissionId | String | the submission id |
artifactId | String | the artifact id |
jwt | String | the optional json web token |
null (empty response body)
- Content-Type: application/json
- Accept: application/json