Grand Shooting API Documentation (3.0.0)

Download OpenAPI specification:Download

Handle HTTP status

We respect HTTP standard and REST architecture.

Most of cases you will receive a success response contained in this table:

HTTP code Description
102 PENDING. The request is threated and takes some time.
200 OK, The request is threated with success.
201 Created, The request is threated with success and a content is created (e.g. for a POST request)
204 No Content, The request is threated with success but return no content in the response.

Please refer to the following table for identify your problem if you receive an HTTP error:

HTTP code Description
400 Bad request, in the response, you will see which field is missing or invalid.
401 Unauthorized, check if you passed the Authorization Header
404 Not found, the ressource is missing (e.g A user who have been deleted)
405 Method not allowed, the server know the endpoint used but don't permit this method
500 Internal server error, bad news it seems we have a problem

If you have an unidentified response, don't hesitate to contact our support.

Now you are be able to request all of our endpoints.

Rate limiting

Rate limiting is on account basis, or more accurately described, per authentication key. There is a limit on the number of simultaneous requests: you can call up to 5 requests per second.

When you exceed this rate limit for any endpoint of our API, the API will return a HTTP 429 “Too Many Requests” response code, and the following error will be returned in the response body:

{ "errors": [ { "message": "Rate limit exceeded" } ] }

The model

If you start coding with our API, you may be interested in having a first global overview of the main concepts behind Grand Shooting.

Note: The platform supports images and videos. This documentation is equally applicable to both and we may use indifferently the two words (images or videos). So, keep in mind that when we describe a feature, it is always applicable to both images and videos.

Productions and Benches

A production is a bunch of images that is processed according to a declared workflow. Every step of the workflow is called a bench.

A classic production is composed of 3 benches:

  1. Capture (corresponds to the “LIVE” feature of the web application)
  2. Retouching (often called “Phase 1”)
  3. Exports (see below) / Validation

You can have 2 retouching benches within the same production. It can be useful for instance if you want a first stage to clean up images with basic operations then a second stage with more in-depth retouching.

Retouching is optional: you can create a production with no retouching bench. On the contrary Capture, Exports and Validation are mandatory.

Be careful: you can update benches and delete retouching benches as long as no files has been loaded. If you delete a bench that contains files, they will be immediately deleted, and you won’t have the possibility to recover them.

To distinguish the benches within a production, the API includes a parameter called benchsetptype wich can take these values:

  • 10 – Capture
  • 20 – Retouching (phase 1)
  • 30 – Retouching (phase 2)
  • 40 – Exports / Validation

Exports and Validation

Exports refers to a specific bench of the production: the one before the validation bench.

The way you interact with images inside export and validation benches differs from the interactions within the first benches of the production: you load images to capture and retouching benches, but you just trigger exports to process retouched images. And the processed images are automatically dropped to the validation bench.

So, you never load images either to export benches nor to validation benches.

Be careful: don’t delete retouching benches if they already contain files. Otherwise you would not be able to trigger exports for this production anymore and you would have to start again with a new production.

Templates

Using the web application, you can create new productions from scratch then set up all the parameters by hand: the number of benches, user accesses on every bench, the settings for the export bench, and so on.

It doesn’t really have sense to give this level of precision from our API because the purpose of the API is to automate repetitive workflows.

That’s why you first create templates with predefined settings from the web application. Then, from the API, you instance new productions giving in parameters the Id of the template.

Shooting methods

Photo shoot sessions can be differentiated thanks to shooting methods.

Basically, a shooting method represents a specific way to get pictures of products: it can be products wared on models or it can be still life. You may also use different shooting methods to distinguish photos produced with different machines or technologies.

Therefore, shooting methods give you full control on how you want to monitor the productions: they appear on almost all reports and you will be able to filter for the values they can take.

Note: if you have questions about the best shooting method values for your organization, feel free to ask the support team for advice.

Shooting methods are set up from the web application with admin credentials. From the API, you can list them.

The catalog and its references

It is one of the big features of Grand Shooting: every image or video can be linked to a catalog. Thus, you will be able to organize image production by product references.

There is only one catalog. But you can combine products from different brands within the same catalog. The attributes stored in Grand Shooting are quite classic:

  • Up to 3 levels of categories (univers, gamme, family)
  • Brand Model
  • reference (product_ref)
  • Color
  • Size
  • Description,
  • collection,
  • gender
  • SKU
  • EAN

Every item in the catalog is identified in Grand Shooting by another attribute called 'ref' (for product reference). This 'ref' attribute can be a unique id, but it is commonly generated from other attributes.

For example, in the ready to wear market we need to take pictures not only of all product models but also of all color declinations. Then the ref attribute will be constructed from the model reference attribute concatenated with the color attribute.

Example: Model: S18BOHEMIAN
Color: 110
Ref: SS18BOHEMIAN_110

Important: keep in mind that 'ref' values should be unique in the catalog and that they refer to the product that need to be taken in photo.

The 'EAN' attribute is usefull if the samples do have barcodes. In the web application, typing the ref attribute of a product or scanning is barcode is strictly the same. That’s why 'EAN' values should also be unique.

Note: even if the attribute’s name is 'EAN', you don’t have to comply with 'EAN' standard (we don’t check the parity byte)

Note: sometimes you have multiple sizes of the same product references and you don’t know in advance which samples will be shot. Then you don’t know which 'EAN' have to be stored in you catalog. Don’t worry we already faced this issue many times, the support team will help you to find the solution.

Shotlist : list of products to be shot

From Grand Shooting’s web application, the guidelines define per product category how many images are attempted and what are the technical specifications of these images (in terms of size, resolution, ICC profile, …).

Shotlists make an inventory of existing images for every product in your catalog. They explicit the status of the images in your workflow and reveal alerts if an image does not comply with the guidelines.

More generally shotlists can be seen as the cockpit where you can see the work in progress from the point of view of the catalog.

Looks : group of references visible on the same images

This feature is useful especially for the ready to ware market.

Imagine a model wearing clothes: shoes, a pant, a shirt, a coat, … All these clothes make something up called a look.

In this case the looks are mostly composed before starting the photo shoot session. That’s why it makes sense to link images directly to the look and not to product references.

Be careful: the name of the looks have be different of the names of product references in the catalog.

Getting started

Our first production

So, let’s start with the API. We will stay simple and create a basic production. To do this, simply send the following request:

POST https://api-lr.grand-shooting.com/v3/v3/production

With the body:

    {  
    "smalltext": "My first production",  
    "startdate": "2017-03-27T07:00:00.000Z",
    "enddate": "2017-03-27T16:00:00.000Z",
    "timezone": "Europe/Paris",
    "tzoffset": 60,
    "shooting_method_id": 1,  
    "bench_template_id": 1  
    }

The 2 main parameters are 'shooting_method_id' and 'bench_template_id'. They refer to the shooting method and to the template. They are the only parameters that cannot be changed once the production is created.

We set a smalltext “'My first production'” that will be viewable on the web application as the title of the production.

The 'startdate' parameter gives information about the day the first images shall be uploaded to this production. Usually it is the date of the photo shoot session. The time zone is explicitly set.

'enddate', 'timezone' and 'tzoffset' are optional. In this example the parameters are set to a capture session starting at 7.00 am and ending at 4.00 pm. If omitted, the timezone is set to "Europe/Paris".

List the benches of a production

Now to list all the productions call this request:

GET /production

It will return an array with all the productions, like this one:

    [ 
        [
            {
            "smalltext": "My first production",
            "startdate": "2017-03-27T07:00:00.000Z",
            "enddate": null,
            "timezone": "Europe/Paris",
            "tzoffset": 60,
            "shooting_method_id": 1,
            "bench_id": 1,
            "parent_id": null,
            "root_id": 1,
            "benchsteptype": 10
            },
            {
            "smalltext": "My first production (Retouching)",
            "startdate": "2017-03-27T07:00:00.000Z",
            "enddate": null,
            "timezone": "Europe/Paris",
            "tzoffset": 60,
            "shooting_method_id": 1,
            "bench_id": 2,
            "parent_id": 1,
            "root_id": 1,
            "benchsteptype": 20
            },
            {
            "smalltext": "My first production (Export)",
            "startdate": "2017-03-27T07:00:00.000Z",
            "enddate": null,
            "timezone": "Europe/Paris",
            "tzoffset": 60,
            "shooting_method_id": 1,
            "bench_id": 3,
            "parent_id": 2,
            "root_id": 1,
            "benchsteptype": 40
            }
        ]
    ]

You can see that the previously created production contains 3 benches: Capture ('benchsteptype' = 10), Retouching ('benchsteptype' = 20) and validation ('benchsteptype' = 40).

Benches are chained:

  • The first bench of a production has no 'parent_id'.
  • The 'root_id' is the id of the first bench for all benches of the production.
  • From one bench to the next one you can see that the 'parent_id' changed.

Note : By convention, the 'smalltext' attribute of the first bench of a production is repeated for all benches ("My first production" in this example). Then, the specific name of a bench is set between parenthesis ("Retouching" and "Export" in this example). The first bench of a production can't have any specific name as it is always set as "Live".

