Handle projects

Create or manage your existing projects

Once you have gone through the previous steps, you are ready to create your project or update existing ones.

Authentication

cURL request

To be able to perform actions on our API, you need to be authenticated. To do this, use the following endpoint.

curl -XPOST 'https://primary-market-api-develop.tokeny.com/auth/local' \
--header 'Content-Type: application/json' \
--data-raw '{
    "identifier":"[email protected]",
    "password": "my-password"
}'

Sample response

{
    "jwt": "<jwt>",
    "user": {
        "id": 1,
        "username": "Username",
        "email": "[email protected]",
        "provider": "local",
        "confirmed": true,
        "blocked": false,
        "role": {
            "id": 34,
            "name": "Projects creators",
            "description": "Authors of projects, authenticated with the permission to manage projects, categories, issuers and disclaimers.",
            "type": "projects_manager"
        },
        "created_at": "2021-03-17T16:14:14.286Z",
        "updated_at": "2021-03-17T16:16:00.097Z"
    }
}

jwt is the jwt token that you will need to perform the next operations

Troubleshooting

{
    "statusCode": 400,
    "error": "Bad Request",
    "message": [
        {
            "messages": [
                {
                    "id": "Auth.form.error.invalid",
                    "message": "Identifier or password invalid."
                }
            ]
        }
    ],
    "data": [
        {
            "messages": [
                {
                    "id": "Auth.form.error.invalid",
                    "message": "Identifier or password invalid."
                }
            ]
        }
    ]
}

The status code can be either:

  • 400: one of the specified credential is wrong, please check them again. In case you lost your password, please contact [email protected]
  • 401: you are not allowed to connect to the API. If you think it is a mistake, please contact your administrator or [email protected]

Retrieve the existing categories

cURL

If categories were previously created in our system, you can retrieve them easily with the following request.

curl -XGET 'https://primary-market-api-develop.tokeny.com/projects' \
--header 'Authorization: Bearer <jwt>'

jwt is the authentication token you received on the Authentication step.

Sample response

