# API specification

## POST /api/v1/links

>

```json
{"openapi":"3.0.0","info":{"title":"Tranzo API specification","version":"1.0.0"},"tags":[{"name":"API specification"}],"servers":[{"url":"https://api.tranzo.io","description":"Public API"}],"security":[{"ApiToken":[]}],"components":{"securitySchemes":{"ApiToken":{"type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"CreatePublicContentLinkHttpRequest":{"properties":{"name":{"type":"string","default":""},"target_link":{"type":"string","default":""},"project_guid":{"type":"string","default":null,"nullable":true},"source_code":{"type":"string","default":null,"nullable":true},"description":{"type":"string","default":null,"nullable":true}},"type":"object"},"ContentLinkDto":{"required":["guid","name","source","project","target_link","generated_link"],"properties":{"guid":{"type":"string"},"name":{"type":"string"},"source":{"type":"string"},"project":{"$ref":"#/components/schemas/ProjectDto"},"target_link":{"type":"string"},"generated_link":{"type":"string"},"created_at":{"type":"string","default":null,"nullable":true},"description":{"type":"string","default":null,"nullable":true}},"type":"object"},"ProjectDto":{"required":["guid","name"],"properties":{"guid":{"type":"string"},"name":{"type":"string"},"comment":{"type":"string","default":null,"nullable":true},"sites":{"type":"array","items":{"type":"string"},"default":[]}},"type":"object"},"ErrorDto":{"properties":{"error":{"type":"string","default":"Some error text"}},"type":"object"},"ValidationErrorDto":{"properties":{"message":{"type":"string","default":"Some validation error text"},"fields":{"type":"object","default":[],"additionalProperties":{"type":"array","items":{"type":"string"}}}},"type":"object"}}},"paths":{"/api/v1/links":{"post":{"tags":["API specification"],"operationId":"post_create_link","requestBody":{"description":"Request object","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePublicContentLinkHttpRequest"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentLinkDto"}}}},"400":{"description":"Incorrect data problem","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorDto"}}}},"403":{"description":"Authorization or subscription limit problem","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorDto"}}}},"404":{"description":"Not found data problem","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorDto"}}}},"422":{"description":"Validation data problem","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorDto"}}}},"429":{"description":"Rate limit problem","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorDto"}}}},"500":{"description":"Service error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorDto"}}}}}}}}}
```

## GET /api/v1/sources

>

```json
{"openapi":"3.0.0","info":{"title":"Tranzo API specification","version":"1.0.0"},"tags":[{"name":"API specification"}],"servers":[{"url":"https://api.tranzo.io","description":"Public API"}],"paths":{"/api/v1/sources":{"get":{"tags":["API specification"],"operationId":"get_link_source_dictionary","responses":{"200":{"description":"Available sources for links","content":{"application/json":{"schema":{"properties":{"sources":{"type":"array","items":{"$ref":"#/components/schemas/ContentLinkSourceDto"}},"total":{"type":"integer","default":1}},"type":"object"}}}}}}}},"components":{"schemas":{"ContentLinkSourceDto":{"required":["code","name"],"properties":{"code":{"type":"string"},"name":{"type":"string"}},"type":"object"}}}}
```

## GET /api/v1/projects

>

```json
{"openapi":"3.0.0","info":{"title":"Tranzo API specification","version":"1.0.0"},"tags":[{"name":"API specification"}],"servers":[{"url":"https://api.tranzo.io","description":"Public API"}],"security":[{"ApiToken":[]}],"components":{"securitySchemes":{"ApiToken":{"type":"apiKey","name":"Authorization","in":"header"}},"schemas":{"ProjectDto":{"required":["guid","name"],"properties":{"guid":{"type":"string"},"name":{"type":"string"},"comment":{"type":"string","default":null,"nullable":true},"sites":{"type":"array","items":{"type":"string"},"default":[]}},"type":"object"},"ErrorDto":{"properties":{"error":{"type":"string","default":"Some error text"}},"type":"object"}}},"paths":{"/api/v1/projects":{"get":{"tags":["API specification"],"operationId":"get_get_projects","responses":{"200":{"description":"Available projects for the user","content":{"application/json":{"schema":{"properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/ProjectDto"}},"total":{"type":"integer","default":1}},"type":"object"}}}},"403":{"description":"Authorization problem","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorDto"}}}},"429":{"description":"Rate limit problem","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorDto"}}}}}}}}}
```
