{"openapi":"3.0.3","info":{"title":"OTA [Beta]","description":"API for various OTA services","version":"1.0.0"},"components":{"securitySchemes":{"jwtToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"},"serviceToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT"},"legacyApiKey":{"type":"apiKey","in":"header","name":"x-lokalise-api-key"},"sdkToken":{"type":"apiKey","in":"header","name":"x-ota-api-token"}},"schemas":{}},"paths":{"/v3/teams/{teamId}/projects/{lokaliseProjectId}/bundles":{"get":{"operationId":"list-bundles","summary":"List bundles","tags":["Bundle management"],"parameters":[{"schema":{"type":"string","enum":["ios_sdk","android_sdk","flutter_sdk"]},"in":"query","name":"framework","required":false,"description":"Framework to filter the results"},{"schema":{"type":"number","minimum":0},"in":"path","name":"teamId","required":true,"description":"The team id"},{"schema":{"type":"string","minLength":1},"in":"path","name":"lokaliseProjectId","required":true,"description":"The project id"}],"security":[{"jwtToken":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number","description":"The bundle id"},"projectId":{"type":"string","minLength":1,"description":"The project id"},"isPrerelease":{"type":"boolean","description":"Whether this is a pre-release bundle"},"isProduction":{"type":"boolean","description":"Whether the bundle is for a production version"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string"}],"description":"The timestamp of modification time"},"createdBy":{"type":"string","description":"The creator of this bundle"},"framework":{"type":"string","enum":["ios_sdk","android_sdk","flutter_sdk"],"description":"Bundle framework"},"description":{"anyOf":[{"not":{}},{"type":"string"}],"nullable":true,"description":"The bundle description"},"isFrozen":{"type":"boolean","description":"Whether the bundle is frozen"},"lokaliseId":{"type":"number","nullable":true,"description":"External Id"},"fileId":{"type":"string","description":"File Id"},"modifiedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string"}],"description":"The modification time in ISO 8601 format"}},"required":["id","projectId","isPrerelease","isProduction","createdAt","createdBy","framework","isFrozen","lokaliseId","fileId"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}}}}},"/v3/teams/{teamId}/projects/{lokaliseProjectId}/bundles/{bundleId}":{"get":{"operationId":"get-bundle","summary":"Get bundle","tags":["Bundle management"],"parameters":[{"schema":{"type":"number","minimum":0},"in":"path","name":"teamId","required":true,"description":"The team id"},{"schema":{"type":"string","minLength":1},"in":"path","name":"lokaliseProjectId","required":true,"description":"The project id"},{"schema":{"type":"number"},"in":"path","name":"bundleId","required":true,"description":"The bundle id"}],"security":[{"jwtToken":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"number","description":"The bundle id"},"projectId":{"type":"string","minLength":1,"description":"The project id"},"isPrerelease":{"type":"boolean","description":"Whether this is a pre-release bundle"},"isProduction":{"type":"boolean","description":"Whether the bundle is for a production version"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string"}],"description":"The timestamp of modification time"},"createdBy":{"type":"string","description":"The creator of this bundle"},"framework":{"type":"string","enum":["ios_sdk","android_sdk","flutter_sdk"],"description":"Bundle framework"},"description":{"anyOf":[{"not":{}},{"type":"string"}],"nullable":true,"description":"The bundle description"},"isFrozen":{"type":"boolean","description":"Whether the bundle is frozen"},"lokaliseId":{"type":"number","nullable":true,"description":"External Id"},"fileId":{"type":"string","description":"File Id"},"fileUrl":{"type":"string","description":"File download URL"},"modifiedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string"}],"description":"The modification time in ISO 8601 format"}},"required":["id","projectId","isPrerelease","isProduction","createdAt","createdBy","framework","isFrozen","lokaliseId","fileId","fileUrl"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"patch":{"operationId":"update-bundle","summary":"Update bundle","tags":["Bundle management"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","description":"The bundle description"}},"required":["description"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"number","minimum":0},"in":"path","name":"teamId","required":true,"description":"The team id"},{"schema":{"type":"string","minLength":1},"in":"path","name":"lokaliseProjectId","required":true,"description":"The project id"},{"schema":{"type":"number"},"in":"path","name":"bundleId","required":true,"description":"The bundle id"}],"security":[{"jwtToken":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"number","description":"The bundle id"},"projectId":{"type":"string","minLength":1,"description":"The project id"},"isPrerelease":{"type":"boolean","description":"Whether this is a pre-release bundle"},"isProduction":{"type":"boolean","description":"Whether the bundle is for a production version"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string"}],"description":"The timestamp of modification time"},"createdBy":{"type":"string","description":"The creator of this bundle"},"framework":{"type":"string","enum":["ios_sdk","android_sdk","flutter_sdk"],"description":"Bundle framework"},"description":{"anyOf":[{"not":{}},{"type":"string"}],"nullable":true,"description":"The bundle description"},"isFrozen":{"type":"boolean","description":"Whether the bundle is frozen"},"lokaliseId":{"type":"number","nullable":true,"description":"External Id"},"fileId":{"type":"string","description":"File Id"},"fileUrl":{"type":"string","description":"File download URL"},"modifiedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string"}],"description":"The modification time in ISO 8601 format"}},"required":["id","projectId","isPrerelease","isProduction","createdAt","createdBy","framework","isFrozen","lokaliseId","fileId","fileUrl"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"delete":{"operationId":"detele-bundle","summary":"Delete a bundle","tags":["Bundle management"],"description":"Delete a bundle","parameters":[{"schema":{"type":"number","minimum":0},"in":"path","name":"teamId","required":true,"description":"The team id"},{"schema":{"type":"string","minLength":1},"in":"path","name":"lokaliseProjectId","required":true,"description":"The project id"},{"schema":{"type":"number"},"in":"path","name":"bundleId","required":true,"description":"The bundle id"}],"security":[{"jwtToken":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"number","description":"The bundle id"},"deleted":{"type":"boolean","description":"`true`, if deleted successfully"}},"required":["id","deleted"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v3/teams/{teamId}/projects/{lokaliseProjectId}/bundle-freezes":{"get":{"operationId":"list-bundle-freezes","summary":"List freeze periods","tags":["Bundle freezes"],"parameters":[{"schema":{"type":"string"},"in":"query","name":"framework","required":false,"description":"Framework to filter the results"},{"schema":{"type":"number","minimum":0},"in":"path","name":"teamId","required":true,"description":"The team id"},{"schema":{"type":"string","minLength":1},"in":"path","name":"lokaliseProjectId","required":true,"description":"The project id"}],"security":[{"jwtToken":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number","description":"The bundle id"},"projectId":{"type":"number","description":"The project id"},"bundleId":{"type":"number","description":"The bundle id"},"framework":{"type":"string","description":"The bundle framework"},"from":{"type":"string","description":"The minimum version number required to match the freeze period"},"to":{"type":"string","description":"The version build number allowed to match the freeze period"}},"required":["id","projectId","bundleId","from","to"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}}}},"post":{"operationId":"create-bundle-freeze","summary":"Create freeze period","tags":["Bundle freezes"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"string","description":"The minimum version number required to match the freeze period"},"to":{"type":"string","description":"The maximum version number allowed to match the freeze period"},"bundleId":{"type":"number","description":"The bundle id"}},"required":["from","to","bundleId"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"number","minimum":0},"in":"path","name":"teamId","required":true,"description":"The team id"},{"schema":{"type":"string","minLength":1},"in":"path","name":"lokaliseProjectId","required":true,"description":"The project id"}],"security":[{"jwtToken":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"number","description":"The bundle id"},"projectId":{"type":"number","description":"The project id"},"bundleId":{"type":"number","description":"The bundle id"},"framework":{"type":"string","description":"The bundle framework"},"from":{"type":"string","description":"The minimum version number required to match the freeze period"},"to":{"type":"string","description":"The version build number allowed to match the freeze period"}},"required":["id","projectId","bundleId","from","to"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v3/teams/{teamId}/projects/{lokaliseProjectId}/bundle-freezes/{bundleFreezeId}":{"put":{"operationId":"update-bundle-freeze","summary":"Update freeze period","tags":["Bundle freezes"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"string","description":"The minimum version number required to match the freeze period"},"to":{"type":"string","description":"The maximum version number allowed to match the freeze period"},"bundleId":{"type":"number","description":"The bundle id"}},"required":["from","to","bundleId"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"number","minimum":0},"in":"path","name":"teamId","required":true,"description":"The team id"},{"schema":{"type":"number","minimum":0},"in":"path","name":"bundleFreezeId","required":true,"description":"The bundle freeze id"},{"schema":{"type":"string","minLength":1},"in":"path","name":"lokaliseProjectId","required":true,"description":"The project id"}],"security":[{"jwtToken":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"number","description":"The bundle id"},"projectId":{"type":"number","description":"The project id"},"bundleId":{"type":"number","description":"The bundle id"},"framework":{"type":"string","description":"The bundle framework"},"from":{"type":"string","description":"The minimum version number required to match the freeze period"},"to":{"type":"string","description":"The version build number allowed to match the freeze period"}},"required":["id","projectId","bundleId","from","to"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"delete":{"operationId":"delete-bundle-freeze","summary":"Delete freeze period","tags":["Bundle freezes"],"parameters":[{"schema":{"type":"number","minimum":0},"in":"path","name":"teamId","required":true,"description":"The team id"},{"schema":{"type":"string","minLength":1},"in":"path","name":"lokaliseProjectId","required":true,"description":"The project id"},{"schema":{"type":"number"},"in":"path","name":"bundleFreezeId","required":true,"description":"The bundle freeze id"}],"security":[{"jwtToken":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"number","description":"The period id"},"deleted":{"type":"boolean","description":"`true`, if deleted successfully"}},"required":["id","deleted"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v3/teams/{teamId}/projects/{lokaliseProjectId}/stats":{"get":{"operationId":"project-stats","summary":"View usage","tags":["Statistics"],"parameters":[{"schema":{"type":"string","format":"date-time"},"in":"query","name":"dateFrom","required":true,"description":"The period start date in ISO 8601 format."},{"schema":{"type":"string","format":"date-time"},"in":"query","name":"dateTo","required":true,"description":"The period end date in ISO 8601 format."},{"schema":{"type":"string","default":""},"in":"query","name":"framework","required":false,"description":"A specific (optional) framework to filter by"},{"schema":{"type":"number","minimum":0},"in":"path","name":"teamId","required":true,"description":"The team id"},{"schema":{"type":"string","minLength":1},"in":"path","name":"lokaliseProjectId","required":true,"description":"The project id"}],"security":[{"jwtToken":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"lokaliseProjectId":{"type":"string","minLength":1,"description":"The project id"},"from":{"type":"string","description":"The statistics period starting date"},"to":{"type":"string","description":"The statistics period end date"},"sdk":{"type":"string","default":"","nullable":true,"description":"The file format the statistics are for"},"daily":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"downloads":{"type":"number"},"trafficMb":{"type":"number"},"framework":{"type":"string"}},"required":["date","downloads","trafficMb","framework"],"additionalProperties":false}},"monthly":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"downloads":{"type":"number"},"trafficMb":{"type":"number"},"framework":{"type":"string"}},"required":["date","downloads","trafficMb","framework"],"additionalProperties":false}},"totals":{"type":"object","properties":{"trafficMb":{"type":"number"},"downloads":{"type":"number"}},"required":["trafficMb","downloads"],"additionalProperties":false}},"required":["lokaliseProjectId","from","to","daily","monthly","totals"],"additionalProperties":false}}}}}}},"/v3/lokalise/projects/{lokaliseProjectId}/frameworks/{framework}":{"get":{"operationId":"get-ota-bundle","summary":"Get OTA bundle","tags":["OTA bundles"],"parameters":[{"schema":{"type":"string"},"in":"query","name":"appVersion","required":true,"description":"The application version has valid format"},{"schema":{"type":"number"},"in":"query","name":"transVersion","required":true,"description":"The translation version"},{"schema":{"type":"boolean","default":false},"in":"query","name":"prerelease","required":false,"description":"Prerelease"},{"schema":{"type":"string","minLength":10},"in":"path","name":"lokaliseProjectId","required":true,"description":"The lokalise project id"},{"schema":{"type":"string","enum":["ios_sdk","android_sdk","flutter_sdk"]},"in":"path","name":"framework","required":true,"description":"The bundle framework requested"}],"security":[{"sdkToken":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"url":{"type":"string","description":"Bundle URL"},"version":{"type":"number","description":"Translation version"}},"required":["url","version"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v3/teams/{teamId}/projects/{lokaliseProjectId}/tokens":{"get":{"operationId":"list-tokens","summary":"List tokens","tags":["SDK tokens"],"parameters":[{"schema":{"type":"number","minimum":0},"in":"path","name":"teamId","required":true,"description":"The team id"},{"schema":{"type":"string","minLength":1},"in":"path","name":"lokaliseProjectId","required":true,"description":"The project id"}],"security":[{"jwtToken":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number","minimum":1,"description":"The ID of the token"},"token":{"type":"string","minLength":1,"description":"The SDK token"},"projectId":{"type":"number","description":"The project id"},"lokaliseId":{"type":"number","nullable":true,"description":"External Id"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string"}],"description":"The timestamp of creation time"}},"required":["id","token","projectId","lokaliseId","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}}}},"post":{"operationId":"create-token","summary":"Create token","tags":["SDK tokens"],"parameters":[{"schema":{"type":"number","minimum":0},"in":"path","name":"teamId","required":true,"description":"The team id"},{"schema":{"type":"string","minLength":1},"in":"path","name":"lokaliseProjectId","required":true,"description":"The project id"}],"security":[{"jwtToken":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"number","minimum":1,"description":"The ID of the token"},"token":{"type":"string","minLength":1,"description":"The SDK token"},"projectId":{"type":"number","description":"The project id"},"lokaliseId":{"type":"number","nullable":true,"description":"External Id"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string"}],"description":"The timestamp of creation time"}},"required":["id","token","projectId","lokaliseId","createdAt"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v3/teams/{teamId}/projects/{lokaliseProjectId}/tokens/{tokenId}":{"delete":{"operationId":"delete-token","summary":"Delete token","tags":["SDK tokens"],"parameters":[{"schema":{"type":"number","minimum":0},"in":"path","name":"teamId","required":true,"description":"The team id"},{"schema":{"type":"string","minLength":1},"in":"path","name":"lokaliseProjectId","required":true,"description":"The project id"},{"schema":{"type":"number","minimum":1},"in":"path","name":"tokenId","required":true,"description":"The token id"}],"security":[{"jwtToken":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"number","description":"The token id"},"deleted":{"type":"boolean","description":"`true`, if deleted successfully"}},"required":["id","deleted"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v3/teams/{teamId}/projects/{lokaliseProjectId}/frameworks/{framework}/publish":{"post":{"operationId":"publish-bundle","summary":"Publish bundle","tags":["Publishing"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"bundleId":{"type":"number","description":"The bundle id"}},"required":["bundleId"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"number","minimum":0},"in":"path","name":"teamId","required":true,"description":"The team id"},{"schema":{"type":"string","minLength":1},"in":"path","name":"lokaliseProjectId","required":true,"description":"The project id"},{"schema":{"type":"string","enum":["ios_sdk","android_sdk","flutter_sdk"]},"in":"path","name":"framework","required":true,"description":"Bundle framework."}],"security":[{"jwtToken":[]}],"responses":{"204":{"description":"Empty response","content":{"application/json":{"schema":{"not":{},"description":"Empty response"}}}}}}},"/v3/teams/{teamId}/projects/{lokaliseProjectId}/frameworks/{framework}/stage":{"post":{"operationId":"stage-bundle","summary":"Stage bundle","tags":["Publishing"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"bundleId":{"type":"number","description":"The bundle id"}},"required":["bundleId"],"additionalProperties":false}}},"required":true},"parameters":[{"schema":{"type":"number","minimum":0},"in":"path","name":"teamId","required":true,"description":"The team id"},{"schema":{"type":"string","minLength":1},"in":"path","name":"lokaliseProjectId","required":true,"description":"The project id"},{"schema":{"type":"string","enum":["ios_sdk","android_sdk","flutter_sdk"]},"in":"path","name":"framework","required":true,"description":"Bundle framework."}],"security":[{"jwtToken":[]}],"responses":{"204":{"description":"Empty response","content":{"application/json":{"schema":{"not":{},"description":"Empty response"}}}}}}}},"servers":[{"url":"https://ota.www.wwealerts.com"}],"x-readme":{"explorer-enabled":true,"proxy-enabled":true,"samples-enabled":true}}