[
    {
        "id": 37,
        "title": "My first project",
        "short_description": null,
        "long_description": "This is a just a little bit longer description",
        "shareable": null,
        "published_at": "2021-03-18T15:40:24.102Z",
        "created_at": "2021-03-18T15:40:24.136Z",
        "updated_at": "2021-03-18T15:40:24.136Z",
        "Investor_types": null,
        "subtitle": "My amazing first project",
        "small_description": "This is a small description",
        "investment_details": {
            "id": 4,
            "token_name": "STO Token",
            "token_symbol": "STOTKN",
            "token_total_supply": "100000000",
            "investor_type": "Individual",
            "place_of_origin": "Luxembourg",
            "jurisdiction": "Luxembourg",
            "issuer": {
                "id": 1,
                "published_at": "2021-03-18T09:37:59.624Z",
                "created_at": "2021-03-18T09:37:59.632Z",
                "updated_at": "2021-03-18T09:48:17.914Z",
                "name": "The new name of 'The company'",
                "address": "1 main street",
                "country_of_residence": "Luxembourg",
                "country_of_incorporation": "Luxembourg",
                "registration_number": "1234567890",
                "onchainid": "0xDbF8cb0D8b1164661f1e02D63c03A47705E0F4d5"
            },
            "instrument_type": "Fund",
            "instrument_identifier": "LU1234567890",
            "allowed_currencies": "USD, EUR, JPY",
            "creation_date": "2021-03-18",
            "expiration_date": "2021-03-18",
            "last_update_date": "2021-03-18",
            "last_nav_date": "2021-03-18",
            "token_standard": "TREX",
            "open_secondary_market": false,
            "target_raise": {
                "id": 19,
                "currency": "USD",
                "amount": 100000
            },
            "minimal_investment": {
                "id": 20,
                "currency": "USD",
                "amount": 1000
            },
            "maximal_investment": {
                "id": 21,
                "currency": "USD",
                "amount": 2000
            },
            "last_nav": {
                "id": 22,
                "currency": "USD",
                "amount": 25
            },
            "soft_cap": {
                "id": 23,
                "currency": "USD",
                "amount": 10000
            },
            "hard_cap": {
                "id": 24,
                "currency": "USD",
                "amount": 75000
            },
            "team": [
                {
                    "id": 4,
                    "name": "STO Team",
                    "title": "The STO dream team",
                    "profile_picture": {
                        "id": 36,
                        "name": "Capture d’écran 2021-03-16 à 15.21.55.png",
                        "alternativeText": null,
                        "caption": null,
                        "width": 1092,
                        "height": 102,
                        "formats": {
                            "large": {
                                "ext": ".png",
                                "url": "/uploads/large_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                                "hash": "large_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                                "mime": "image/png",
                                "name": "large_Capture d’écran 2021-03-16 à 15.21.55.png",
                                "path": null,
                                "size": 22.3,
                                "width": 1000,
                                "height": 93
                            },
                            "small": {
                                "ext": ".png",
                                "url": "/uploads/small_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                                "hash": "small_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                                "mime": "image/png",
                                "name": "small_Capture d’écran 2021-03-16 à 15.21.55.png",
                                "path": null,
                                "size": 8.32,
                                "width": 500,
                                "height": 47
                            },
                            "medium": {
                                "ext": ".png",
                                "url": "/uploads/medium_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                                "hash": "medium_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                                "mime": "image/png",
                                "name": "medium_Capture d’écran 2021-03-16 à 15.21.55.png",
                                "path": null,
                                "size": 14.78,
                                "width": 750,
                                "height": 70
                            },
                            "thumbnail": {
                                "ext": ".png",
                                "url": "/uploads/thumbnail_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                                "hash": "thumbnail_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                                "mime": "image/png",
                                "name": "thumbnail_Capture d’écran 2021-03-16 à 15.21.55.png",
                                "path": null,
                                "size": 3.11,
                                "width": 245,
                                "height": 23
                            }
                        },
                        "hash": "Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                        "ext": ".png",
                        "mime": "image/png",
                        "size": 10.62,
                        "url": "/uploads/Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                        "previewUrl": null,
                        "provider": "local",
                        "provider_metadata": null,
                        "created_at": "2021-03-18T15:27:46.731Z",
                        "updated_at": "2021-03-18T15:27:46.731Z"
                    }
                }
            ],
            "documents": [
                {
                    "id": 37,
                    "name": "sample.pdf",
                    "alternativeText": null,
                    "caption": null,
                    "width": null,
                    "height": null,
                    "formats": null,
                    "hash": "sample_30cb8454f7",
                    "ext": ".pdf",
                    "mime": "application/pdf",
                    "size": 3.03,
                    "url": "/uploads/sample_30cb8454f7.pdf",
                    "previewUrl": null,
                    "provider": "local",
                    "provider_metadata": null,
                    "created_at": "2021-03-18T15:39:43.763Z",
                    "updated_at": "2021-03-18T15:39:43.763Z"
                }
            ]
        },
        "header_image": null,
        "disclaimers": [
            {
                "id": 2,
                "disclaimer_content": "My first disclaimer with some content **and some styling** *Some other* <u>And last one</u> ~~Scratch that~~ \n - With non-numbered lists \n - and a second item \n 1. A numbered list \n 2. With another item \n ```Some more styling``` \n > An inspiring quote \n [And a link to your website](wwww.google.com) \n Images are also allowed",
                "published_at": "2021-03-18T10:33:44.740Z",
                "created_at": "2021-03-18T10:33:44.743Z",
                "updated_at": "2021-03-18T10:33:44.743Z"
            }
        ]
    }
]

Troubleshooting

{
    "statusCode": 403,
    "error": "Forbidden",
    "message": "Forbidden"
}

statusCode can be:

  • 401: your authentication token is invalid or has expired. Please go back to the Authentication step and retry
  • 403: you are not authorized to access this resource. If you think this is an error, contact your administrator or [email protected].

Create a project

Upload documents

If you need some documents to be linked to your project, you need to upload them to our system first.

cURL

curl -XPOST 'https://primary-market-api-develop.tokeny.com/upload' \
--header 'Authorization: Bearer <jwt>' \
--form 'files=@"path/to/file.png"'

You can upload:

  • Media files (images, videos)
  • Text files (pdf, csv)

jwt is the authorization token you retrieved from the Authentication step.

Sample response

