Search code examples
jsonapirestapiblueprint

Api Blueprint and long running jobs


I would like to properly design my json API with long running jobs with Blueprint. I need to process files, return a 202 Accepted with a location header and then design the temporary location who will receive 303 See Other and then the final object 201 Created.

Is there a way to properly design this sequence ?


Solution

  • The blueprint could look like this:

    # Stars [/stars]
    
    Collection of stars.
    
    ## Create [POST]
    + Request (application/json)
    
        Create a star
    
        + Body
    
                {"name": "Death Star"}
    
    + Response 202
    
        Request has been accepted into the queue. Poll the queue item to check the result. 
    
        + Headers
    
                Location: /queue/12345
    
    
    # Queue Item [/queue/{id}]
    
    One item in a job queue.
    
    + Parameters
        + id: 12345 (number) - Id of the queue
    
    ## Query Status [GET]
    + Response 200 (aplication/xml)
    
        The job is still in progress.
    
        + Body
    
                <response>
                    <status>PENDING</status>
                    <eta>2 mins.</eta>
                    <link rel="cancel" method="delete" href="/queue/12345" />
                </response>
    
    + Response 303
    
        The job has finished. See the created resource.
    
        + Headers
    
                Location: /stars/97865