If you want to list all productions but not all benches of production, you can filter the benches with null as parent_id.

Load bench of a production

If you need the details about a specific bench, you can call this endpoint:

GET /production/{bench_root_id}/bench/{bench_id}

You will get just the bench:

{
"smalltext": "My first production (Export)",
"startdate": "2017-03-27T07:00:00.000Z",
"enddate": null,
"timezone": "Europe/Paris",
"tzoffset": 60,
"shooting_method_id": 1,
"bench_id": 3,
"parent_id": 2,
"root_id": 1,
"benchsteptype": 40
}

List the pictures of a bench

Once you created a production and you know there are some pictures, you may want to list them. Super easy, just send this request:

GET https://api-lr.grand-shooting.com/v3/v3/picture?bench_id=3

In this example we list images from the third bench. The body of the response is an array of picture objects like this one:

{
"picture_id": 3,
"bench_id": 3,
"bench_root_id": 1,
"ref": "3596654282833",
"path": "4c76bb10-d028-4988-b008-01a97c38a232/3596654282833_3.jpg",
"smalltext": "3596654282833_3.jpg",
"picturestatus": 50,
"filesize": 503637,
"reference_id": 1,
"child_ids": [],
"parent_id": 2
}

File name and path

Basically you can consider that a bench is a secured folder in which files are stored. Files can be organized in subfolders and the path attribute indicates the exact location of a file inside the bench.

So, there might be 2 images with the same filename "3596654282833_3.jpg" in this bench. But there can be just one image with this path ""4c76bb10-d028-4988-b008-01a97c38a232/3596654282833_3.jpg".

Picture status

'picturestatus' attribute refers to the status of an image (or video) inside a production. It can take one of these values :

HTTP code Description
5 RESHOOT, Image to be shot again.
10 NOT SELECTED, Image in the Live with default status
30 SELECTED, Image in the Live selected for retouching
31 REFUSED, Image refused, need some more work
35 REFUSED, Image refused by the retouchers
40 FOR APPROVAL, Image submitted for approval
50 VALIDATED, Image validated
52 ERROR, Error during the tranfer to the DAM
55 RELEASED, Image transferred to the DAM

Head's up ! : the status of a picture and the type of its bench are correlated. For instance a bench that corresponds to a Live ('benchsteptype' = 10) should only have pictures with status 5, 10 or 30. And a bench that corresponds to a validation step should only have pictures with status above than 40, except for the refused image ('picturestatus' = 31).

Note : Even if an image is not selected (in the Live bench), it can be retouched in the retouching benches then exported for approval. And of course a refused image can be retouched again and exported again for approval.

If Grand Shooting is integrated with a PIM, a DAM or Amazon S3, images will automatically take these status after having been transferred. In most cases, only validated images are transferred.

What is the difference between the 2 REFUSED status ? The common way to refuse an image is in the export bench : the status value of the image is 31. But an image can also be refused by a retoucher in the bench for retouching : in this case the status value is 35.

Upload images

We learned how to list the productions and their benches. Now let's try to upload images.

POST /production/{bench_root_id}/bench/{bench_id}/upload

With a multipart body:

As you can see, it is very simple to integrate our API and manage image productions from your own applications: with few lines of code, you instantiate new productions then load / download images to / from the benches.

Keep in mind that the way you manage images within benches for capture and retouching differs from the interactions you can have with images within benches for export and validation.

Webhooks

Webhook is a pattern that allows external systems to be notified of events occuring in a Sass plaform.

Contribution

You can contribute urls in the administration console that will be notified of picture modifications events. You reference your url to be called for certain types of events :

  • picture creation
  • picture modification
  • picture deletion
  • reference creation
  • reference modification

Note : you can reference the same url for different types of events.

Process

When a picture is modified in Grand Shooting, the system stores the event in a queue. Every 10 seconds, events are read from the queue and sent to the external url in a "POST" http call with a JSON body containing modified data Example :

    {
      "account_id": 10229487,
      "topic": "pictures/update",
      "type": "picture",
      "ids": [
        175,
        176
      ],
      "picture_id": [ //Deprecated
        175,
        176
      ],
      "data": {
        "175": {
          "picture_id": 175,
          "bench_id": 19,
          "bench_root_id": 19,
          ...
        },
        "176": {
          "picture_id": 176,
          "bench_id": 19,
          "bench_root_id": 19,
          ...
        }
      }
    }
  • A message contains at most 50 data elements. (If there are more than 50 data elements modified, a second http call will be processed)
  • A message is concidered in success the url returns a http response code of 200
  • If a timeout occurs when calling the url or if it returns something else than a code 200, the message is concidered not delivered.
    • The system will retry twice to send the message (after 10 seconds, and after 1 minute)
    • The system won't send any other message to the url for the same topic until it gets a code 200 response or all 3 tries are sent.
  • Deprecation : picture_id array field is deprecated and will be removed in next major version. You should use ids field instead

broadcast

List broadcasts

Return an array of broadcasts with a pagination.

You can set the offset of pagination with the header 'offset'. Response headers:

  • 'X-Total-Count': Total number of items
  • 'X-Offset': Offset of the result
  • 'X-Count': Size of the result
Authorizations:
Bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create broadcast

You can create only 10 broadcasts

Authorizations:
Bearer
Request Body schema: application/json
name
string
type
required
string (Model60)
Enum: "FTP" "FTPS" "SFTP" "WEBDAV"
host
required
string

Host. Can be a domain name or an IP address. Can be followed by a port number.

user
required
string

User

password
required
string

Password

use_full_path
boolean

If true, the full path will be used for the file name

deposit_folder
string

The folder where the files will be deposited

date_from
string <date>

Media will be broadcasted from this date

double_validation
boolean

If true, media will be broadcasted after a second validation