[
    {
        "id": 36,
        "name": "my-file.png",
        "alternativeText": null,
        "caption": null,
        "width": 1092,
        "height": 102,
        "formats": {
            "large": {
                "ext": ".png",
                "url": "/uploads/large_my-file.png",
                "hash": "large_my-file",
                "mime": "image/png",
                "name": "large_my-file.png",
                "path": null,
                "size": 22.3,
                "width": 1000,
                "height": 93
            },
            "small": {
                "ext": ".png",
                "url": "/uploads/small_my-file.png",
                "hash": "small_my-file",
                "mime": "image/png",
                "name": "small_my-file.png",
                "path": null,
                "size": 8.32,
                "width": 500,
                "height": 47
            },
            "medium": {
                "ext": ".png",
                "url": "/uploads/medium_my-file.png",
                "hash": "medium_my-file",
                "mime": "image/png",
                "name": "medium_my-file.png",
                "path": null,
                "size": 14.78,
                "width": 750,
                "height": 70
            },
            "thumbnail": {
                "ext": ".png",
                "url": "/uploads/thumbnail_my-file.png",
                "hash": "thumbnail_my-file",
                "mime": "image/png",
                "name": "thumbnail_my-file.png",
                "path": null,
                "size": 3.11,
                "width": 245,
                "height": 23
            }
        },
        "hash": "my-file",
        "ext": ".png",
        "mime": "image/png",
        "size": 10.62,
        "url": "/uploads/my-file.png",
        "previewUrl": null,
        "provider": "local",
        "provider_metadata": null,
        "created_at": "2021-03-18T15:27:46.731Z",
        "updated_at": "2021-03-18T15:27:46.731Z",
        "related": []
    }
]

Troubleshooting

{
    "statusCode": 403,
    "error": "Forbidden",
    "message": "Forbidden"
}

statusCode can be:

  • 400: you forgot to specify the file to be uploaded or the form-data doesn't match the required format
  • 401: your authentication token is invalid or has expired. Please go back to the Authentication step and retry
  • 403: you are not authorized to access this resource. If you think this is an error, contact your administrator or [email protected].

Create a project with a linked document

cURL

To create a new project, use the following endpoint

curl -XPOST 'https://primary-market-api-develop.tokeny.com/projects' \
--header 'Authorization: Bearer <jwt>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "title": "<title>",
  "subtitle": "<subtitle>",
  "short_description": "<short_description>",
  "long_description": "<long_description>",
  "disclaimers": [
    "<disclaimer_1_id>"
  ],
  "investment_details": {
    "token_name": "<token_name>",
    "token_symbol": "<token_symbol>",
    "token_total_supply": <token_total_supply>,
    "target_raise": {
      "currency": "<target_raise_currency>",
      "amount": <target_raise_amount>
    },
    "investor_type": "<investor_type>",
    "place_of_origin": "<place_of_origin>",
    "jurisdiction": "<jurisdiction>",
    "issuer": {
      "id": "<issuer_id>"
    },
    "minimal_investment": {
      "currency": "<minimal_investment_currency>",
      "amount": <minimal_investment_amount>
    },
    "maximal_investment": {
      "currency": "<maximal_investment_currency>",
      "amount": <maximal_investment_amount>
    },
    "last_nav": {
      "currency": "<last_nav_currency>",
      "amount": <last_nav_amount>
    },
    "soft_cap": {
      "currency": "<soft_cap_currency>",
      "amount": <soft_cap_amount>
    },
    "hard_cap": {
      "currency": "<hard_cap_currency>",
      "amount": <hard_cap_amount>
    },
    "team": [
      {
        "name": "<team_name>",
        "title": "<team_title>",
        "profile_picture": {
            "id": <team_profile_picture_id>
        }
      }
    ],
    "documents": [{
        "id": <document_id>
    }],
    "instrument_type": "<instrument_type>",
    "instrument_identifier": "<instrument_identifier>",
    "allowed_currencies": "<allowed_currencies>",
    "creation_date": "<project_creation_date>",
    "expiration_date": "<project_expiration_date>",
    "last_update_date": "<project_last_update_date>",
    "last_nav_date": "<project_last_nav_date>",
    "token_standard": "<token_standard>",
    "open_secondary_market": <open_secondary_network>
  },
  "published_at": "<published_date>"
}'

title: Title of the project
subtitle: Subtitle of the project
short_description: Short description of the project
long_description: Long description. Markdown is supported for this field.
disclaimer_id: The id of the disclaimer, as created in the Handle disclaimer page.
token_name: The name of the token representing the project
token_symbol: The symbol of the token representing the project
token_total_supply: The total supply of tokens representing the project
target_raise_currency: The currency of the target raise of the project
target_raise_amount: The amount of the target raise of the project
investor_type: The investor type allowed for the project. Must be "Individual", "Institution" or "Both"
place_of_origin: The place of origin of the project
jurisdiction: The jurisdiction which applies on the project
issuer_id: The identifier of the issuer, as defined in the Handle the issuer details page
minimal_investment_currency: The currency of the minimal investment required
minimal_investment_amount: The amount of the minimal investment required
maximal_investment_currency: The currency of the maximal investment required
maximal_investment_amount: The amount of the maximal investment required
last_nav_currency: The currency of the last valuation of the project
last_nav_amount: The amount of the last valuation of the project
soft_cap_currency: The currency of the soft cap of the project
soft_cap_amount: The amount of the soft cap of the project
hard_cap_currency: The currency of hard soft cap of the project
hard_cap_amount: The amount of the soft cap of the project
team_name: The name of the team behind the project
team_title: The title of the team behind the project
team_profile_picture_id: The picture representing the project
document_id: The id of the document to be attached to the project, as retrieved from the "upload documents" step.
instrument_type: The type of the underlying instrument
instrument_identifier: The identifier of the underlying instrument
allowed_currencies: The currencies allowed in the project
project_creation_date: The creation date of the project
project_expiration_date: The expiration date of the project
project_last_update_date: The last update date of the project
project_last_nav_date: The last nav date of the project
token_standard: The standard of the token representing the project
open_secondary_network: The openness of the project to the secondary market, upon completion
published_date: The publish date of the project. Set it in the future if you want to set the project in draft state.

Sample response