cron
required
string^((((\d+,)+\d+|(\d+(\/|-|#)\d+)|\d+L?|\*(\/\d...

Cron expression with 6 fields for the broadcast

_extra
object (_extra)

Reserved for internal use

Responses

Request samples

Content type
application/json
{
  • "name": "FTP interne",
  • "type": "FTP",
  • "host": "ftp.mycompany.com:22",
  • "user": "Jean Blaguin",
  • "password": "my_very_serure_password",
  • "use_full_path": true,
  • "deposit_folder": "/root/mycollection/",
  • "date_from": "2017-01-01T00:00:00.000Z",
  • "double_validation": true,
  • "cron": "30 12,20 * * * *",
  • "_extra": { }
}

Response samples

Content type
application/json
{
  • "broadcast_id": 2,
  • "name": "FTP interne",
  • "type": "FTP",
  • "host": "ftp.mycompany.com:22",
  • "user": "Jean Blaguin",
  • "use_full_path": true,
  • "deposit_folder": "/root/mycollection/",
  • "date_from": "2017-01-01T00:00:00.000Z",
  • "double_validation": true,
  • "cron": "30 12,20 * * * *"
}

Get broadcast

Get specific broadcast.

Authorizations:
Bearer
path Parameters
broadcast_id
required
number >= 1

ID of broadcast

Responses

Response samples

Content type
application/json
{
  • "broadcast_id": 2,
  • "name": "FTP interne",
  • "type": "FTP",
  • "host": "ftp.mycompany.com:22",
  • "user": "Jean Blaguin",
  • "use_full_path": true,
  • "deposit_folder": "/root/mycollection/",
  • "date_from": "2017-01-01T00:00:00.000Z",
  • "double_validation": true,
  • "cron": "30 12,20 * * * *"
}

Modify broadcast

Modify all fields of a broadcast.

Authorizations:
Bearer
path Parameters
broadcast_id
required
number >= 1

ID of broadcast

Request Body schema: application/json
name
string
type
required
string (Model99)
Enum: "FTP" "FTPS" "SFTP" "WEBDAV"
host
required
string

Host. Can be a domain name or an IP address. Can be followed by a port number.

user
required
string

User

password
required
string

Password

use_full_path
boolean

If true, the full path will be used for the file name

deposit_folder
string

The folder where the files will be deposited

date_from
string <date>

Media will be broadcasted from this date

double_validation
boolean

If true, media will be broadcasted after a second validation

cron
required
string^((((\d+,)+\d+|(\d+(\/|-|#)\d+)|\d+L?|\*(\/\d...

Cron expression with 6 fields for the broadcast

_extra
object (_extra)

Reserved for internal use

Responses

Request samples

Content type
application/json
{
  • "name": "FTP interne",
  • "type": "FTP",
  • "host": "ftp.mycompany.com:22",
  • "user": "Jean Blaguin",
  • "password": "my_very_serure_password",
  • "use_full_path": true,
  • "deposit_folder": "/root/mycollection/",
  • "date_from": "2017-01-01T00:00:00.000Z",
  • "double_validation": true,
  • "cron": "30 12,20 * * * *",
  • "_extra": { }
}

Response samples

Content type
application/json
{
  • "broadcast_id": 2,
  • "name": "FTP interne",
  • "type": "FTP",
  • "host": "ftp.mycompany.com:22",
  • "user": "Jean Blaguin",
  • "use_full_path": true,
  • "deposit_folder": "/root/mycollection/",
  • "date_from": "2017-01-01T00:00:00.000Z",
  • "double_validation": true,
  • "cron": "30 12,20 * * * *"
}

Update broadcast

Update specifics fields of a broadcast.

Authorizations:
Bearer
path Parameters
broadcast_id
required
number >= 1

ID of broadcast

Request Body schema: application/json
name
string
type
string (Model115)
Enum: "FTP" "FTPS" "SFTP" "WEBDAV"
host
string

Host. Can be a domain name or an IP address. Can be followed by a port number.

user
string

User

password
string

Password

use_full_path
boolean

If true, the full path will be used for the file name

deposit_folder
string

The folder where the files will be deposited

date_from
string <date>

Media will be broadcasted from this date

double_validation
boolean

If true, media will be broadcasted after a second validation

cron
string^((((\d+,)+\d+|(\d+(\/|-|#)\d+)|\d+L?|\*(\/\d...

Cron expression with 6 fields for the broadcast

_extra
object (_extra)

Reserved for internal use

Responses

Request samples

Content type
application/json
{
  • "name": "FTP interne",
  • "type": "FTP",
  • "host": "ftp.mycompany.com:22",
  • "user": "Jean Blaguin",
  • "password": "my_very_serure_password",
  • "use_full_path": true,
  • "deposit_folder": "/root/mycollection/",
  • "date_from": "2017-01-01T00:00:00.000Z",
  • "double_validation": true,
  • "cron": "30 12,20 * * * *",
  • "_extra": { }
}

Response samples

Content type
application/json
{
  • "broadcast_id": 2,
  • "name": "FTP interne",
  • "type": "FTP",
  • "host": "ftp.mycompany.com:22",
  • "user": "Jean Blaguin",
  • "use_full_path": true,
  • "deposit_folder": "/root/mycollection/",
  • "date_from": "2017-01-01T00:00:00.000Z",
  • "double_validation": true,
  • "cron": "30 12,20 * * * *"
}

Delete a broadcast

Pictures will not be broadcasted anymore.

Authorizations:
Bearer
path Parameters
broadcast_id
required
number >= 1

ID of broadcast

Responses

Response samples

Content type
application/json
""

List exports for a broadcast

Return an array of export with a pagination.

You can set the offset of pagination with the header 'offset'. Response headers:

  • 'X-Total-Count': Total number of items
  • 'X-Offset': Offset of the result
  • 'X-Count': Size of the result
Authorizations:
Bearer
path Parameters
broadcast_id
required
number >= 1

ID of broadcast

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get export for a broadcast

Get specific export for a broadcast.

Authorizations:
Bearer
path Parameters
broadcast_id
required
number >= 1

ID of broadcast

export_id
required
number >= 1

ID of export

Responses

Response samples

Content type
application/json
{
  • "export_id": 2,
  • "active": "true"
}

Update export for a broadcast

Update specifics fields of an export for a broadcast

Authorizations:
Bearer
path Parameters
broadcast_id
required
number >= 1

ID of broadcast

export_id
required
number >= 1

ID of export

Request Body schema: application/json
active
required
boolean

If true, the broadcast is active for this export

Responses

Request samples

Content type
application/json
{
  • "active": "true"
}

Response samples

Content type
application/json
{
  • "export_id": 2,
  • "active": "true"
}

picture

List pictures

Return an array of pictures with a pagination of 100.

You can filter by giving query parameters with the following logic :

  • picturestatus=50 : filter pictures with picturestatus = 50
  • picturestatus=50&picturestatus=40 : filter pictures with picturestatus = 50 OR picturestatus = 40
  • picturestatus=gte:50 : filter pictures with picturestatus greater than or equal to 50 (available options are gt gte lt lte)

You can set the offset of pagination with the header 'offset'. Response headers:

  • 'X-Total-Count': Total number of items
  • 'X-Offset': Offset of the result
  • 'X-Count': Size of the result
Authorizations:
Bearer
query Parameters
picture_id
string

id of the picture

sort_by
string

Sort search

bench_id
string

id of the bench the picture belongs to

bench_root_id
string

id of the bench the picture belongs to

benchsteptype
string

workflow step of production

ref
string

ref extracted from picture

path
string

path of the picture in the repository

smalltext
string

picture filename

picturestatus
string
Worlflow step of the picture.
    1 : ignored
    5 : to reshoot
    10 : not selected
    30 : selected
    31 : refused
    35 : refused
    40 : submited for approval
    50 : validated
    51 : ready to broadcast (in case of manual broadcast)
    52 : error during broadcast
    55 : broadcast (once validated a picture can be broadcast on )
    80 : archived
filesize
string

filesize

width
string

width

height
string

height

reference_id
string

reference_id

parent_id
string

parent picture

icc_profile
string

icc profile of image

thumbnail
string

url of thumbnail

hash
string

hash computed from image content

file_id
string

identifier of file content

view_type_code
string

view type code

transfer_date
string

transfert date of the picture (in Grand Shooting)

date_cre
string

creation date of the picture (in Grand Shooting)

date_mod
string

last modification date of the picture (in Grand Shooting)

validation_date
string

Validation date

export
string

name of the export

exportpicturestatus
string

status of export

shootingmethod
string

name of the shooting method

look_id
string

ID of look

alerts
string

alerts

taginfo.tags
string

tags

taginfo.label
string

label

taginfo.rating
string

rating

reference_ids
string

reference_ids

refs
string

refs

account_id
integer >= 1

Account id for delegation usage

header Parameters
offset
number >= 0

offset for pagination

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get picture

Load a picture by its id

Authorizations:
Bearer
path Parameters
picture_id
required
number

the id for the picture item

Responses

Response samples

Content type
application/json
{
  • "picture_id": 1023,
  • "bench_id": 2,
  • "bench_root_id": 1,
  • "benchsteptype": 20,
  • "ref": "FW19_ALDA_PINK",
  • "path": "f33cdd25-b8b0-48dd-abac-cf8a29529f89/JPG/FW19_ALDA_PINK-1.jpg",
  • "smalltext": "FW19_ALDA_PINK_1.jpg",
  • "picturestatus": 30,
  • "filesize": 520000,
  • "reference_id": 10,
  • "reference_ids": [
    ],
  • "refs": [
    ],
  • "parent_id": 151,
  • "child_ids": [
    ],
  • "export": "WEB",
  • "frame": {
    },
  • "icc_profile": "sRGB IEC61966-2.1",
  • "hash": "5ef7fcb04a5c2e90a0f490e92a3260c50a259a5c",
  • "shootingmethod": "Packshot",
  • "look_id": 1,
  • "alerts": [
    ]
}

Delete a picture

Delete a picture from Grand Shooting (logicaly, file is prefixed with __TRASH and invisible in Grand Shooting). You can't delete a picture in validation stage (benchsteptype 40), you have to delete it through the export process.

Authorizations:
Bearer
path Parameters
picture_id
required
number

the id for the picture item

Responses

Response samples

Content type
application/json
"string"

Picture - Actions

Get picture comments

Get picture comments

Authorizations:
Bearer
path Parameters
picture_id
required
number

the id for the picture item

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Download

Download a picture

Authorizations:
Bearer
path Parameters
picture_id
required
number

the id for the picture item

Responses

Response samples

Content type
application/json
"string"

Get old versions of a picture

Get picture history

Authorizations:
Bearer
path Parameters
picture_id
required
number

The id of the picture

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Send picture to edit

You can edit a picture only if an edit bench exist.

Authorizations:
Bearer
Request Body schema: application/json
picture_ids
required
Array of numbers (picture_ids)

The id of pictures to edit

transfer_id
required
number

The id of FTP transfer

get_path
string

Set path to get picture from the FTP

put_path
string

Set path to put picture to FTP

provision_code
string

Set the edit code

account_id
number

Account id of picture to retouch

Responses

Request samples

Content type
application/json
{
  • "picture_ids": [
    ],
  • "transfer_id": 0,
  • "get_path": "string",
  • "put_path": "string",
  • "provision_code": "string",
  • "account_id": 0
}

Response samples

Content type
application/json
"string"

Set picturestatus

Change picture status in the production workflow.

Depending on the woflow step (benchsteptype of the picture's bench), available status for pictures are different: * Live: 5, 10, 30 * Phase 1: 30, 35 * Phase 2: 30, 35 * Valdation: 31, 40, 50, 51, 52, 55, 80

Authorizations:
Bearer
path Parameters
picture_id
required
number

The id for the picture item

Request Body schema: application/json
picturestatus
required
number

The new picture status

comment
string

Add comment with the status

Responses

Request samples

Content type
application/json
{
  • "picturestatus": 0,
  • "comment": "string"
}

Response samples

Content type
application/json
"string"

Link refs

Link references to a picture

Authorizations:
Bearer
path Parameters
picture_id
required
number

the id for the picture item

Request Body schema: application/json
Array of objects (references)

Responses

Request samples

Content type
application/json
{
  • "references": [
    ]
}

Response samples

Content type
application/json
"string"

Get picture public url

Build a public url for the picture that won't need an auth token. The link is only available for a certain time (max 1 week). When the link is used, you can optinally trigger a picturestatus change and comment on the picture. (The trigger will be run every time the link is used).

Authorizations:
Bearer
path Parameters
picture_id
required
number

the id for the picture item

Request Body schema: application/json
picturestatus
number

picturestatus to apply on picture when the link is used

comment
string

comment to add to picture when the link is used

validity
number <= 604800
Default: 3600

Validity of the link in seconds

Responses

Request samples

Content type
application/json
{
  • "picturestatus": 0,
  • "comment": "string",
  • "validity": 3600
}

Response samples

Content type
application/json
"string"

Rename picture

Not available for benchsteptype 40

Authorizations:
Bearer
path Parameters
picture_id
required
number

the id for the picture item

Request Body schema: application/json
smalltext
required
string

The path of picture

force
boolean

The path of picture

Responses

Request samples

Content type
application/json
{
  • "smalltext": "string",
  • "force": true
}

Response samples

Content type
application/json
"string"

Send picture to edit

You can edit a picture only if an edit bench exist.

Authorizations:
Bearer
path Parameters
picture_id
required
number

The id for the picture item

Request Body schema: application/json
transfer_id
required
number

The id of FTP transfer

get_path
string

Set path to get picture from the FTP

put_path
string

Set path to put picture to FTP

provision_code
string

Set the edit code

account_id
number

Account id of picture to retouch

Responses

Request samples

Content type
application/json
{
  • "transfer_id": 0,
  • "get_path": "string",
  • "put_path": "string",
  • "provision_code": "string",
  • "account_id": 0
}

Response samples

Content type
application/json
"string"

Picture - Frame

Get a frame

Get a frame on the image for custom processing (only for images, not yet for videos)

Authorizations:
Bearer
path Parameters
picture_id
required
number

the id for the picture item

format_id
required
number

the id for the format item

query Parameters
crop
string
Default: "NONE"
Enum: "NONE" "EYE" "NOSE"

Crop type

account_id
integer >= 1

Account id for delegation usage

Responses

Response samples

Content type
application/json
{
  • "x1": 500,
  • "y1": 500,
  • "x2": 1500,
  • "y2": 1000,
  • "z": -0.32251074646782035,
  • "zp": {
    },
  • "smalltext": "Zalando"
}

Set a frame

Set a frame on the image for custom processing (only for images, not yet for videos)

Authorizations:
Bearer
path Parameters
picture_id
required
number

the id for the picture item

Request Body schema: application/json
x1
required
number

start x pixel

y1
required
number

start y pixel

x2
required
number

end x pixel

y2
required
number

end y pixel

z
number

rotation degree

object (zp)

Vector of translation

smalltext
string

Optional name for the frame

Responses

Request samples

Content type
application/json
{
  • "x1": 500,
  • "y1": 500,
  • "x2": 1500,
  • "y2": 1000,
  • "z": -0.32251074646782035,
  • "zp": {
    },
  • "smalltext": "Zalando"
}

Response samples

Content type
application/json
"string"

Delete a frame

Authorizations:
Bearer
path Parameters
picture_id
required
number

the id for the picture item

Responses

Response samples

Content type
application/json
"string"

Picture - Tag

Get tags

List picture tags.

Tagging information are extracted from picture metadata.

Color label and ratings are commonly used tagging information used in photo edition software like Photoshop, Capture One and Lightroom.

Other metadata are extracted from deep leaning categorisation models

Authorizations:
Bearer
path Parameters
picture_id
required
number

the id for the picture item

Responses

Response samples

Content type
application/json
{
  • "rating": 2,
  • "label": "red",
  • "tags": {
    }
}

Set tags

Modify or add tagging information to pictures.

You can override color label or rating defined in picture EXIF metadata.

Picture's file internal EXIF metadata is not modified. New tag information will be available in Grand Shooting production filters

Authorizations:
Bearer
path Parameters
picture_id
required
number

the id for the picture item

Request Body schema: application/json
rating
number [ 0 .. 5 ]

rating of picture, between 0 and 5

label
string (label)
Enum: "transparent" "white" "yellow" "orange" "red" "pink" "purple" "blue" "green"

color tag of picture

tags
object (Picture_tag)

Meta tag of picture

Responses

Request samples

Content type
application/json
{
  • "rating": 2,
  • "label": "red",
  • "tags": {
    }
}

Response samples

Content type
application/json
{
  • "rating": 2,
  • "label": "red",
  • "tags": {
    }
}

production

List productions

List all productions.

Authorizations:
Bearer
query Parameters
smalltext
string

Bench label

startdate
string <date>

Start date

enddate
string <date>

End date

timezone
string

Timezone

tzoffset
number

Timezone offset

shooting_method_id
number

Shooting method ID

bench_id
number >= 1

Bench ID

parent_id
number >= 1

Parent ID

root_id
number >= 1

Root ID

ext_lib_id
string

Repo ID

meta_export_info
string
briefing
string

Url of a briefing giving information on production procedures

location
string
benchsteptype
number
Enum: 10 20 30 40

Worlflow step for the bench. 10 : Live 20 : 1rst postprod step 30 : 2nd postprod step 40 : export step

benchaccess
number
Enum: 10 15 20 25 40 50 60

User access for bench

info
string

Free information stored with production

info_model
Array of strings

Description of what that can be stored in "info" field

step_label
string

Label of step

archived
boolean

Indicates if bench is archived

account_id
integer >= 1

Account id for delegation usage

Responses

Response samples

Content type
application/json
[
  • [
    ]
]

Create production

Create a production in which you can load images. A production is built on a workflow with different steps. Each step is a bench in which you can load images. If you wan't a specific workflow, you can apply a template. The default workflow is :

  • live (benchsteptype : 10)
  • post production step (benchsteptype : 20) optional
  • post production step (benchsteptype : 30) optional
  • export (benchsteptype : 40)
Authorizations:
Bearer
Request Body schema: application/json
smalltext
required
string

Bench label

startdate
required
string <date>

Start date

enddate
string <date>

End date

timezone
string
Default: "Europe/Paris"

Timezone

tzoffset
number
Default: 60

Timezone offset in minutes

shooting_method_id
required
number >= 1

Shooting method ID

bench_template_id
number >= 1

Id of a template to configure bench

template_account_id
number >= 1

account_id to use to load template, if empty, use the token account_id

briefing
string

Url of a briefing giving information on production procedures

info
object (Model63)

Information stored with production (info_model field)

Array of objects (info_model)

Description of what that can be stored in "info" field

Responses

Request samples

Content type
application/json
{
  • "smalltext": "RTW_2019 DAY1 packshot",
  • "startdate": "2018-12-25T22:45:00",
  • "enddate": "2018-12-26T22:45:00",
  • "timezone": "Europe/Paris",
  • "tzoffset": 60,
  • "shooting_method_id": 1,
  • "template_id": 1,
  • "info": {
    },
  • "info_model": [
    ]
}

Response samples

Content type
application/json
"string"

List exports

List exports availables.

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create export

Create export.

Authorizations:
Bearer
Request Body schema: application/json
export_id
integer >= 1
smalltext
string
object (config)
archived
boolean
format_ids
Array of integers (format_ids) [ items >= 1 ]

Responses

Request samples

Content type
application/json
{
  • "export_id": 1,
  • "smalltext": "string",
  • "config": {
    },
  • "archived": true,
  • "format_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "export_id": 2,
  • "smalltext": "HD",
  • "config": {
    },
  • "archived": false,
  • "format_ids": [
    ]
}

List templates

List templates availables. They can be used during a production creation.

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create template

Create template. It can be used during a production creation.

Authorizations:
Bearer
Request Body schema: application/json
template_id
integer >= 1
account_id
integer >= 1
smalltext
string
object (production)
object (live)
object (edit1)
object (edit2)
object (validation)

Responses

Request samples

Content type
application/json
{
  • "template_id": 1,
  • "account_id": 1,
  • "smalltext": "string",
  • "production": {
    },
  • "live": {
    },
  • "edit1": {
    },
  • "edit2": {
    },
  • "validation": {
    }
}

Response samples

Content type
application/json
{
  • "template_id": 3,
  • "account_id": 612,
  • "smalltext": "test",
  • "production": {
    },
  • "live": {
    },
  • "edit1": {
    },
  • "edit2": {
    },
  • "validation": {
    }
}

Load export

Load export.

Authorizations:
Bearer
path Parameters
export_id
required
number

the export id

Responses

Response samples

Content type
application/json
{
  • "export_id": 2,
  • "smalltext": "HD",
  • "config": {
    },
  • "archived": false,
  • "format_ids": [
    ]
}

Replace export

Replace export.

Authorizations:
Bearer
path Parameters
export_id
required
integer >= 2

the export id

Request Body schema: application/json
export_id
integer >= 1
smalltext
string
object (config)
archived
boolean
format_ids
Array of integers (format_ids) [ items >= 1 ]

Responses

Request samples

Content type
application/json
{
  • "export_id": 1,
  • "smalltext": "string",
  • "config": {
    },
  • "archived": true,
  • "format_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "export_id": 2,
  • "smalltext": "HD",
  • "config": {
    },
  • "archived": false,
  • "format_ids": [
    ]
}

Update export

Update export.

Authorizations:
Bearer
path Parameters
export_id
required
integer >= 2

the export id

Request Body schema: application/json
export_id
integer >= 1
smalltext
string
object (config)
archived
boolean
format_ids
Array of integers (format_ids) [ items >= 1 ]

Responses

Request samples

Content type
application/json
{
  • "export_id": 1,
  • "smalltext": "string",
  • "config": {
    },
  • "archived": true,
  • "format_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "export_id": 2,
  • "smalltext": "HD",
  • "config": {
    },
  • "archived": false,
  • "format_ids": [
    ]
}

Archive export

Archive export.

Authorizations:
Bearer
path Parameters
export_id
required
integer >= 2

the export id

Responses

Response samples

Content type
application/json
{
  • "export_id": 2,
  • "smalltext": "HD",
  • "config": {
    },
  • "archived": false,
  • "format_ids": [
    ]
}

Load template

Load template. It can be used during a production creation.

Authorizations:
Bearer
path Parameters
template_id
required
number

the template id

Responses

Response samples

Content type
application/json
{
  • "template_id": 3,
  • "account_id": 612,
  • "smalltext": "test",
  • "production": {
    },
  • "live": {
    },
  • "edit1": {
    },
  • "edit2": {
    },
  • "validation": {
    }
}

Replace template

Replace template. It can be used during a production creation.

Authorizations:
Bearer
path Parameters
template_id
required
number

the template id

Request Body schema: application/json
template_id
integer >= 1
account_id
integer >= 1
smalltext
string
object (production)
object (live)
object (edit1)
object (edit2)
object (validation)

Responses

Request samples

Content type
application/json
{
  • "template_id": 1,
  • "account_id": 1,
  • "smalltext": "string",
  • "production": {
    },
  • "live": {
    },
  • "edit1": {
    },
  • "edit2": {
    },
  • "validation": {
    }
}

Response samples

Content type
application/json
{
  • "template_id": 3,
  • "account_id": 612,
  • "smalltext": "test",
  • "production": {
    },
  • "live": {
    },
  • "edit1": {
    },
  • "edit2": {
    },
  • "validation": {
    }
}

Update template

Update template. It can be used during a production creation.

Authorizations:
Bearer
path Parameters
template_id
required
number

the template id

Request Body schema: application/json
template_id
integer >= 1
account_id
integer >= 1
smalltext
string
object (production)
object (live)
object (edit1)
object (edit2)
object (validation)

Responses

Request samples

Content type
application/json
{
  • "template_id": 1,
  • "account_id": 1,
  • "smalltext": "string",
  • "production": {
    },
  • "live": {
    },
  • "edit1": {
    },
  • "edit2": {
    },
  • "validation": {
    }
}

Response samples

Content type
application/json
{
  • "template_id": 3,
  • "account_id": 612,
  • "smalltext": "test",
  • "production": {
    },
  • "live": {
    },
  • "edit1": {
    },
  • "edit2": {
    },
  • "validation": {
    }
}

Delete template

Delete template.

Authorizations:
Bearer
path Parameters
template_id
required
number

the template id

Responses

Response samples

Content type
application/json
"string"

List references

List references that should be shot during production.

Authorizations:
Bearer
path Parameters
bench_root_id
required
number

the production id

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Add references

Define wich references should be shot during a production.

Authorizations:
Bearer
path Parameters
bench_root_id
required
number

the production id

Request Body schema: application/json
Array
ref
string
bench_id
number

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
"string"

Get benches

List benches in a production.

Authorizations:
Bearer
path Parameters
bench_root_id
required
number

the production id

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get production config

Get production config.

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
{
  • "account_id": 1,
  • "smalltext": "string",
  • "production": {
    },
  • "live": {
    },
  • "edit1": {
    },
  • "edit2": {
    },
  • "validation": {
    }
}

Get bench

Load a bench by its id

Authorizations:
Bearer
path Parameters
bench_id
required
number

the bench id

bench_root_id
required
number

the production id

Responses

Response samples

Content type
application/json
{
  • "account_id": 1,
  • "bench_id": 3,
  • "parent_id": 2,
  • "root_id": 1,
  • "ext_lib_id": "1",
  • "smalltext": "RTW_2019 DAY1 packshot",
  • "startdate": "2018-12-25T22:45:00",
  • "enddate": "2018-12-26T22:45:00",
  • "timezone": "Europe/Paris",
  • "tzoffset": 60,
  • "shooting_method_id": 1,
  • "benchsteptype": 40,
  • "benchaccess": 40,
  • "info": {
    },
  • "info_model": [
    ],
  • "step_label": "Validation",
  • "archived": false
}

Trigger export

Start an export, i.e. process automatic renaming and modifications on pictures to add them to validation step.

Authorizations:
Bearer
path Parameters
bench_root_id
required
number

the production id

Responses

Response samples

Content type
application/json
"string"

Upload pictures on a bench

Return a status code

Authorizations:
Bearer
path Parameters
bench_root_id
required
number

the production id

bench_id
required
number

the bench id

Request Body schema: multipart/form-data
required
file
required
string <binary>

picture file

wait
boolean
Default: true

wait end of upload to return

path
string
Default: "/"

path to upload picture

transfer_id
number

id of a transfer the files uploaded are linked to. Only for plugins purpose

Responses

Response samples

Content type
application/json
"string"

Upload pictures on a bench by providing urls instead of files

Returns an object array with information about the upload. The order of this response keeps the order of the array in the 'urls' field of the payload.

Authorizations:
Bearer
path Parameters
bench_root_id
required
number

the production id

bench_id
required
number

the bench id

Request Body schema: application/json
wait
boolean
Default: false

wait end of upload and file analysis

path
string
Default: "/"

path to upload picture

Array of objects (urls)

list of urls

allowed_type
string (allowed_type)
Default: "images and videos"
Enum: "all" "images" "images and videos"

types of files that are allowed to be uploaded

transfer_id
number

id of a transfer the files uploaded are linked to. Only for plugins purpose

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
[
  • {
    }
]

Update production

Update a production, basicaly to modify production's name and dates.

Authorizations:
Bearer
path Parameters
bench_root_id
required
number

the production id

Request Body schema: application/json
smalltext
string

Bench label

startdate
string <date>

Start date

enddate
string <date>

End date

timezone
string
Default: "Europe/Paris"

Timezone

tzoffset
number
Default: 60

Timezone offset in minutes

shooting_method_id
number >= 1

Shooting method ID

info
object (Model102)

Information stored with production

Array of objects (info_model)

Description of what that can be stored in "info" field

Responses

Request samples

Content type
application/json
{
  • "smalltext": "RTW_2019 DAY1 packshot",
  • "startdate": "2018-12-25T22:45:00",
  • "enddate": "2018-12-26T22:45:00",
  • "timezone": "Europe/Paris",
  • "tzoffset": 60,
  • "shooting_method_id": 1,
  • "bench_template_id": 1,
  • "info": {
    },
  • "info_model": [
    ]
}

Response samples

Content type
application/json
{
  • "account_id": 1,
  • "bench_id": 3,
  • "parent_id": 2,
  • "root_id": 1,
  • "ext_lib_id": "1",
  • "smalltext": "RTW_2019 DAY1 packshot",
  • "startdate": "2018-12-25T22:45:00",
  • "enddate": "2018-12-26T22:45:00",
  • "timezone": "Europe/Paris",
  • "tzoffset": 60,
  • "shooting_method_id": 1,
  • "benchsteptype": 40,
  • "benchaccess": 40,
  • "info": {
    },
  • "info_model": [
    ],
  • "step_label": "Validation",
  • "archived": false
}

reference

List references

Return an array of references with a pagination of 100. You can set the offset of pagination with the header 'offset'. Response headers: 'X-Total-Count': Total number of items 'X-Offset': Offset of the result 'X-Count': Size of the result

Authorizations:
Bearer
query Parameters
reference_id
string

id of the reference

ref
string

reference label identifier

ean
string

main ean

eans
string

alternatives ean

eans_extended
string

rich ean information

univers
string

univers, level 1 in catalog hierarchy

gamme
string

gamme, level 2 in catalog hierarchy

family
string

family, level 3 in catalog hierarchy

sku
string

sku

brand
string

brand

smalltext
string

reference label

product_ref
string

product identifier

product_smalltext
string

product label

gender
string

gender

gender_smalltext
string

gender

color
string

color

hexa_color
string

Code couleur RGB en hexa décimal

size
string

size

collection
string

collection

comment
string

comment

tags
string

tags

extra
string

Extra data

shotlist_id
string

id of a shotlist to add reference to

shotlist
string

name of a shotlist to add reference to (shotlist will be created if it doesnt exists)

online
string

online date

account_id
integer >= 1

Account id for delegation usage

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create / update a reference.

If a reference already exists with the same "ref", this reference will be updated. Otherwise, a new reference is created. Return the corresponding reference item with the generated id

Authorizations:
Bearer
Request Body schema: application/json
reference_id
number >= 1

id of the reference

ref
string

reference label identifier

ean
string

main ean

eans
Array of strings (eans)

alternatives ean

Array of objects (eans_extended)

rich ean information

univers
string

univers, level 1 in catalog hierarchy

gamme
string

gamme, level 2 in catalog hierarchy

family
string

family, level 3 in catalog hierarchy

sku
string

sku

brand
string

brand

smalltext
string

reference label

product_ref
string

product identifier

product_smalltext
string

product label

gender
string

gender

gender_smalltext
string

gender

color
string

color

hexa_color
string

Code couleur RGB en hexa décimal

size
string

size

collection
string

collection

comment
string

comment

tags
Array of strings (tags)

tags

extra
object (extra)

Extra data

shotlist_id
number >= 1

id of a shotlist to add reference to

shotlist
string

name of a shotlist to add reference to (shotlist will be created if it doesnt exists)

online
string

online date

Responses

Request samples

Content type
application/json
{
  • "reference_id": 12,
  • "ref": "FW19_ALDA_PINK",
  • "ean": "2309309834098",
  • "eans": [
    ],
  • "eans_extended": [
    ],
  • "univers": "RTW",
  • "gamme": "Accessories",
  • "family": "Handbags",
  • "sku": "EPOIAPOIJKLH109384",
  • "brand": "BATCHEMON",
  • "smalltext": "Pink leather handbag Alda",
  • "product_ref": "FW19_ALDA",
  • "product_smalltext": "Leather handbag Alda",
  • "gender": "Woman",
  • "color": "PINK",
  • "hexa_color": "#FFC0CB",
  • "size": "L",
  • "collection": "FW19",
  • "comment": "Closeup on zip",
  • "tags": [
    ],
  • "online": "20/12/2019",
  • "extra": {
    }
}

Response samples

Content type
application/json
{
  • "reference_id": 12,
  • "ref": "FW19_ALDA_PINK",
  • "ean": "2309309834098",
  • "eans": [
    ],
  • "eans_extended": [
    ],
  • "univers": "RTW",
  • "gamme": "Accessories",
  • "family": "Handbags",
  • "sku": "EPOIAPOIJKLH109384",
  • "brand": "BATCHEMON",
  • "smalltext": "Pink leather handbag Alda",
  • "product_ref": "FW19_ALDA",
  • "product_smalltext": "Leather handbag Alda",
  • "gender": "Woman",
  • "color": "PINK",
  • "hexa_color": "#FFC0CB",
  • "size": "L",
  • "collection": "FW19",
  • "comment": "Closeup on zip",
  • "tags": [
    ],
  • "online": "20/12/2019",
  • "extra": {
    }
}

Get reference

Return a reference item

Authorizations:
Bearer
path Parameters
id
required
number

the id for the reference item

Responses

Response samples

Content type
application/json
{
  • "reference_id": 12,
  • "ref": "FW19_ALDA_PINK",
  • "ean": "2309309834098",
  • "eans": [
    ],
  • "eans_extended": [
    ],
  • "univers": "RTW",
  • "gamme": "Accessories",
  • "family": "Handbags",
  • "sku": "EPOIAPOIJKLH109384",
  • "brand": "BATCHEMON",
  • "smalltext": "Pink leather handbag Alda",
  • "product_ref": "FW19_ALDA",
  • "product_smalltext": "Leather handbag Alda",
  • "gender": "Woman",
  • "color": "PINK",
  • "hexa_color": "#FFC0CB",
  • "size": "L",
  • "collection": "FW19",
  • "comment": "Closeup on zip",
  • "tags": [
    ],
  • "online": "20/12/2019",
  • "extra": {
    }
}

Create / update multiple references

Returns the list of corresponding reference items

Authorizations:
Bearer
Request Body schema: application/json
Array
reference_id
number >= 1

id of the reference

ref
string

reference label identifier

ean
string

main ean

eans
Array of strings (eans)

alternatives ean

Array of objects (eans_extended)

rich ean information

univers
string

univers, level 1 in catalog hierarchy

gamme
string

gamme, level 2 in catalog hierarchy

family
string

family, level 3 in catalog hierarchy

sku
string

sku

brand
string

brand

smalltext
string

reference label

product_ref
string

product identifier

product_smalltext
string

product label

gender
string

gender

gender_smalltext
string

gender

color
string

color

hexa_color
string

Code couleur RGB en hexa décimal

size
string

size

collection
string

collection

comment
string

comment

tags
Array of strings (tags)

tags

extra
object (extra)

Extra data

shotlist_id
number >= 1

id of a shotlist to add reference to

shotlist
string

name of a shotlist to add reference to (shotlist will be created if it doesnt exists)

online
string

online date

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
[
  • {
    }
]

Add / Modify column of extra field

Returns columns

Authorizations:
Bearer
Request Body schema: application/json
Array
key
required
string

used to identify column in import and export files

label
required
string

used for display in screens

type
required
string

the type of the column

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
"string"

Merge references

Merge both references, the second reference information will be link to primary reference (eans, stock information, pictures). Secondary reference will be deleted

Authorizations:
Bearer
path Parameters
reference_id
required
number >= 1

the id for the reference item

secondary_reference_id
required
number >= 1

the id for the secondary reference item

Responses

Response samples

Content type
application/json
{
  • "reference_id": 12,
  • "ref": "FW19_ALDA_PINK",
  • "ean": "2309309834098",
  • "eans": [
    ],
  • "eans_extended": [
    ],
  • "univers": "RTW",
  • "gamme": "Accessories",
  • "family": "Handbags",
  • "sku": "EPOIAPOIJKLH109384",
  • "brand": "BATCHEMON",
  • "smalltext": "Pink leather handbag Alda",
  • "product_ref": "FW19_ALDA",
  • "product_smalltext": "Leather handbag Alda",
  • "gender": "Woman",
  • "color": "PINK",
  • "hexa_color": "#FFC0CB",
  • "size": "L",
  • "collection": "FW19",
  • "comment": "Closeup on zip",
  • "tags": [
    ],
  • "online": "20/12/2019",
  • "extra": {
    }
}

Delete reference

Delete reference from Grand Shooting. Stock information linked to the reference will not be available anymore. Pictures linked to this reference will still be available

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
"string"

repo

Load repo

Find information from a repo, the corresponding production or the corresponding gstransfer

Authorizations:
Bearer
path Parameters
repo_id
required
string

id of the repo

Responses

Response samples

Content type
application/json
{
  • "repo_id": "string",
  • "bench_id": 0,
  • "root_id": 0,
  • "files": [
    ],
  • "gstransfer_id": "string",
  • "account_id": 0,
  • "ext_lib_id": "string",
  • "server_id": "string"
}

Check block

Checks if a block is already known server side

Authorizations:
Bearer
path Parameters
repo_id
required
string

the id for the repo

block_id
required
string

the id for the block

Responses

Response samples

Content type
application/json
{
  • "exists": true
}

Download a file

Download a file which content is identified by its file_id, you also have to specify the result filename (present in header)

Authorizations:
Bearer
path Parameters
repo_id
required
string

id of the repo

file_id
required
string

id of the file

filename
required
string

name of the file to download

Responses

Response samples

Content type
application/json
"string"

Send file descriptions

Send file descriptions

Authorizations:
Bearer
path Parameters
repo_id
required
string

the id for the repo

Request Body schema: application/json
Array of objects (Model81)

Responses

Request samples

Content type
application/json
{
  • "files": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "string"
}

Upload block

Upload block

Authorizations:
Bearer
path Parameters
repo_id
required
string

the id for the repo

block_id
required
string

the id for the block

Request Body schema: application/json
file
required
string <binary>

picture file

Responses

Request samples

Content type
application/json
{
  • "file": "string"
}

Response samples

Content type
application/json
{
  • "status": "string"
}

shootingmethod

List shooting methods

List all shooting methods

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Shooting method

Create or update a shooting method

Authorizations:
Bearer
Request Body schema: application/json
shootingmethod
string

Name of shooting method

Responses

Request samples

Content type
application/json
{
  • "shootingmethod": "string"
}

Response samples

Content type
application/json
[
  • {
    }
]

specification

List formats

List specification available formats

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
"string"

Create format

Create format.

Authorizations:
Bearer
Request Body schema: application/json
smalltext
string

Name of format

format_id
number

ID of format

background_color
string

Color or hexa

description
string

Desciption of format

file_format
string (file_format)
Enum: "JPG" "PNG" "TIF" {"value":{"allowUnknown":true}}
sample_filename
string
height
number

px

width
number

px

icc_profile
string (Model68)
Enum: "sRGB IEC61966-2.1" "Adobe RGB (1998)" {"value":{"allowUnknown":true}}
max_file_size
number

kb

position
string (Model69)
Default: "Center"
Enum: "NorthWest" "North" "NorthEast" "West" "Center" "East" "SouthWest" "South" "SouthEast"

Position with border

resolution
number

dpi

object (border_strategy)

Responses

Request samples

Content type
application/json
{
  • "smalltext": "string",
  • "format_id": 0,
  • "background_color": "string",
  • "description": "string",
  • "file_format": "JPG",
  • "sample_filename": "string",
  • "height": 0,
  • "width": 0,
  • "icc_profile": "sRGB IEC61966-2.1",
  • "max_file_size": 0,
  • "position": "NorthWest",
  • "resolution": 0,
  • "border_strategy": {
    }
}

Response samples

Content type
application/json
"string"

Load format

Load specification available format

Authorizations:
Bearer
path Parameters
format_id
required
number

ID of format

Responses

Response samples

Content type
application/json
"string"

Replace format

Replace format.

Authorizations:
Bearer
path Parameters
format_id
required
number

ID of format

Request Body schema: application/json
smalltext
string

Name of format

format_id
number

ID of format

background_color
string

Color or hexa

description
string

Desciption of format

file_format
string (file_format)
Enum: "JPG" "PNG" "TIF" {"value":{"allowUnknown":true}}
sample_filename
string
height
number

px

width
number

px

icc_profile
string (Model106)
Enum: "sRGB IEC61966-2.1" "Adobe RGB (1998)" {"value":{"allowUnknown":true}}
max_file_size
number

kb

position
string (Model107)
Default: "Center"
Enum: "NorthWest" "North" "NorthEast" "West" "Center" "East" "SouthWest" "South" "SouthEast"

Position with border

resolution
number

dpi

object (border_strategy)

Responses

Request samples

Content type
application/json
{
  • "smalltext": "string",
  • "format_id": 0,
  • "background_color": "string",
  • "description": "string",
  • "file_format": "JPG",
  • "sample_filename": "string",
  • "height": 0,
  • "width": 0,
  • "icc_profile": "sRGB IEC61966-2.1",
  • "max_file_size": 0,
  • "position": "NorthWest",
  • "resolution": 0,
  • "border_strategy": {
    }
}

Response samples

Content type
application/json
"string"

Update format

Update formats.

Authorizations:
Bearer
path Parameters
format_id
required
number

ID of format

Request Body schema: application/json
smalltext
string

Name of format

format_id
number

ID of format

background_color
string

Color or hexa

description
string

Desciption of format

file_format
string (file_format)
Enum: "JPG" "PNG" "TIF" {"value":{"allowUnknown":true}}
sample_filename
string
height
number

px

width
number

px

icc_profile
string (Model121)
Enum: "sRGB IEC61966-2.1" "Adobe RGB (1998)" {"value":{"allowUnknown":true}}
max_file_size
number

kb

position
string (Model122)
Default: "Center"
Enum: "NorthWest" "North" "NorthEast" "West" "Center" "East" "SouthWest" "South" "SouthEast"

Position with border

resolution
number

dpi

object (border_strategy)

Responses

Request samples

Content type
application/json
{
  • "smalltext": "string",
  • "format_id": 0,
  • "background_color": "string",
  • "description": "string",
  • "file_format": "JPG",
  • "sample_filename": "string",
  • "height": 0,
  • "width": 0,
  • "icc_profile": "sRGB IEC61966-2.1",
  • "max_file_size": 0,
  • "position": "NorthWest",
  • "resolution": 0,
  • "border_strategy": {
    }
}

Response samples

Content type
application/json
"string"

Delete format

Delete format.

Authorizations:
Bearer
path Parameters
format_id
required
number

ID of format

Request Body schema: application/json
smalltext
string

Name of format

format_id
number

ID of format

background_color
string

Color or hexa

description
string

Desciption of format

file_format
string (file_format)
Enum: "JPG" "PNG" "TIF" {"value":{"allowUnknown":true}}
sample_filename
string
height
number

px

width
number

px

icc_profile
string (Model132)
Enum: "sRGB IEC61966-2.1" "Adobe RGB (1998)" {"value":{"allowUnknown":true}}
max_file_size
number

kb

position
string (Model133)
Default: "Center"
Enum: "NorthWest" "North" "NorthEast" "West" "Center" "East" "SouthWest" "South" "SouthEast"

Position with border

resolution
number

dpi

object (border_strategy)

Responses

Request samples

Content type
application/json
{
  • "smalltext": "string",
  • "format_id": 0,
  • "background_color": "string",
  • "description": "string",
  • "file_format": "JPG",
  • "sample_filename": "string",
  • "height": 0,
  • "width": 0,
  • "icc_profile": "sRGB IEC61966-2.1",
  • "max_file_size": 0,
  • "position": "NorthWest",
  • "resolution": 0,
  • "border_strategy": {
    }
}

Response samples

Content type
application/json
"string"

stock

Stock positions

List references with stock items Return an array of references with a pagination of 100. You can set the offset of pagination with the header 'offset'. Response headers:

  • 'X-Total-Count': Total number of items
  • 'X-Offset': Offset of the result
  • 'X-Count': Size of the result
Authorizations:
Bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

add to stock

Add a reference in stock

Authorizations:
Bearer
Request Body schema: application/json
batch_id
number

batch id

reference_id
required
number

reference id

smalltext
string

Free label on stock item

ean
string
star
boolean
extra
object (Model6)
stock_item_status
required
number

Status of the stock object

Responses

Request samples

Content type
application/json
{
  • "batch_id": 0,
  • "reference_id": 0,
  • "smalltext": "string",
  • "ean": "string",
  • "star": true,
  • "extra": { },
  • "stock_item_status": 0
}

Response samples

Content type
application/json
{
  • "stock_items": [
    ],
  • "reference_id": 1,
  • "ref": "string",
  • "ean": "string",
  • "eans": [
    ],
  • "eans_extended": [
    ],
  • "univers": "string",
  • "gamme": "string",
  • "family": "string",
  • "sku": "string",
  • "brand": "string",
  • "smalltext": "string",
  • "product_ref": "string",
  • "product_smalltext": "string",
  • "gender": "string",
  • "gender_smalltext": "string",
  • "color": "string",
  • "hexa_color": "string",
  • "size": "string",
  • "collection": "string",
  • "comment": "string",
  • "tags": [
    ],
  • "extra": { },
  • "shotlist_id": 1,
  • "shotlist": "string",
  • "online": "string"
}

List batches

List batches

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a batch

Create a batch

Authorizations:
Bearer
Request Body schema: application/json
smalltext
string

Name of the batch

type
string

Type of the batch

code
string

batch code (basically a barcode)

zone
string

Zone where the batch is located

Responses

Request samples

Content type
application/json
{
  • "smalltext": "string",
  • "type": "string",
  • "code": "string",
  • "zone": "string"
}

Response samples

Content type
application/json
{
  • "batch_id": 1,
  • "type": "Bucket",
  • "zone": "Warehouse A",
  • "smalltext": "Bucket A14",
  • "code": "1209834098"
}

zones

List zones

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get a stock item

Get a stock item

Authorizations:
Bearer
path Parameters
stock_item_id
required
number >= 1

id of the stock item

Responses

Response samples

Content type
application/json
{
  • "stock_item_id": 1,
  • "batch_id": 1,
  • "stock_item_status": 10,
  • "smalltext": "Bucket A14",
  • "ean": "1209834098",
  • "star": false,
  • "extra": { },
  • "date_cre": "2017-01-01T00:00:00.000Z",
  • "date_mod": "2017-01-01T00:00:00.000Z"
}

Update a stock item

Update a stock item

Authorizations:
Bearer
path Parameters
stock_item_id
required
number >= 1

id of the stock item

Request Body schema: application/json
stock_item_status
number
Enum: 10 12 15 17 20 30 40 45 48 50 51 60 70 75 90

Status of the stock item, 10: Warehouse stock, 12: Picking, 15:Sent, 17:Sent from warehouse, 20: Receive, 30: Add to stock, 40: Inventory, 45: Transfer, 48: Enriched, 50: Prepare, 51: Client return, 60: Error, 70: Mark as dispatched, 75 : Back in warehouse, 90: Lost

batch_id
number >= 1

id of the batch in which the stock item is stored

smalltext
string
extra
object (Model6)

Responses

Request samples

Content type
application/json
{
  • "stock_item_status": 10,
  • "batch_id": 1,
  • "smalltext": "string",
  • "extra": { }
}

Response samples

Content type
application/json
{
  • "stock_item_id": 1,
  • "batch_id": 1,
  • "stock_item_status": 10,
  • "smalltext": "Bucket A14",
  • "ean": "1209834098",
  • "star": false,
  • "extra": { },
  • "date_cre": "2017-01-01T00:00:00.000Z",
  • "date_mod": "2017-01-01T00:00:00.000Z"
}

Update a batch

Modify batch information

Authorizations:
Bearer
Request Body schema: application/json
smalltext
string

Name of the batch

type
string

Type of the batch

code
string

batch code (basically a barcode)

zone
string

Zone where the batch is located

Responses

Request samples

Content type
application/json
{
  • "smalltext": "string",
  • "type": "string",
  • "code": "string",
  • "zone": "string"
}

Response samples

Content type
application/json
{
  • "batch_id": 1,
  • "type": "Bucket",
  • "zone": "Warehouse A",
  • "smalltext": "Bucket A14",
  • "code": "1209834098"
}

Style - folder

List look folders

Return an array of look folders with a pagination.

You can set the offset of pagination with the header 'offset'. Response headers:

  • 'X-Total-Count': Total number of items
  • 'X-Offset': Offset of the result
  • 'X-Count': Size of the result
Authorizations:
Bearer
header Parameters
offset
number >= 0
Default: 0

offset for pagination

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create look folder

You can create only 200 folders.

Authorizations:
Bearer
Request Body schema: application/json
name
required
string

Responses

Request samples

Content type
application/json
{
  • "name": "Look 04/07/2022"
}

Response samples

Content type
application/json
{
  • "name": "Look 04/07/2022",
  • "folder_id": 2
}

Get look folder

Get specific look folder.

Authorizations:
Bearer
path Parameters
folder_id
required
number

ID of look folder

Responses

Response samples

Content type
application/json
{
  • "name": "Look 04/07/2022",
  • "folder_id": 2
}

Modify look folder

Modify all fields of a look folder.

Authorizations:
Bearer
path Parameters
folder_id
required
number

ID of look folder

Request Body schema: application/json
name
required
string

Responses

Request samples

Content type
application/json
{
  • "name": "Look 04/07/2022"
}

Response samples

Content type
application/json
{
  • "name": "Look 04/07/2022",
  • "folder_id": 2
}

Update look folder

Update specifics fields of a look folder.

Authorizations:
Bearer
path Parameters
folder_id
required
number

ID of look folder

Request Body schema: application/json
name
string

Responses

Request samples

Content type
application/json
{
  • "name": "Look 04/07/2022"
}

Response samples

Content type
application/json
{
  • "name": "Look 04/07/2022",
  • "folder_id": 2
}

Delete a look folder

All the looks contained in the folder will be deleted. The look information present in the media will be kept.

Authorizations:
Bearer
path Parameters
folder_id
required
number

ID of look folder

Responses

Response samples

Content type
application/json
""

Style - look

List looks

Return an array of looks with a pagination.

You can set the offset of pagination with the header 'offset'. Response headers:

  • 'X-Total-Count': Total number of items
  • 'X-Offset': Offset of the result
  • 'X-Count': Size of the result
Authorizations:
Bearer
header Parameters
offset
number >= 0
Default: 0

offset for pagination

Responses

Response samples

Content type
application/json
[]

Create look

Create a new look. You can choose a unique name. If the automatic look name feature is active on the web application, the field "name" is not allowed.

You can create only 1000 looks per folders.

Authorizations:
Bearer
Request Body schema: application/json
name
string
description
string
folder_id
required
number >= 1
status
string (status)
Enum: "DRAFT" "COMPLETED"
thumbnail
string

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{}

Get look

Get specific look.

Authorizations:
Bearer
path Parameters
look_id
required
number

ID of look

Responses

Response samples

Content type
application/json
{}

Modify look

Modify all fields of a look. If the automatic look name feature is active on the web application, the field "name" is not allowed.

Authorizations:
Bearer
path Parameters
look_id
required
number

ID of look

Request Body schema: application/json
name
string
description
string
folder_id
required
number >= 1
status
string (status)
Enum: "DRAFT" "COMPLETED"
thumbnail
string

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{}

Update look

Update specifics fields of a look. If the automatic look name feature is active on the web application, the field "name" is not allowed.

Authorizations:
Bearer
path Parameters
look_id
required
number

ID of look

Request Body schema: application/json
name
string
description
string
folder_id
number >= 1
status
string (status)
Enum: "DRAFT" "COMPLETED"
thumbnail
string

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{}

Delete a look

Delete a look. The look information present in the media will be kept.

Authorizations:
Bearer
path Parameters
look_id
required
number

ID of look

Responses

Response samples

Content type
application/json
""

Style - Look - reference

List look references

Return an array of references associated to look with a pagination.

You can set the offset of pagination with the header 'offset'. Response headers:

  • 'X-Total-Count': Total number of items
  • 'X-Offset': Offset of the result
  • 'X-Count': Size of the result
Authorizations:
Bearer
path Parameters
look_id
required
string

ID of look

header Parameters
offset
number >= 0
Default: 0

offset for pagination

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create look reference

Create a new look reference. It is not allowed to add the same reference on the same look.

You can create only 1000 references in a look.

Authorizations:
Bearer
path Parameters
look_id
required
string

ID of look

Request Body schema: application/json
ref
required
string
main
boolean
Default: false

Responses

Request samples

Content type
application/json
{
  • "ref": "LKFJRKLDM-001",
  • "main": true
}

Response samples

Content type
application/json
{
  • "ref": "LKFJRKLDM-001",
  • "reference_id": 42,
  • "look_reference_id": 1,
  • "main": true
}

Get look reference

Get specific look reference.

Authorizations:
Bearer
path Parameters
look_id
required
number

ID of look

look_reference_id
required
number

ID of look reference

Responses

Response samples

Content type
application/json
{
  • "ref": "LKFJRKLDM-001",
  • "reference_id": 42,
  • "look_reference_id": 1,
  • "main": true
}

Modify look reference

Modify all fields of a look reference. It is not allowed to add the same reference on the same look.

Authorizations:
Bearer
path Parameters
look_id
required
number

ID of look

look_reference_id
required
number

ID of look reference

Request Body schema: application/json
ref
required
string
main
boolean
Default: false

Responses

Request samples

Content type
application/json
{
  • "ref": "LKFJRKLDM-001",
  • "main": true
}

Response samples

Content type
application/json
{
  • "ref": "LKFJRKLDM-001",
  • "reference_id": 42,
  • "look_reference_id": 1,
  • "main": true
}

Update look reference

Update specifics fields of a look reference. It is not allowed to add the same reference on the same look.

Authorizations:
Bearer
path Parameters
look_id
required
number

ID of look

look_reference_id
required
number

ID of look reference

Request Body schema: application/json
ref
string
main
boolean
Default: false

Responses

Request samples

Content type
application/json
{
  • "ref": "LKFJRKLDM-001",
  • "main": true
}

Response samples

Content type
application/json
{
  • "ref": "LKFJRKLDM-001",
  • "reference_id": 42,
  • "look_reference_id": 1,
  • "main": true
}

Delete a look reference

Delete a look reference.

Authorizations:
Bearer
path Parameters
look_id
required
number

ID of look

look_reference_id
required
number

ID of look reference

Responses

Response samples

Content type
application/json
""

transfer

List transfer

List transfer available

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
"string"

Create a transfer

Create a new transfer container

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
{
  • "account_id": 0,
  • "transfer_id": "string",
  • "email": "string",
  • "recipients": [
    ],
  • "repo_id": "string",
  • "files": [
    ],
  • "transferstatus": 10
}

Load transfer

Load transfer informations : files and share information

Authorizations:
Bearer
path Parameters
transfer_id
required
string

uuid identifying transfer

Responses

Response samples

Content type
application/json
{
  • "account_id": 0,
  • "transfer_id": "string",
  • "email": "string",
  • "recipients": [
    ],
  • "repo_id": "string",
  • "files": [
    ],
  • "transferstatus": 10
}

Sends files to sourcing

Sends transfer content to a sourcing project sourcing

Authorizations:
Bearer
path Parameters
transfer_id
required
string

uuid identifying transfer

process_id
required
string

id of the process to check

Responses

Response samples

Content type
application/json
{
  • "status": "string",
  • "desc": "string"
}

Sends files to sourcing

Sends transfer content to a sourcing project sourcing

Authorizations:
Bearer
path Parameters
transfer_id
required
string

uuid identifying transfer

Request Body schema: application/json
files
Array of strings (Model84)

list of files to send to sourcing, if not specified, all files will be sent

import_id
number

Sourcing import id

append
boolean

Add images to project or delete/insert images to projet (default true)

Responses

Request samples

Content type
application/json
{
  • "files": [
    ],
  • "import_id": 0,
  • "append": true
}

Response samples

Content type
application/json
{
  • "process_id": "string"
}

Share a transfer

Sends an email to transfer recipients

Authorizations:
Bearer
path Parameters
transfer_id
required
string

uuid identifying transfer

Request Body schema: application/json
email
string

email of the transfer creator (if different from the autenticated user)

recipients
Array of strings (recipients)

emails of transfer recipients

verification_code
string

validation code sent to the transfer creator email (only necessary when providing an email transfer creator)

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "recipients": [
    ],
  • "verification_code": "string"
}

Response samples

Content type
application/json
{
  • "account_id": 0,
  • "transfer_id": "string",
  • "email": "string",
  • "recipients": [
    ],
  • "repo_id": "string",
  • "files": [
    ],
  • "transferstatus": 10
}

webhook

List webhooks

Return webhook

Authorizations:
Bearer

Responses

Response samples

Content type
application/json
[]

Create a webhook

Return webhook

Authorizations:
Bearer
Request Body schema: application/json
address
required
string

URI where the webhook subscription should send the POST request when the event occurs.

topic
required
string (topic)
Enum: "pictures/create" "pictures/update"

Event that triggers the webhook.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{}

Update a webhook

Return webhook

Authorizations:
Bearer
path Parameters
webhook_id
required
number

webhook id

Request Body schema: application/json
address
required
string

URI where the webhook subscription should send the POST request when the event occurs.

topic
required
string (topic)
Enum: "pictures/create" "pictures/update"

Event that triggers the webhook.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{}

Delete a webhook

Delete a webhook.

Authorizations:
Bearer
path Parameters
webhook_id
required
number

webhook id

Responses

Response samples

Content type
application/json
"string"