{
    "id": 37,
    "title": "My first project",
    "short_description": null,
    "long_description": "This is a just a little bit longer description",
    "shareable": null,
    "published_at": "2021-03-18T15:40:24.102Z",
    "created_at": "2021-03-18T15:40:24.136Z",
    "updated_at": "2021-03-18T15:40:24.136Z",
    "Investor_types": null,
    "subtitle": "My amazing first project",
    "small_description": "This is a small description",
    "investment_details": {
        "id": 4,
        "token_name": "STO Token",
        "token_symbol": "STOTKN",
        "token_total_supply": "100000000",
        "investor_type": "Individual",
        "place_of_origin": "Luxembourg",
        "jurisdiction": "Luxembourg",
        "issuer": {
            "id": 1,
            "published_at": "2021-03-18T09:37:59.624Z",
            "created_at": "2021-03-18T09:37:59.632Z",
            "updated_at": "2021-03-18T09:48:17.914Z",
            "name": "The new name of 'The company'",
            "address": "1 main street",
            "country_of_residence": "Luxembourg",
            "country_of_incorporation": "Luxembourg",
            "registration_number": "1234567890",
            "onchainid": "0xDbF8cb0D8b1164661f1e02D63c03A47705E0F4d5"
        },
        "instrument_type": "Fund",
        "instrument_identifier": "LU1234567890",
        "allowed_currencies": "USD, EUR, JPY",
        "creation_date": "2021-03-18",
        "expiration_date": "2021-03-18",
        "last_update_date": "2021-03-18",
        "last_nav_date": "2021-03-18",
        "token_standard": "TREX",
        "open_secondary_market": false,
        "target_raise": {
            "id": 19,
            "currency": "USD",
            "amount": 100000
        },
        "minimal_investment": {
            "id": 20,
            "currency": "USD",
            "amount": 1000
        },
        "maximal_investment": {
            "id": 21,
            "currency": "USD",
            "amount": 2000
        },
        "last_nav": {
            "id": 22,
            "currency": "USD",
            "amount": 25
        },
        "soft_cap": {
            "id": 23,
            "currency": "USD",
            "amount": 10000
        },
        "hard_cap": {
            "id": 24,
            "currency": "USD",
            "amount": 75000
        },
        "team": [
            {
                "id": 4,
                "name": "STO Team",
                "title": "The STO dream team",
                "profile_picture": {
                    "id": 36,
                    "name": "Capture d’écran 2021-03-16 à 15.21.55.png",
                    "alternativeText": null,
                    "caption": null,
                    "width": 1092,
                    "height": 102,
                    "formats": {
                        "large": {
                            "ext": ".png",
                            "url": "/uploads/large_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                            "hash": "large_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                            "mime": "image/png",
                            "name": "large_Capture d’écran 2021-03-16 à 15.21.55.png",
                            "path": null,
                            "size": 22.3,
                            "width": 1000,
                            "height": 93
                        },
                        "small": {
                            "ext": ".png",
                            "url": "/uploads/small_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                            "hash": "small_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                            "mime": "image/png",
                            "name": "small_Capture d’écran 2021-03-16 à 15.21.55.png",
                            "path": null,
                            "size": 8.32,
                            "width": 500,
                            "height": 47
                        },
                        "medium": {
                            "ext": ".png",
                            "url": "/uploads/medium_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                            "hash": "medium_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                            "mime": "image/png",
                            "name": "medium_Capture d’écran 2021-03-16 à 15.21.55.png",
                            "path": null,
                            "size": 14.78,
                            "width": 750,
                            "height": 70
                        },
                        "thumbnail": {
                            "ext": ".png",
                            "url": "/uploads/thumbnail_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                            "hash": "thumbnail_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                            "mime": "image/png",
                            "name": "thumbnail_Capture d’écran 2021-03-16 à 15.21.55.png",
                            "path": null,
                            "size": 3.11,
                            "width": 245,
                            "height": 23
                        }
                    },
                    "hash": "Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                    "ext": ".png",
                    "mime": "image/png",
                    "size": 10.62,
                    "url": "/uploads/Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                    "previewUrl": null,
                    "provider": "local",
                    "provider_metadata": null,
                    "created_at": "2021-03-18T15:27:46.731Z",
                    "updated_at": "2021-03-18T15:27:46.731Z"
                }
            }
        ],
        "documents": [
            {
                "id": 37,
                "name": "sample.pdf",
                "alternativeText": null,
                "caption": null,
                "width": null,
                "height": null,
                "formats": null,
                "hash": "sample_30cb8454f7",
                "ext": ".pdf",
                "mime": "application/pdf",
                "size": 3.03,
                "url": "/uploads/sample_30cb8454f7.pdf",
                "previewUrl": null,
                "provider": "local",
                "provider_metadata": null,
                "created_at": "2021-03-18T15:39:43.763Z",
                "updated_at": "2021-03-18T15:39:43.763Z"
            }
        ]
    },
    "header_image": null,
    "disclaimers": [
        {
            "id": 2,
            "disclaimer_content": "My first disclaimer with some content **and some styling** *Some other* <u>And last one</u> ~~Scratch that~~ \n - With non-numbered lists \n - and a second item \n 1. A numbered list \n 2. With another item \n ```Some more styling``` \n > An inspiring quote \n [And a link to your website](wwww.google.com) \n Images are also allowed",
            "published_at": "2021-03-18T10:33:44.740Z",
            "created_at": "2021-03-18T10:33:44.743Z",
            "updated_at": "2021-03-18T10:33:44.743Z"
        }
    ]
}

Troubleshooting

{
    "statusCode": 403,
    "error": "Forbidden",
    "message": "Forbidden"
}

statusCode can be:

  • 400: you forgot to specify a mandatory field or the field doesn't match the validation rules
  • 401: your authentication token is invalid. Go back to the Authentication step and retry.
  • 403: you are not allowed to create categories. If you think this is an error, contact your administrator or [email protected]

Draft project

If you don't want your project to show up right away and keep it as a draft, simply specify a "publication_date" in your create project request and set it to the future.

Update a project

cURL

If you need to update any information of a project, use the following request.

curl -XPUT 'https://primary-market-api-develop.tokeny.com/projects/<project_id>' \
--header 'Authorization: Bearer <jwt>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "title": "<title>",
  "subtitle": "<subtitle>",
  "short_description": "<short_description>",
  "long_description": "<long_description>",
  "disclaimers": [
    "<disclaimer_1_id>"
  ],
  "investment_details": {
    "token_name": "<token_name>",
    "token_symbol": "<token_symbol>",
    "token_total_supply": <token_total_supply>,
    "target_raise": {
      "currency": "<target_raise_currency>",
      "amount": <target_raise_amount>
    },
    "investor_type": "<investor_type>",
    "place_of_origin": "<place_of_origin>",
    "jurisdiction": "<jurisdiction>",
    "issuer": {
      "id": "<issuer_id>"
    },
    "minimal_investment": {
      "currency": "<minimal_investment_currency>",
      "amount": <minimal_investment_amount>
    },
    "maximal_investment": {
      "currency": "<maximal_investment_currency>",
      "amount": <maximal_investment_amount>
    },
    "last_nav": {
      "currency": "<last_nav_currency>",
      "amount": <last_nav_amount>
    },
    "soft_cap": {
      "currency": "<soft_cap_currency>",
      "amount": <soft_cap_amount>
    },
    "hard_cap": {
      "currency": "<hard_cap_currency>",
      "amount": <hard_cap_amount>
    },
    "team": [
      {
        "name": "<team_name>",
        "title": "<team_title>",
        "profile_picture": {
            "id": <team_profile_picture_id>
        }
      }
    ],
    "documents": [{
        "id": <document_id>
    }],
    "instrument_type": "<instrument_type>",
    "instrument_identifier": "<instrument_identifier>",
    "allowed_currencies": "<allowed_currencies>",
    "creation_date": "<project_creation_date>",
    "expiration_date": "<project_expiration_date>",
    "last_update_date": "<project_last_update_date>",
    "last_nav_date": "<project_last_nav_date>",
    "token_standard": "<token_standard>",
    "open_secondary_market": <open_secondary_network>
  },
  "published_at": "<published_date>"
}'

jwt is the authorization token retrieved from the Authentication step
project_id: The id of the project to be updated
title: Title of the project
subtitle: Subtitle of the project
short_description: Short description of the project
long_description: Long description. Markdown is supported for this field.
disclaimer_id: The id of the disclaimer, as created in the Handle disclaimer page. Only one disclaimer is allowed per project.
token_name: The name of the token representing the project
token_symbol: The symbol of the token representing the project
token_total_supply: The total supply of tokens representing the project
target_raise_currency: The currency of the target raise of the project
target_raise_amount: The amount of the target raise of the project
investor_type: The investor type allowed for the project. Must be "Individual", "Institution" or "Both"
place_of_origin: The place of origin of the project
jurisdiction: The jurisdiction which applies on the project
issuer_id: The identifier of the issuer, as defined in the Handle the issuer details page
minimal_investment_currency: The currency of the minimal investment required
minimal_investment_amount: The amount of the minimal investment required
maximal_investment_currency: The currency of the maximal investment required
maximal_investment_amount: The amount of the maximal investment required
last_nav_currency: The currency of the last valuation of the project
last_nav_amount: The amount of the last valuation of the project
soft_cap_currency: The currency of the soft cap of the project
soft_cap_amount: The amount of the soft cap of the project
hard_cap_currency: The currency of hard soft cap of the project
hard_cap_amount: The amount of the soft cap of the project
team_name: The name of the team behind the project
team_title: The title of the team behind the project
team_profile_picture_id: The picture representing the project
document_id: The id of the document to be attached to the project, as retrieved from the "upload documents" step. Several documents can be added.
instrument_type: The type of the underlying instrument
instrument_identifier: The identifier of the underlying instrument
allowed_currencies: The currencies allowed in the project
project_creation_date: The creation date of the project
project_expiration_date: The expiration date of the project
project_last_update_date: The last update date of the project
project_last_nav_date: The last nav date of the project
token_standard: The standard of the token representing the project
open_secondary_network: The openness of the project to the secondary market, upon completion
published_date: The publish date of the project. Set it in the future if you want to set the project in draft state.

Sample response

{
    "id": 36,
    "title": "My new first project",
    "short_description": null,
    "long_description": "This is a just a little bit longer description",
    "shareable": null,
    "published_at": null,
    "created_at": "2021-03-18T14:55:41.341Z",
    "updated_at": "2021-03-18T16:32:50.690Z",
    "Investor_types": null,
    "subtitle": "My amazing first project",
    "small_description": "Test",
    "investment_details": {
        "id": 8,
        "token_name": "STO Token",
        "token_symbol": "STOTKN",
        "token_total_supply": "100000000",
        "investor_type": "Individual",
        "place_of_origin": "Luxembourg",
        "jurisdiction": "Luxembourg",
        "issuer": {
            "id": 1,
            "published_at": "2021-03-18T09:37:59.624Z",
            "created_at": "2021-03-18T09:37:59.632Z",
            "updated_at": "2021-03-18T09:48:17.914Z",
            "name": "The new name of 'The company'",
            "address": "1 main street",
            "country_of_residence": "Luxembourg",
            "country_of_incorporation": "Luxembourg",
            "registration_number": "1234567890",
            "onchainid": "0xDbF8cb0D8b1164661f1e02D63c03A47705E0F4d5"
        },
        "instrument_type": "Fund",
        "instrument_identifier": "LU1234567890",
        "allowed_currencies": "USD, EUR, JPY",
        "creation_date": "2021-03-18",
        "expiration_date": "2021-03-18",
        "last_update_date": "2021-03-18",
        "last_nav_date": "2021-03-18",
        "token_standard": "TREX",
        "open_secondary_market": false,
        "target_raise": {
            "id": 43,
            "currency": "USD",
            "amount": 100000
        },
        "minimal_investment": {
            "id": 44,
            "currency": "USD",
            "amount": 1000
        },
        "maximal_investment": {
            "id": 45,
            "currency": "USD",
            "amount": 2000
        },
        "last_nav": {
            "id": 46,
            "currency": "USD",
            "amount": 25
        },
        "soft_cap": {
            "id": 47,
            "currency": "USD",
            "amount": 10000
        },
        "hard_cap": {
            "id": 48,
            "currency": "USD",
            "amount": 75000
        },
        "team": [
            {
                "id": 8,
                "name": "STO Team",
                "title": "The STO dream team",
                "profile_picture": {
                    "id": 36,
                    "name": "Capture d’écran 2021-03-16 à 15.21.55.png",
                    "alternativeText": null,
                    "caption": null,
                    "width": 1092,
                    "height": 102,
                    "formats": {
                        "large": {
                            "ext": ".png",
                            "url": "/uploads/large_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                            "hash": "large_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                            "mime": "image/png",
                            "name": "large_Capture d’écran 2021-03-16 à 15.21.55.png",
                            "path": null,
                            "size": 22.3,
                            "width": 1000,
                            "height": 93
                        },
                        "small": {
                            "ext": ".png",
                            "url": "/uploads/small_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                            "hash": "small_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                            "mime": "image/png",
                            "name": "small_Capture d’écran 2021-03-16 à 15.21.55.png",
                            "path": null,
                            "size": 8.32,
                            "width": 500,
                            "height": 47
                        },
                        "medium": {
                            "ext": ".png",
                            "url": "/uploads/medium_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                            "hash": "medium_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                            "mime": "image/png",
                            "name": "medium_Capture d’écran 2021-03-16 à 15.21.55.png",
                            "path": null,
                            "size": 14.78,
                            "width": 750,
                            "height": 70
                        },
                        "thumbnail": {
                            "ext": ".png",
                            "url": "/uploads/thumbnail_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                            "hash": "thumbnail_Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                            "mime": "image/png",
                            "name": "thumbnail_Capture d’écran 2021-03-16 à 15.21.55.png",
                            "path": null,
                            "size": 3.11,
                            "width": 245,
                            "height": 23
                        }
                    },
                    "hash": "Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c",
                    "ext": ".png",
                    "mime": "image/png",
                    "size": 10.62,
                    "url": "/uploads/Capture_d_ecran_2021_03_16_a_15_21_55_14bc8d861c.png",
                    "previewUrl": null,
                    "provider": "local",
                    "provider_metadata": null,
                    "created_at": "2021-03-18T15:27:46.731Z",
                    "updated_at": "2021-03-18T15:27:46.731Z"
                }
            }
        ],
        "documents": [
            {
                "id": 37,
                "name": "sample.pdf",
                "alternativeText": null,
                "caption": null,
                "width": null,
                "height": null,
                "formats": null,
                "hash": "sample_30cb8454f7",
                "ext": ".pdf",
                "mime": "application/pdf",
                "size": 3.03,
                "url": "/uploads/sample_30cb8454f7.pdf",
                "previewUrl": null,
                "provider": "local",
                "provider_metadata": null,
                "created_at": "2021-03-18T15:39:43.763Z",
                "updated_at": "2021-03-18T15:39:43.763Z"
            }
        ]
    },
    "header_image": {
        "id": 35,
        "name": "Capture d’écran 2021-03-18 à 11.45.51.png",
        "alternativeText": "",
        "caption": "",
        "width": 1382,
        "height": 758,
        "formats": {
            "large": {
                "ext": ".png",
                "url": "/uploads/large_Capture_d_ecran_2021_03_18_a_11_45_51_eeda5524d1.png",
                "hash": "large_Capture_d_ecran_2021_03_18_a_11_45_51_eeda5524d1",
                "mime": "image/png",
                "name": "large_Capture d’écran 2021-03-18 à 11.45.51.png",
                "path": null,
                "size": 73.36,
                "width": 1000,
                "height": 548
            },
            "small": {
                "ext": ".png",
                "url": "/uploads/small_Capture_d_ecran_2021_03_18_a_11_45_51_eeda5524d1.png",
                "hash": "small_Capture_d_ecran_2021_03_18_a_11_45_51_eeda5524d1",
                "mime": "image/png",
                "name": "small_Capture d’écran 2021-03-18 à 11.45.51.png",
                "path": null,
                "size": 27.97,
                "width": 500,
                "height": 274
            },
            "medium": {
                "ext": ".png",
                "url": "/uploads/medium_Capture_d_ecran_2021_03_18_a_11_45_51_eeda5524d1.png",
                "hash": "medium_Capture_d_ecran_2021_03_18_a_11_45_51_eeda5524d1",
                "mime": "image/png",
                "name": "medium_Capture d’écran 2021-03-18 à 11.45.51.png",
                "path": null,
                "size": 49.13,
                "width": 750,
                "height": 411
            },
            "thumbnail": {
                "ext": ".png",
                "url": "/uploads/thumbnail_Capture_d_ecran_2021_03_18_a_11_45_51_eeda5524d1.png",
                "hash": "thumbnail_Capture_d_ecran_2021_03_18_a_11_45_51_eeda5524d1",
                "mime": "image/png",
                "name": "thumbnail_Capture d’écran 2021-03-18 à 11.45.51.png",
                "path": null,
                "size": 9.59,
                "width": 245,
                "height": 134
            }
        },
        "hash": "Capture_d_ecran_2021_03_18_a_11_45_51_eeda5524d1",
        "ext": ".png",
        "mime": "image/png",
        "size": 54.85,
        "url": "/uploads/Capture_d_ecran_2021_03_18_a_11_45_51_eeda5524d1.png",
        "previewUrl": null,
        "provider": "local",
        "provider_metadata": null,
        "created_at": "2021-03-18T14:53:54.507Z",
        "updated_at": "2021-03-18T14:53:54.520Z"
    },
    "disclaimers": [
        {
            "id": 2,
            "disclaimer_content": "My first disclaimer with some content **and some styling** *Some other* <u>And last one</u> ~~Scratch that~~ \n - With non-numbered lists \n - and a second item \n 1. A numbered list \n 2. With another item \n ```Some more styling``` \n > An inspiring quote \n [And a link to your website](wwww.google.com) \n Images are also allowed",
            "published_at": "2021-03-18T10:33:44.740Z",
            "created_at": "2021-03-18T10:33:44.743Z",
            "updated_at": "2021-03-18T10:33:44.743Z"
        }
    ]
}

Troubleshooting

{
    "statusCode": 403,
    "error": "Forbidden",
    "message": "Forbidden"
}

statusCode can be:

  • 400: you forgot to specify a mandatory field or the field doesn't match the validation rules
  • 401: your authentication token is invalid. Go back to the Authentication step and retry.
  • 403: you are not allowed to create categories. If you think this is an error, contact your administrator or [email protected]